Hadoop クラスター間でデータを転送するためのベスト プラクティス

Hadoop クラスター間でデータを転送するためのベスト プラクティス

状況: 古い Hadoop クラスターから新しい Hadoop クラスターに約 100 TB を転送する必要があります。2 つのクラスターには、各クラスターのネームノードからの直接 1GbE 接続があります。データノードは接続されていません。

私が試したこと:

  • Distcp: 古いデータノードと新しいデータノードが接続されていないため、これは機能しません。各 MapReduce ジョブで接続がタイムアウトしたと報告されます。
  • hdfs dfs -cp: これまでのところ、これはかなりうまく機能していますが、速度が低下し、数時間後には転送が停止する傾向があります。また、圧縮や再起動性もサポートされていません。

私が興味を持っていること:

  • クラスター 1 とクラスター 2 間の接続がボトルネックになっているため、クラスター 1 のデータを圧縮してオーバーヘッドをほとんどかけずにネットワーク経由で送信し (netcat など)、クラスター 2 で解凍できるツールを探しています。Rsync が最適だと思いますが、2 つの Hadoop クラスター間でそれをどのように使用すればよいかわかりません。
  • 私がよく知らないその他の推奨事項。

私の質問:

  • 記載されている制限を考慮すると、クラスター 1 とクラスター 2 間でデータを効率的に転送するには、どのようなツールまたはスクリプトを使用できますか?

関連情報