CentOS Hadoop故障排查指南
CentOS Hadoop故障排查指南
1. 日志分析与定位
日志是故障排查的核心依据,Hadoop的日志文件默认存放在$HADOOP_HOME/logs目录下(如hadoop-namenode-<
hostname>
.log、hadoop-datanode-<
hostname>
.log)。使用以下命令实时查看或筛选错误信息:
tail -f $HADOOP_HOME/logs/*.log:实时跟踪所有日志文件的最新内容;grep -i "error\|fail" $HADOOP_HOME/logs/*.log:筛选包含“error”或“fail”的错误日志,快速定位问题关键词。
2. 服务状态检查
通过systemctl命令检查Hadoop关键服务(NameNode、DataNode、ResourceManager、NodeManager)的运行状态:
systemctl status hadoop-namenode
systemctl status hadoop-datanode
systemctl status hadoop-resourcemanager
systemctl status hadoop-nodemanager
若服务未启动,使用systemctl start <
service-name>
启动对应服务;若启动失败,需结合日志分析具体原因(如端口冲突、配置错误)。
3. 配置文件验证
Hadoop的配置文件(core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)是集群运行的基础,需重点检查以下内容:
- 路径格式:
dfs.namenode.name.dir、dfs.datanode.data.dir等路径需使用完全路径(如file:/usr/hadoop/name),避免相对路径或格式错误(如缺少file:前缀); - 关键参数:
fs.defaultFS(NameNode地址,如hdfs://namenode:9000)、dfs.replication(副本数,默认3,集群节点少时可调整为2)、yarn.resourcemanager.hostname(ResourceManager地址); - 格式一致性:多节点集群需确保所有节点的配置文件同步(使用
scp命令复制配置文件到其他节点)。
4. 网络与连通性排查
Hadoop集群依赖节点间的网络通信,需检查以下内容:
- 节点连通性:使用
ping < node-ip>命令测试所有节点之间的网络连通性; - 主机名解析:编辑
/etc/hosts文件,添加节点IP与主机名的映射(如192.168.1.100 hadoop-namenode),避免DNS解析问题; - 防火墙设置:CentOS 7及以上默认使用
firewalld,需关闭或放行Hadoop端口(如NameNode的9000端口、DataNode的50010端口):或使用systemctl stop firewalld systemctl disable firewalldiptables放行端口:iptables -A INPUT -p tcp --dport 9000 -j ACCEPT service iptables save
5. 权限与用户检查
Hadoop进程需以指定用户(通常为hadoop)运行,避免权限问题:
- 目录权限:使用
chown -R hadoop:hadoop /usr/hadoop将Hadoop安装目录及数据目录的所有权赋予hadoop用户; - 执行权限:使用
chmod +x $HADOOP_HOME/sbin/*.sh赋予启动脚本执行权限; - 用户切换:操作Hadoop时需切换至
hadoop用户(su - hadoop),避免root用户运行导致的权限冲突。
6. 资源与磁盘检查
资源不足会导致Hadoop服务异常,需检查以下内容:
- 磁盘空间:使用
df -h命令检查磁盘使用率,确保/根目录及Hadoop数据目录(如/usr/hadoop/data)有足够空间(建议剩余空间大于20%); - 内存与CPU:使用
free -m查看内存使用情况,top查看CPU占用率,若资源不足,需增加物理内存、扩展磁盘或优化Hadoop配置(如调整yarn.nodemanager.resource.memory-mb参数)。
7. Java环境验证
Hadoop依赖Java环境,需确保以下配置正确:
- Java安装:使用
java -version命令检查Java版本(推荐JDK 8或11),确保已安装OpenJDK或Oracle JDK; - 环境变量:编辑
/etc/profile文件,添加以下内容:执行export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 替换为实际Java路径 export HADOOP_HOME=/usr/hadoop # 替换为实际Hadoop路径 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource /etc/profile使配置生效; - JAVA_HOME传递:若启动脚本报
JAVA_HOME not set错误,需在$HADOOP_HOME/etc/hadoop/hadoop-env.sh中添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk。
8. 常见特定错误解决
- 安全模式无法退出:若Hadoop进入安全模式(无法写入数据),使用
hdfs dfsadmin -safemode leave命令手动退出; - 数据块丢失或损坏:使用
hadoop fsck /命令检查HDFS文件系统健康状态,修复损坏的数据块(添加-delete参数可删除坏块); - RPC端口错误:若日志报
Incorrect RPC port错误,检查core-site.xml中的hadoop.rpc.socket.factory.class.default参数(默认org.apache.hadoop.net.StandardSocketFactory),确保端口配置正确; - 上传文件失败(副本数为0):若执行
hadoop fs -put命令时报replicated to 0 nodes错误,需先启动DataNode(start-dfs.sh),确保DataNode进程运行。
9. 进程与服务状态检查
使用jps命令查看Hadoop相关进程是否启动(正常应包含NameNode、DataNode、ResourceManager、NodeManager):
jps
若进程未启动,需检查对应服务的日志(如hadoop-namenode-<
hostname>
.log),定位启动失败原因(如端口冲突、配置错误)。
10. 版本兼容性检查
确保Hadoop版本与操作系统(CentOS 7/8)、Java版本(JDK 8/11)及其他依赖组件(如Hive、Spark)兼容。参考Hadoop官方文档的“Compatibility Matrix”,避免因版本不匹配导致的故障。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Hadoop故障排查指南
本文地址: https://pptw.com/jishu/737233.html
