2012-01-13 3 views
0

ローカルからhadoop hdfsにたくさんのファイルを転送しようとしています。 私のJavaコードでは、hadoopへの接続が1つだけです。しかし私はTransferFrom多くのスレッドを使ってhadoop hdfsにローカルに移動

fileSystem.transferFromLocal 

を50スレッドで同時に呼び出します。

本当に遅いので、これは良い方法ではないかもしれないと思います。

誰も私にこのことについていくつかの提案をしてもらえますか?どうもありがとうございました。

答えて

1

ゆっくりとした転送を引き起こすボトルネックを見つけ出す必要があります。スレッドの数を増やしても、HDFSの書き込み量は比例して増加しません。 Hadoopクラスタの詳細を調べなければ、問題を診断することは困難です。ここで

  1. を検討する事のいくつかであるローカルマシンとHadoopクラスタ間のネットワーク帯域幅を確認してください。

  2. ローカルディスクI/Oはボトルネックにすることもできます。

  3. データノードの数を増やしてみてください。データは、クライアントからパイプラインの最初のデータノードに直接ストリームされることに注意してください。最初のものは2番目のものに転送され、次のデータノードに転送されます。

  4. 設定パラメータを確認して、HDFSを微調整します。

HDFSの詳細については、Architecture Guideを参照してください。

関連する問題