【问题标题】:Hadoop Streaming with SequenceFile (on AWS)使用 SequenceFile 进行 Hadoop 流式处理(在 AWS 上)
【发布时间】:2012-08-15 10:13:47
【问题描述】:

我有大量的 Hadoop 序列文件,我想在 AWS 上使用 Hadoop 进行处理。我现有的大部分代码都是用 Ruby 编写的,因此我想在 Amazon EMR 上使用 Hadoop Streaming 以及我的自定义 Ruby Mapper 和 Reducer 脚本。

我找不到任何关于如何将序列文件与 Hadoop 流集成以及如何将输入提供给我的 Ruby 脚本的文档。我很感激一些关于如何启动作业(直接在 EMR 上,或者只是一个普通的 Hadoop 命令行)以使用 SequenceFiles 的说明,以及一些关于如何期望将数据提供给我的脚本的信息。

--编辑:我之前错误地提到了 StreamFiles 而不是 SequenceFiles。我认为我的数据文档不正确,但很抱歉。更改后答案很简单。

【问题讨论】:

  • 你试过Mandy框架吗?我已经使用它几个月了,它对我来说效果很好。

标签: ruby hadoop amazon-web-services amazon-emr


【解决方案1】:

答案是将输入格式指定为 Hadoop 的命令行参数。

-inputformat SequenceFileAsTextInputFormat

您可能希望将 SequenceFile 作为文本,但如果更合适,也可以使用 SequenceFileAsBinaryInputFormat

【讨论】:

    【解决方案2】:

    不确定这是否是您要求的,但是使用 ruby​​ map reduce 脚本和 hadoop 命令行的命令看起来像这样:

    % hadoop jar $HADOOP_INSTALL/contrib/streaming/hadoop-*-streaming.jar \
      -input input/ncdc/sample.txt \
      -output output \
      -mapper ch02/src/main/ruby/max_temperature_map.rb \
      -reducer ch02/src/main/ruby/max_temperature_reduce.rb
    

    您可以(并且应该)将组合器用于大数据集。使用-combiner 选项添加它。组合器输出将直接馈送到您的映射器中(但不能保证这将被调用多少次,如果有的话)。否则,您的输入将被拆分(根据标准 hadoop 协议)并直接输入您的映射器。该示例来自 O'Reily 的 Hadoop:权威指南第 3 版。它有一些关于流式传输的非常好的信息,还有一个专门介绍使用 ruby​​ 进行流式传输的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多