在EMR中s3-dist-cp和hadoop distcp作业无限循环

时间:2016-07-19 15:16:54

标签: loops hadoop emr distcp s3distcp

我正在尝试将193 GB数据从s3复制到HDFS。我正在为s3-dist-cp和hadoop distcp运行以下命令:

s3-dist-cp --src s3a://PathToFile/file1 --dest hdfs:///user/hadoop/S3CopiedFiles/

hadoop distcp s3a://PathToFile/file1 hdfs:///user/hadoop/S3CopiedFiles/

我在主节点上运行这些并且还检查正在传输的数量。 花了大约一个小时,在复制之后,一切都被删除,磁盘空间在我的集群中的4个核心实例中显示为99.8%,并且hadoop作业永远运行。 一旦我运行命令,

16/07/18 18:43:55 INFO mapreduce.Job: map 0% reduce 0%
16/07/18 18:44:02 INFO mapreduce.Job: map 100% reduce 0%
16/07/18 18:44:08 INFO mapreduce.Job: map 100% reduce 14%
16/07/18 18:44:11 INFO mapreduce.Job: map 100% reduce 29%
16/07/18 18:44:13 INFO mapreduce.Job: map 100% reduce 86%
16/07/18 18:44:18 INFO mapreduce.Job: map 100% reduce 100%

立即打印,然后复制数据一小时。它重新开始。

16/07/18 19:52:45 INFO mapreduce.Job: map 0% reduce 0%
16/07/18 18:52:53 INFO mapreduce.Job: map 100% reduce 0%

我在这里遗漏了什么?任何帮助表示赞赏。

此外,我想知道在哪里可以找到主节点上的日志文件,看看作业是否失败并因此循环? 谢谢

2 个答案:

答案 0 :(得分:0)

就我而言,我将一个大的压缩文件从hdfs复制到s3,然后 hadoop distcp比s3-dist-cp快得多。

当我检查日志时,多上传部分在缩小步骤中需要很长时间。 对于s3-dist-cp,上传一个块(134MB)需要20秒,而hadoop distcp只需要4秒。

distcp和s3-dist-cp之间的区别是distcp在s3(目标文件系统)创建临时文件,而s3-dist-cp在hdfs创建临时文件。

我仍在调查为什么多重上传性能与distcp和s3-dist-cp有很大不同,希望有一些有良好洞察力的人可以在这里做出贡献。

答案 1 :(得分:0)

如果您可以为您的调查选择Hadoop 2.8.0并使用s3a://文件系统,您可以获取它现在收集的大量文件系统统计信息。

一个真正的性能杀手是rename(),它通过复制然后删除在s3客户端中模仿:如果distcp运行尝试使用重命名进行原子distcp,那么就会增加一个延迟每6-10MB数据1秒。对于16s的上传后延迟,134MB将与"它重命名"