如何将文件从Hadoop集群复制到本地文件系统

时间:2013-04-22 21:00:39

标签: java hadoop mapreduce hdfs

设定:

我有一个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

1 个答案:

答案 0 :(得分:1)

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

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

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