2011-02-18 5 views
0

私はHadoopストリーミング用の2つのプログラムを持っています。もちろん非常に大きなサイズのstdoutを使ったHadoopストリーミング

mapper (produces <k, v> pair) 
    reducer 

<k, v>対はstdoutに放出されます。

私の質問は<k, v>vが非常に大きい場合、それは効率的にHadoop上で実行しない

のですか?

マッパーが発行するvは1G以上(時には4G以上)になると思います。

答えて

1

メモリの中でそれらを操作するのは問題があるので、このような値のサイズは問題を引き起こすと思います。実際にこのような巨大な値が必要な場合は、それらをHDFSに配置し、Vをファイルの名前にすることができます。この場合に考慮する必要がある問題は、このアプローチが機能しなくなったことです。たとえば、失敗したマッパーなどの副作用があります。

0

「もちろんペアはstdoutに放出されますか?」とはどういう意味ですか?

キー値のペアの数が非常に多いとお考えですか? yesの場合、hadoopはこれを効率的に処理します。

あなたが座っていることを意味するならば、vのサイズは非常に大きいです。したがって、特定のキーの場合、放出される値は1〜4 GBまたはそれ以上です。まず第一に、どんな種類のアプリケーションを実行して、非常に大きな値を生成しているか。鍵を分割することは可能ですか?

メインポイントに戻る:Hadoopはあまり効率的ではありません。ユースケースによって異なります。 ほとんどの場合、非常に非効率です。

関連する問題