1. NameNode/Datanode无法启动
常见原因包括多次格式化NameNode导致DataNode与NameNode的元数据ID不一致、配置文件错误(如core-site.xml中的fs.defaultFS未指向正确的NameNode地址、hdfs-site.xml中的dfs.namenode.name.dir或dfs.datanode.data.dir路径不存在或权限不足)、Java环境未正确配置(JAVA_HOME未设置或版本不兼容)。
解决方法:
/var/hadoop/namenode/current/VERSION)中的VERSION文件,再重新格式化;core-site.xml、hdfs-site.xml等配置文件的路径和参数(如dfs.namenode.name.dir需指向高性能存储,如SSD),确保路径存在且Hadoop用户有读写权限;JAVA_HOME已在hadoop-env.sh中正确设置(如export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64),并指向有效的JDK安装路径。2. DataNode与NameNode通信失败
常见原因包括网络配置错误(节点间IP/主机名无法解析、防火墙阻止HDFS端口通信)、SSH免密登录未配置(NameNode无法向DataNode分发任务)、slaves文件未正确列出所有DataNode主机名。
解决方法:
/etc/network/interfaces或/etc/netplan/*.yaml文件,设置固定IP、子网掩码和网关);在/etc/hosts中添加所有节点的IP与主机名映射(如192.168.1.100 namenode、192.168.1.101 datanode1),避免DNS解析延迟;sudo ufw allow <port>/tcp命令放行;ssh-keygen -t rsa,将公钥复制到所有节点ssh-copy-id datanode1),确保NameNode能无密码访问DataNode;slaves文件(位于Hadoop配置目录),确保列出所有DataNode的主机名(每行一个)。3. OOM(Out of Memory)错误
常见原因包括JVM堆内存分配不足(-Xmx/-Xms参数设置过小,无法处理大规模数据)、DataNode或NodeManager进程占用过多内存。
解决方法:
hadoop-env.sh中设置NameNode和DataNode的堆参数(如export HDFS_NAMENODE_OPTS="-Xmx4g -Xms4g"、export HDFS_DATANODE_OPTS="-Xmx2g -Xms2g"),根据节点物理内存调整(建议堆大小不超过物理内存的70%);mapred-site.xml中降低mapreduce.map.memory.mb和mapreduce.reduce.memory.mb的值)。4. NameNode进入安全模式
常见原因包括集群启动时DataNode未完全注册(如网络延迟、DataNode进程未启动)、手动触发安全模式(如运维操作)。
解决方法:
hdfs dfsadmin -report查看DataNode状态);hdfs dfsadmin -safemode leave强制退出安全模式。5. 权限拒绝(Permission Denied)
常见原因包括HDFS文件/目录权限设置不当(如用户无权访问特定路径)、Hadoop权限模型未开启(dfs.permissions设置为false)、Kerberos认证未配置(生产环境需启用)。
解决方法:
hdfs dfs -chmod命令修改文件/目录权限(如hdfs dfs -chmod 755 /user/hadoop),或递归修改目录权限(hdfs dfs -chmod -R 755 /data);hdfs dfs -chown命令将路径所有者改为当前用户(如hdfs dfs -chown hadoop:hadoop /user/hadoop);hdfs-site.xml中设置dfs.permissions为true(默认开启);core-site.xml和hdfs-site.xml中配置Kerberos相关参数(如hadoop.security.authentication设为kerberos),并通过kinit命令获取票据。6. 网络连接问题
常见原因包括节点间IP/主机名无法解析(/etc/hosts未配置或DNS解析失败)、防火墙阻止Hadoop端口(如SSH、HDFS、YARN端口)、SSH免密登录未配置。
解决方法:
ping命令测试节点间连通性(如ping namenode),使用traceroute命令检查路由路径;/etc/hosts中添加所有节点的IP与主机名映射(如192.168.1.100 namenode、192.168.1.101 datanode1);sudo ufw allow <port>/tcp命令放行Hadoop必需端口(如SSH的22端口、HDFS的9000端口、YARN的8088端口)。7. 配置文件错误
常见原因包括核心配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)中的参数设置错误(如fs.defaultFS格式错误、dfs.replication值不合理)、slaves文件格式错误(包含非法字符或空格)。
解决方法:
xmlstarlet或浏览器验证XML文件的合法性(如xmlstarlet val /etc/hadoop/core-site.xml);core-site.xml中的fs.defaultFS需设置为hdfs://<namenode-hostname>:<port>(如hdfs://namenode:9000);hdfs-site.xml中的dfs.replication需根据集群规模设置(生产环境建议3,测试环境可设为1);slaves文件需每行一个DataNode主机名,无多余空格或特殊字符。