将文件副本分发​​给执行者

时间:2018-12-06 22:37:33

标签: apache-spark hadoop hdfs amazon-emr distcp

我有一堆数据(在S3上)要复制到本地HDFS(在Amazon EMR上)。现在,我正在使用org.apache.hadoop.fs.FileUtil.copy进行此操作,但是尚不清楚是否将文件副本分发​​给执行程序。当然,Spark History服务器中没有任何显示。

Hadoop DistCp看起来很像(请注意,我在S3上,因此实际上应该是s3-dist-cp,它建立在dist-cp之上),除了它是一个命令外,线工具。我正在寻找一种从Scala脚本(又名Java)调用此方法的方法。

有什么想法/线索吗?

1 个答案:

答案 0 :(得分:1)

cloudcp是使用Spark进行复制的示例;文件列表变成一个RDD,每行==一个副本。该设计针对从HDFS上载进行了优化,因为它尝试将上载安排在HDFS中的文件附近。

要下载,

  • 使用listFiles(路径,递归)可最大程度地列出对象存储库。
  • 随机分配源文件列表,以免受到AWS的限制
  • 随机分配整个HDFS群集的位置,以使块最终均匀分散在群集周围