Apache Hama 0.7.1示例无法运行求助:已部署单节点HDFS
解决Hama 0.7.1 PiEstimator无输出问题的排查方案
我之前也碰到过Hama本地模式下示例无输出的情况,那个NativeCodeLoader的警告其实不用太在意——它只是提示没加载Hadoop的本地库,不影响核心功能。咱们一步步排查:
1. 确认HDFS正常运行且与Hama正确关联
Hama依赖HDFS存储作业数据,哪怕是本地模式也得确保HDFS没问题:
- 执行
jps命令,检查有没有NameNode和DataNode进程在运行,如果没有,先启动HDFS:start-dfs.sh - 打开Hama的
conf/hama-site.xml,确认fs.defaultFS配置和Hadoopconf/core-site.xml里的完全一致,比如都是hdfs://localhost:9000 - 手动验证HDFS读写:执行
hadoop fs -mkdir /test和hadoop fs -ls /,如果能正常执行说明HDFS没问题
2. 给PiEstimator加上明确的运行参数
默认的pi命令可能因为参数太少,作业瞬间完成或者没触发有效计算。试试带参数运行:
$HAMA_HOME/bin/hama jar hama-examples-0.7.1.jar pi 10 1000
这里第一个数字是并行任务数,第二个是每个任务的采样次数,数值调大一点就能看到明显的计算过程输出了。
3. 去HDFS里找作业日志(不是本地logs目录)
Hama的作业日志默认存在HDFS的/hama/logs路径下,本地$HAMA_HOME/logs里只有服务启动日志,看不到作业的执行细节。用以下命令查看:
# 列出所有作业日志目录 hadoop fs -ls /hama/logs # 查看具体作业的日志内容,替换成你的作业ID hadoop fs -cat /hama/logs/[你的作业ID]/tasklogs/[任务ID]
日志里会明确显示作业是卡住了还是报错了,比如权限问题、配置错误都能在这里找到线索。
4. 核对Hama本地模式的核心配置
本地模式下,hama-site.xml里的bsp.master.address必须设为local,同时fs.defaultFS不能用file:///(本地文件系统),必须指向HDFS——Hama的BSP作业依赖HDFS做节点间的数据共享,用本地文件系统会导致作业无法正常执行。
5. 检查版本兼容性
Hama 0.7.1是比较老的版本,它对应的Hadoop版本是1.x系列(比如Hadoop 1.2.1)。如果你的HDFS是2.x或更高版本,很可能因为API不兼容导致作业静默失败。建议你匹配对应版本的Hadoop,或者尝试升级Hama到更兼容的版本。
内容的提问来源于stack exchange,提问作者umeshksingla
相关产品推荐
相关产品推荐

