我有一个map-reduce工作。在mapper类中(显然在集群上运行),我有一个类似这样的代码:
try {
.
.
.
} catch (<some exception>) {
// Do some stuff
}
在catch {}子句中,我想将日志从集群复制到本地文件系统
如果从命令行检查,我可以在节点上的目录中看到日志文件。但是当我尝试复制它时,使用org.apache.hadoop.fs.FileSystem.copyToLocalFile(boolean delSrc,Path src,Path dst),它表示该文件不存在。
谁能告诉我我做错了什么?我对Hadoop很新,所以我可能会遗漏一些明显的东西。如果需要,请问我任何澄清问题,因为我不确定我是否已经给出了所有必要的信息。
由于
编辑1::由于我尝试将文件从群集复制到本地,并且java代码也在群集上运行,我甚至可以使用copyToLocalFile()
吗?或者我需要做一个简单的scp
?
答案 0 :(得分:1)
MapReduce日志文件通常位于数据节点的本地文件系统路径HADOOP_LOG_DIR / userlogs / mapOrReduceTask中,Map / Reduce程序运行在该路径中。每个MapReduce程序在上面的目录中生成syslog / stdout / stderr。
使用任务跟踪器的Web UI查看本地日志文件会更容易,或者您可以ssh到计算机并查看上述目录中的日志。
默认情况下,任务跟踪器Web UI URL为http://machineName:50060/