違いは何ですか
hadoop distcp
と
hadoop distcp -update
呼び方がわずかに異なるだけで、どちらも同じ働きをします。それらのいずれも、宛先の既存のファイルを上書きしません。それでは、2 つの異なるコマンド セットのポイントは何でしょうか?
distcp と distcp -update の違いは、distcp はデフォルトでファイルをスキップしますが、"distcp -update" は src サイズが dst サイズと異なる場合にファイルを更新します。
distcp のデフォルトの性質は、競合を防ぐためにファイルが存在する場合はスキップすることであるため、ドキュメントでは少し混乱しています。
ドキュメントから:
「前述のとおり、これは「同期」操作ではありません。調査される唯一の基準は、ソース ファイルと宛先ファイルのサイズです。それらが異なる場合、ソース ファイルが宛先ファイルに置き換わります。」
rsync のような delta- xfer-update
アルゴリズムではなく、サイズ チェックのみを行うことに注意してください。これは、ファイルがすべて同じサイズでデータが異なる場合には完全ではありません。
distcp -overwrite
また、サイズが一致するかどうかに関係なく、ファイルを上書きするものについても詳しく説明する必要があります。これは破壊的なプロセスであるため、本当にこれを実行する必要があるかどうかを確認してください。
http://hadoop.apache.org/common/docs/r0.19.2/distcp.html#uoでいくつかの優れた例を見つけることができます。
また、2 つのクラスター間の同期操作で行うことの例を挙げたいと思います。
hadoop distcp -pugp -i -delete -update hftp://hdfs-nn1:50070/clustera hdfs://hdfs-nn2:9000/clustera
これにより、hdfs-nn1 とサイズが一致しない hdfs-nn2 内のすべてのファイルが更新され、余分なファイルが削除されます。.Trash を使用している場合、削除されたファイルはすべて、distcp を呼び出すユーザーのゴミ箱に置かれます。
さまざまなコマンドの効果を確認できるように、少し実験してみます。誤って TB のデータを消去してしまうと大変なことになるので、必ずゴミ箱を使用してください。