Hadoop在Linux上运行时可能会遇到各种问题,以下是一些常见的故障排查方法:
启动集群时的问题排查
- 节点启动失败
- 端口占用:使用
lsof -i:50070
查询占用端口的进程,使用kill -9 {pid}
杀死进程。
- 找不到路径:检查namenode格式化产生的路径是否存在,使用
hdfs namenode -format
重新格式化。
- 子节点启动失败:删除之前遗留的信息,手动修改VERSION中的版本信息,然后重新启动集群。
- 连接失败:配置免密码登录,确保namenode和datanode之间的SSH免密登录。
- 进程启动成功但消失:检查防火墙设置,确保没有阻止节点之间的通信。
HDFS操作问题排查
- 权限不足:配置环境变量
HADOOP_HOME
和HADOOP_USER_NAME
,确保hdfs进程启动用户具有足够的权限。
- 无法建立通信:检查防火墙设置,确保HDFS进程启动端口(如8020)是开放的。
运行MapReduce任务时的问题排查
- 日志位置:查看Web管理界面(8088端口)和
$HADOOP_HOME/logs/userlogs
目录下的日志文件。
- 权限不足:检查中间结果的临时目录和结果输出目录的权限,使用
hdfs dfs -chmod -R 777 /tmp
更改权限。
- 结果输出目录已经存在:确保结果输出目录不存在,或者先删除再提交任务。
- 源数据目录不存在:检查源数据目录是否存在,确保数据路径正确。
- 逻辑错误:检查MapReduce任务的逻辑是否正确,特别是接受阶段是否卡住。
Hive启动时的问题排查
- 日志位置:查看
/home/{user.home}/hive.log
文件。
- 配置文件错误:检查
hive-site.xml
文件中的配置是否正确,特别是JDBC相关配置。
- 数据库连接问题:检查MySQL数据库连接参数,确保密码正确,驱动jar包已正确添加到
HIVE_HOME/lib
。
Sqoop问题排查
- 配置错误:确保
HIVE_CONF_DIR
环境变量设置正确,指向正确的Hive配置文件目录。
- 数据上传成功但无法查看:检查Hive的warehouse路径是否正确,确保Hive有权限访问该路径。
自动故障恢复设置
- 配置高可用性(HA):设置ZooKeeper和HDFS的故障转移功能。
- 使用自动故障恢复工具:如Apache ZooKeeper或Cloudera Manager,这些工具可以帮助监控和管理Hadoop集群的健康状况。
- 配置自动重启策略:通过修改Hadoop配置文件(如
hadoop-env.sh
和yarn-site.xml
)来实现。