1

Amazon EMR で Hadoop ストリーミングを使用して、一連のテキスト ファイルの単純な単語数をカウントしようとしています。Hadoop ストリーミングと Amazon の EMR を処理するために、非常に単純化されたデータ セットも使用しました。各テキスト ファイルには 1 行のテキストしかありません (1 行には任意の数の単語を含めることができます)。

マッパーは R スクリプトで、行を単語に分割し、ストリームに吐き出します。

cat(wordList[i],"\t1\n")

カウントを加算するために LongValueSum Aggregate Reducer を使用することにしたので、マッパー出力の前に LongValueSum を付ける必要がありました。

cat("LongValueSum:",wordList[i],"\t1\n")

レデューサーを「集約」に指定します

私が今持っている質問は次のとおりです。

  1. マッパーとリデューサーの間の中間段階で、ストリームをソートするだけです。キーで実際に結合するわけではありません。私は正しいですか?マッパーが出力する単語のプレフィックスとして「LongValueSum」を使用しない場合、リデューサーでキーでソートされたストリームを受け取るだけで、集約されないため、これを尋ねます。つまり、リデューサーでの (K, list(Values)) とは対照的に、K によって注文されたものを受け取るだけです。コマンドでコンバイナーを指定する必要がありますか?

  2. 他の集計リデューサーはどのように使用されますか。なるほど、http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary で利用可能な他の多くのレデューサー/集約/コンバイナー。 html

これらのコンバイナーとリデューサーは AMAZON EMR セットアップでどのように指定されていますか?

この種の問題は、コンバイナーの Hadoop ストリーミングで報告され、修正されていると思いますが、AMAZON EMR がホストしているバージョンと、この修正が利用可能なバージョンはわかりません。

  1. カスタム入力フォーマットとレコード リーダーとライターはどうですか。Javaで書かれたライブラリがたくさんあります。これらのオプションごとに Java クラス名を指定するだけで十分ですか?
4

1 に答える 1

1

マッパーとレデューサーの中間段階で、ストリームを並べ替えるだけです。それは実際にはキーによって結合されません。私は正しいですか?

ストリーミングのaggregateレデューサーは関連するコンバイナーインターフェースを実装しているため、Hadoopは適切と判断した場合にそれを使用します[1]

つまり、レデューサーで(K、list(Values))とは対照的に、Kで注文されたものを受け取るだけです。

ストリーミングインターフェイスを使用すると、常にK、V値のペアを受け取ります。あなたは決して受け取らないでしょう(K,list(values))

他の骨材レデューサーはどのように使用されていますか。

どれがわかりませんか?指定したリンクには、それぞれの動作の簡単な要約があります

この種の問題が提起され、修正されたと思います

どんな問題を考えていますか?

AMAZONEMRがホストしているバージョンがわからない

EMRはHadoop0.20.2に基づいています

これらの各オプションにJavaクラス名を指定するだけで十分ですか?

ストリーミングの文脈で意味しますか?または集約フレームワーク?

[1] http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

于 2011-07-26T04:32:23.963 に答える