【问题标题】:Distcp with Hadoop streaming jobDistcp 与 Hadoop 流式作业
【发布时间】:2012-10-01 20:49:46
【问题描述】:

我将把要做的工作大致分为两部分:

  1. 我有大量数据(大约 1 TB,分为数百个文件),我通过 distcp 从 S3 复制到 HDFS

  2. Hadoop 流式作业(一个简单的映射器和化简器,用 python 编写)将处理此数据

现在,我必须等到所有数据都复制到HDFS,然后才能开始我的实际工作。问题来了:考虑到DISTCP 本身就是一个 map-reduce 工作,有没有办法我可以“简化”这两个工作,即第二个工作是否可以开始处理已经复制的数据(例如distcp 已经复制了一些文件,从技术上讲,第二份工作已经可以开始了)?

我希望我已经说清楚了。

【问题讨论】:

    标签: python hadoop hadoop-streaming


    【解决方案1】:

    您可以使用 S3InputFormat (https://github.com/ATLANTBH/emr-s3-io) 将数据直接读取给您的映射器。但请注意,如果作业失败,您将重新下载所有数据。 所以,我建议在处理之前下载所有数据。如果您不需要一次处理整个数据,您可以在 distcp 启动后启动 mapreduce。但是您应该编写自己的 FileInputFormat 扩展名,它将记录某处(我想在输入目录中)处理了哪些文件,并在每次调用时过滤掉已处理的文件(在方法 getSplits() 中)并仅处理未处理的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2015-08-26
      相关资源
      最近更新 更多