0

我正在尝试将 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%

我在这里错过了什么吗?任何帮助表示赞赏。

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

4

2 回答 2

0

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

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

于 2017-05-27T17:28:18.007 回答
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 的多上传性能有很大不同,希望有好的见解的人可以在这里做出贡献。

于 2017-05-26T05:16:38.090 回答