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)。