1

设置:

我有一个 map-reduce 工作。在映射器类(显然在集群上运行)中,我有一个类似这样的代码:

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

4

1 回答 1

1

MapReduce 日志文件通常位于运行 Map/Reduce 程序的数据节点的本地文件系统路径 HADOOP_LOG_DIR/userlogs/mapOrReduceTask 上。每个 MapReduce 程序都会在上述目录中生成 syslog/stdout/stderr。

使用任务跟踪器的 Web UI 查看本地日志文件会更容易,或者您可以通过 ssh 连接到机器并查看上述目录中的日志。

默认情况下,任务跟踪器 Web UI URL 是http://machineName:50060/

于 2013-04-22T21:28:21.307 回答