1. NameNode/Datanode无法启动
jps命令查看时,缺少NameNode、DataNode等核心进程;启动服务时报错。jps确认进程是否存在,若缺失则尝试手动启动(如hadoop-daemon.sh start namenode)。$HADOOP_HOME/logs目录下的NameNode/DataNode日志(如namenode.log),常见原因包括端口被占用、配置文件错误、磁盘空间不足。VERSION文件(位于dfs.namenode.name.dir/current/和dfs.datanode.data.dir/current/)不一致,需关闭集群,删除DataNode的current/VERSION文件,重新格式化NameNode(hadoop namenode -format)并启动。2. 配置文件错误
core-site.xml(fs.defaultFS需指向正确的NameNode地址,如hdfs://namenode:9000;hadoop.tmp.dir需设置为有效目录)、hdfs-site.xml(dfs.replication需符合集群规模,一般3;dfs.namenode.name.dir和dfs.datanode.data.dir需存在且有写入权限)。xmlstarlet val -e $HADOOP_HOME/etc/hadoop/core-site.xml等工具检查XML格式是否正确。3. 网络连接问题
ping不通)、NameNode无法访问DataNode(如telnet端口失败)。/etc/network/interfaces,为每个节点分配固定IP(如iface eth0 inet static),避免DHCP变动。/etc/hosts:在所有节点的/etc/hosts中添加集群节点的IP与主机名映射(如192.168.1.101 namenode、192.168.1.102 datanode1),避免DNS解析问题。ufw allow 9000/tcp(NameNode)、ufw allow 50010/tcp(DataNode数据传输)等命令开放HDFS所需端口。4. 权限问题
dfs.namenode.name.dir、dfs.datanode.data.dir)的拥有者为hadoop用户(chown -R hadoop:hadoop /var/lib/hadoop-hdfs)。755(chmod -R 755 /var/lib/hadoop-hdfs),避免权限过严或过松。5. Java环境配置错误
java -version检查是否安装JDK(推荐OpenJDK 8,sudo apt install openjdk-8-jdk)。JAVA_HOME:编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64(路径需与java -XshowSettings:properties -version输出的java.home一致)。source $HADOOP_HOME/etc/hadoop/hadoop-env.sh使设置生效。6. 安全模式无法退出
hdfs dfs -put报错“NameNode is in safe mode”)。hdfs dfsadmin -safemode leave命令(需NameNode有管理员权限)。7. OOM(内存溢出)错误
$HADOOP_HOME/etc/hadoop/hadoop-env.sh,修改HADOOP_NAMENODE_OPTS(NameNode)和HADOOP_DATANODE_OPTS(DataNode)的-Xmx(最大堆)和-Xms(初始堆)参数(如-Xmx4g -Xms2g,根据节点内存调整)。yarn.scheduler.maximum-allocation-mb(YARN最大分配内存)和mapreduce.map.memory.mb(Map任务内存)参数。8. 数据块丢失或损坏
hdfs fsck命令提示“Corrupt blocks”“Missing blocks”;读取数据时报错“Block missing”。hdfs fsck / -files -blocks -locations命令查看数据块状态。hdfs dfs -rm /path/to/corrupt/file删除文件,HDFS会自动复制副本(需dfs.replication大于1)。