私はHadoopストリーミング用の2つのプログラムを持っています。もちろん非常に大きなサイズのstdoutを使ったHadoopストリーミング
mapper (produces <k, v> pair)
reducer
、<k, v>
対はstdout
に放出されます。
私の質問は<k, v>
でv
が非常に大きい場合、それは効率的にHadoop上で実行しない
のですか?
マッパーが発行するv
は1G以上(時には4G以上)になると思います。
私はHadoopストリーミング用の2つのプログラムを持っています。もちろん非常に大きなサイズのstdoutを使ったHadoopストリーミング
mapper (produces <k, v> pair)
reducer
、<k, v>
対はstdout
に放出されます。
私の質問は<k, v>
でv
が非常に大きい場合、それは効率的にHadoop上で実行しない
のですか?
マッパーが発行するv
は1G以上(時には4G以上)になると思います。
メモリの中でそれらを操作するのは問題があるので、このような値のサイズは問題を引き起こすと思います。実際にこのような巨大な値が必要な場合は、それらをHDFSに配置し、Vをファイルの名前にすることができます。この場合に考慮する必要がある問題は、このアプローチが機能しなくなったことです。たとえば、失敗したマッパーなどの副作用があります。
「もちろんペアはstdoutに放出されますか?」とはどういう意味ですか?
キー値のペアの数が非常に多いとお考えですか? yesの場合、hadoopはこれを効率的に処理します。
あなたが座っていることを意味するならば、vのサイズは非常に大きいです。したがって、特定のキーの場合、放出される値は1〜4 GBまたはそれ以上です。まず第一に、どんな種類のアプリケーションを実行して、非常に大きな値を生成しているか。鍵を分割することは可能ですか?
メインポイントに戻る:Hadoopはあまり効率的ではありません。ユースケースによって異なります。 ほとんどの場合、非常に非効率です。