Ubuntu下Hadoop故障排查指南
使用jps命令查看Ubuntu系统中运行的Hadoop Java进程(如NameNode、DataNode、ResourceManager、NodeManager等)。若关键进程未启动(如DataNode未运行),则需进一步排查进程启动失败原因(如配置错误、端口冲突等)。
Hadoop的日志文件位于$HADOOP_HOME/logs目录下(如hadoop-*-namenode-*.log、hadoop-*-datanode-*.log),包含详细的错误堆栈信息。使用tail -f命令实时监控日志,或通过grep过滤关键错误(如“java.io.IOException”“Port in use”),快速定位问题根源。
使用hdfs dfsadmin -report命令检查HDFS集群状态,确认NameNode与DataNode的连接情况、数据块分布是否正常(如“Present Capacity”是否为0,表示数据未加载)。若DataNode未连接,需检查DataNode日志中的“namespaceID不一致”“端口不通”等问题。
使用yarn node -list命令查看ResourceManager管理的NodeManager列表,确认NodeManager是否正常注册(状态为“RUNNING”)。若NodeManager未启动,需检查yarn-site.xml配置(如yarn.nodemanager.aux-services)及日志中的“RPC通信失败”“权限不足”等错误。
Hadoop集群节点间需通过网络通信,使用ping命令测试节点间连通性(如ping <datanode-ip>),确保无网络中断。同时检查/etc/hosts文件,确保主机名与IP地址映射正确(如127.0.1.1 ubuntu),避免UnknownHostException。
Hadoop的核心配置文件(core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)需正确配置。常见问题包括:
core-site.xml中的fs.defaultFS(如hdfs://namenode-ip:9000)未指向正确的NameNode地址;hdfs-site.xml中的dfs.namenode.name.dir(NameNode元数据存储路径)、dfs.datanode.data.dir(DataNode数据存储路径)未正确设置或目录不存在;yarn-site.xml中的yarn.resourcemanager.hostname未设置为ResourceManager所在节点IP。若配置修改或进程异常,需按顺序重启Hadoop服务:
# 停止服务
stop-dfs.sh
stop-yarn.sh
# 启动服务
start-dfs.sh
start-yarn.sh
重启后再次检查进程状态和日志,确认服务是否恢复正常。
使用top、htop、vmstat命令监控系统资源(CPU、内存、磁盘I/O)使用率。常见问题包括:
hadoop-env.sh中的HADOOP_HEAPSIZE(如export HADOOP_HEAPSIZE=4000,单位MB);df -h查看磁盘使用情况,删除HDFS中的旧数据(如hadoop fs -rm -r /user/data/old);mapreduce.tasktracker.map.tasks.maximum)。dfs.data.dir目录(如/data/hadoop/data),然后重新格式化NameNode(hdfs namenode -format)并启动集群,使NameNode与DataNode的namespaceID同步。netstat -tulnp | grep <port>(如netstat -tulnp | grep 9000)查看占用端口的进程,终止冲突进程(kill -9 <pid>)或修改配置文件中的端口(如core-site.xml中的fs.defaultFS端口)。hadoop dfsadmin -safemode leave命令退出安全模式,允许修改和删除操作。ssh-keygen -t rsa生成密钥,ssh-copy-id <slave-ip>复制公钥),并检查/etc/ssh/sshd_config中的PasswordAuthentication yes(允许密码登录,调试时可临时开启)。