すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Jindo DistCp の使用

最終更新日:Apr 14, 2025

このトピックでは、データコピー ツール Jindo DistCp の使用方法について説明します。

前提条件

  • Java Development Kit(JDK)8 がコンピューターにインストールされていること。
  • E-MapReduce(EMR)クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。

Jindo DistCp の使用

  1. SSH モードで EMR クラスターのマスターノードに接続します。

    詳細については、「クラスターへのログオン」をご参照ください。

  2. ヘルプ情報を取得するには、次のコマンドを実行します。
    jindo distcp --help
    次の情報が返されます。
         --help           - ヘルプテキストを表示します
         --src=VALUE          - ファイルのコピー元のディレクトリ
         --dest=VALUE              - ファイルのコピー先のディレクトリ
         --parallelism=VALUE         - コピー タスクの並列処理
         --outputManifest=VALUE       - マニフェスト ファイルの名前
         --previousManifest=VALUE   -   既存のマニフェスト ファイルへのパス
         --requirePreviousManifest=VALUE   -   指定されている場合、以前のマニフェストが存在する必要があります
         --copyFromManifest   -   ディレクトリをリストする代わりに、マニフェストからコピーします
         --srcPrefixesFile=VALUE   -   ソース URI プレフィックスのリストを含むファイル
         --srcPattern=VALUE   -   このパターンに一致するソース ファイルのみを含めます
         --deleteOnSuccess   -   コピーが成功したら入力ファイルを削除します
         --outputCodec=VALUE   -   出力ファイルの圧縮コーデック
         --groupBy=VALUE   -   入力ファイルをグループ化するパターン
         --targetSize=VALUE   -   出力ファイルのターゲット サイズ
         --enableBalancePlan   -   バランスをとるためのプラン コピー タスクを有効にします
         --enableDynamicPlan   -   プラン コピー タスクを動的に有効にします
         --enableTransaction   -   ジョブのトランザクションを明示的に有効にします
         --diff   -   src ファイルリストと dest ファイルリストの違いを表示します
         --ossKey=VALUE   -   必要に応じて oss キーを指定します
         --ossSecret=VALUE   -   必要に応じて oss シークレットを指定します
         --ossEndPoint=VALUE   -   必要に応じて oss エンドポイントを指定します
         --policy=VALUE   -   oss ストレージ ポリシーを指定します
         --cleanUpPending   -   distcp ジョブの完了時に不完全なアップロードをクリーンアップします
         --queue=VALUE   -   必要に応じて yarn キュー名を指定します
         --bandwidth=VALUE   -   必要に応じて、マップ/リデュースごとの帯域幅を MB 単位で指定します
         --s3Key=VALUE   -   s3 キーを指定します
         --s3Secret=VALUE   -   s3 シークレットを指定します
         --s3EndPoint=VALUE   -   s3 エンドポイントを指定します
         --enableCMS  -   CMS を有効にします
         --update   -   ターゲットを更新し、不足しているファイルまたはディレクトリのみをコピーします
         --filters=VALUE   -   ソース ファイルを除外するパターンのファイルのパスを指定します

--src と --dest

--src はコピー元のディレクトリを指定します。--dest はコピー先のディレクトリを指定します。

デフォルトでは、Jindo DistCp は --src で指定されたディレクトリ内のすべてのファイルを、--dest で指定されたディレクトリにコピーします。ルート ディレクトリを指定しない場合、Jindo DistCp は自動的にルート ディレクトリを作成します。

たとえば、次のコマンドを実行して、HDFS の /opt/tmp ディレクトリにあるファイルを OSS バケットにコピーできます。

jindo distcp --src /opt/tmp --dest oss://<yourBucketName>/tmp
説明

yourBucketName は OSS バケットの名前です。

--parallelism

--parallelism は、ファイルのコピーを実行するために実行される MapReduce ジョブの mapreduce.job.reduces パラメーターを指定します。デフォルト値は 7 です。使用可能なクラスター リソースに基づいて --parallelism をカスタマイズできます。これにより、いくつの reduce タスクを並列で実行できるかを決定できます。

たとえば、次のコマンドを実行して、HDFS の /opt/tmp ディレクトリにあるファイルを OSS バケットにコピーできます。

jindo distcp --src /opt/tmp --dest oss://<yourBucketName>/tmp --parallelism 20

--srcPattern

--srcPattern は、コピー操作のファイルをフィルタリングする正規表現を指定します。正規表現は完全なパスと一致する必要があります。

たとえば、/data/incoming/hourly_table/2017-02-01/03 ディレクトリにあるすべてのログ ファイルをコピーする必要がある場合は、--srcPattern を .*\.log に設定します。

次のコマンドを実行して、/data/incoming/hourly_table/2017-02-01/03 ディレクトリ内のファイルを表示します。

hdfs dfs -ls /data/incoming/hourly_table/2017-02-01/03

次の情報が返されます。

Found 6 items
-rw-r-----   2 root hadoop       2252 2020-04-17 20:42 /data/incoming/hourly_table/2017-02-01/03/000151.sst
-rw-r-----   2 root hadoop       4891 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/1.log
-rw-r-----   2 root hadoop       4891 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/2.log
-rw-r-----   2 root hadoop       4891 2020-04-17 20:42 /data/incoming/hourly_table/2017-02-01/03/OPTIONS-000109
-rw-r-----   2 root hadoop       1016 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/emp01.txt
-rw-r-----   2 root hadoop       1016 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/emp06.txt

ログ ファイルをコピーするには、次のコマンドを実行します。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --srcPattern .*\.log --parallelism 20

次のコマンドを実行して、コピー先の OSS バケット内のファイルを表示します。

hdfs dfs -ls oss://<yourBucketName>/hourly_table/2017-02-01/03

次の情報が返されます。コピー元のディレクトリにあるログ ファイルのみがコピーされます。

Found 2 items
-rw-rw-rw-   1       4891 2020-04-17 20:52 oss://<yourBucketName>/hourly_table/2017-02-01/03/1.log
-rw-rw-rw-   1       4891 2020-04-17 20:52 oss://<yourBucketName>/hourly_table/2017-02-01/03/2.log

--deleteOnSuccess

--deleteOnSuccess を使用すると、Jindo DistCp はコピー操作が成功した後に、コピーされたファイルをコピー元のディレクトリから削除できます。

たとえば、次のコマンドを実行して、/data/incoming/hourly_table 内のファイルを OSS バケットにコピーし、コピーされたファイルをコピー元のディレクトリから削除できます。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --deleteOnSuccess --parallelism 20

--outputCodec

--outputCodec は、コピーされたファイルをオンラインで圧縮するために使用される圧縮コーデックを指定します。例:

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --outputCodec=gz --parallelism 20

次のコマンドを実行して、コピー先のディレクトリ内のファイルを表示します。

hdfs dfs -ls oss://<yourBucketName>/hourly_table/2017-02-01/03

次の情報が返されます。コピー先のディレクトリ内のファイルは GZ 形式で圧縮されています。

Found 6 items
-rw-rw-rw-   1        938 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/000151.sst.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/1.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/2.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/OPTIONS-000109.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/emp01.txt.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://<yourBucketName>/hourly_table/2017-02-01/03/emp06.txt.gz

このパラメーターは、gzip、gz、lzo、lzop、snappy、none、または keep に設定できます。デフォルト値:keep。none と keep の説明:

  • none:Jindo DistCp はコピーされたファイルを圧縮しません。ファイルが圧縮されている場合、Jindo DistCp はファイルを解凍します。

  • keep:Jindo DistCp は、圧縮を変更せずにファイルをコピーします。

説明

オープン ソースの Hadoop クラスターで LZO コーデックを使用する場合は、gplcompression のネイティブ ライブラリと hadoop-lzo パッケージをインストールする必要があります。

--outputManifest と --requirePreviousManifest

--outputManifest は、Jindo DistCp によってコピーされたすべてのファイルに関する情報を含むマニフェスト ファイルを生成します。情報には、コピー先のファイル、コピー元のファイル、およびファイル サイズが含まれます。

マニフェスト ファイルを生成する場合は、--requirePreviousManifestfalse に設定します。デフォルトでは、ファイルは GZ 形式で圧縮されます。これが唯一サポートされている形式です。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --outputManifest=manifest-2020-04-17.gz --requirePreviousManifest=false --parallelism 20

次のコマンドを実行して、ファイルの内容を表示します。

hadoop fs -text oss://<yourBucketName>/hourly_table/manifest-2020-04-17.gz > before.lst
cat before.lst 

次の情報が返されます。

{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/000151.sst","baseName":"2017-02-01/03/000151.sst","srcDir":"oss://<yourBucketName>/hourly_table","size":2252}
{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/1.log","baseName":"2017-02-01/03/1.log","srcDir":"oss://<yourBucketName>/hourly_table","size":4891}
{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/2.log","baseName":"2017-02-01/03/2.log","srcDir":"oss://<yourBucketName>/hourly_table","size":4891}
{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/OPTIONS-000109","baseName":"2017-02-01/03/OPTIONS-000109","srcDir":"oss://<yourBucketName>/hourly_table","size":4891}
{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/emp01.txt","baseName":"2017-02-01/03/emp01.txt","srcDir":"oss://<yourBucketName>/hourly_table","size":1016}
{"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/emp06.txt","baseName":"2017-02-01/03/emp06.txt","srcDir":"oss://<yourBucketName>/hourly_table","size":1016}

--outputManifest と --previousManifest

--outputManifest は、以前コピーされたファイルと新しくコピーされたファイルの両方のリストを含むマニフェスト ファイルを生成します。--previousManifest は、以前にコピーされたファイルのリストを含むマニフェスト ファイルを生成します。このようにして、操作の全履歴を再作成し、現在のジョブによってどのファイルがコピーされたかを確認できます。

たとえば、コピー元のディレクトリに 2 つのファイルが追加されています。新しく追加されたファイルをコピーするには、次のコマンドを実行します。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --outputManifest=manifest-2020-04-18.gz --previousManifest=oss://<yourBucketName>/hourly_table/manifest-2020-04-17.gz --parallelism 20

コピーされたファイルを表示するには、次のコマンドを実行します。

hadoop fs -text oss://<yourBucketName>/hourly_table/manifest-2020-04-18.gz > current.lst
diff before.lst current.lst 

次の情報が返されます。

3a4,5
> {"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/5.log","baseName":"2017-02-01/03/5.log","srcDir":"oss://<yourBucketName>/hourly_table","size":4891}
> {"path":"oss://<yourBucketName>/hourly_table/2017-02-01/03/6.log","baseName":"2017-02-01/03/6.log","srcDir":"oss://<yourBucketName>/hourly_table","size":4891}

--copyFromManifest

--copyFromManifest を使用して、以前に --outputManifest によって生成されたマニフェスト ファイルを指定し、マニフェスト ファイルにリストされているファイルをコピー先のディレクトリにコピーできます。例:

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --previousManifest=oss://<yourBucketName>/hourly_table/manifest-2020-04-17.gz --copyFromManifest --parallelism 20

--srcPrefixesFile

--srcPrefixesFile を使用すると、Jindo DistCp は一度に複数のフォルダー内のファイルをコピーできます。

次のコマンドを実行して、hourly_table の下のサブフォルダーを表示します。

hdfs dfs -ls oss://<yourBucketName>/hourly_table

次の情報が返されます。

Found 4 items
drwxrwxrwx   -          0 1970-01-01 08:00 oss://<yourBucketName>/hourly_table/2017-02-01
drwxrwxrwx   -          0 1970-01-01 08:00 oss://<yourBucketName>/hourly_table/2017-02-02

次のコマンドを実行して、hourly_table の下のすべてのファイルをコピー先のフォルダーにコピーします。folders.txt という名前のファイルが生成されます。これには、hourly_table の下の各サブフォルダーに対応するプレフィックスが含まれています。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --srcPrefixesFile file:///opt/folders.txt --parallelism 20

次のコマンドを実行して、folders.txt ファイルの内容を表示します。

cat folders.txt 

次の情報が返されます。

hdfs://emr-header-1.cluster-50466:9000/data/incoming/hourly_table/2017-02-01
hdfs://emr-header-1.cluster-50466:9000/data/incoming/hourly_table/2017-02-02

--groupBy と --targetSize

HDFS から多数の小さなファイルを読み取ると、データ処理のパフォーマンスに影響します。そのため、Jindo DistCp を使用して小さなファイルを指定されたサイズの大きなファイルにマージすることをお勧めします。これにより、分析パフォーマンスが最適化され、コストが削減されます。

次のコマンドを実行して、指定されたフォルダー内のファイルを表示します。

hdfs dfs -ls /data/incoming/hourly_table/2017-02-01/03

次の情報が返されます。

Found 8 items
-rw-r-----   2 root hadoop       2252 2020-04-17 20:42 /data/incoming/hourly_table/2017-02-01/03/000151.sst
-rw-r-----   2 root hadoop       4891 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/1.log
-rw-r-----   2 root hadoop       4891 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/2.log
-rw-r-----   2 root hadoop       4891 2020-04-17 21:08 /data/incoming/hourly_table/2017-02-01/03/5.log
-rw-r-----   2 root hadoop       4891 2020-04-17 21:08 /data/incoming/hourly_table/2017-02-01/03/6.log
-rw-r-----   2 root hadoop       4891 2020-04-17 20:42 /data/incoming/hourly_table/2017-02-01/03/OPTIONS-000109
-rw-r-----   2 root hadoop       1016 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/emp01.txt
-rw-r-----   2 root hadoop       1016 2020-04-17 20:47 /data/incoming/hourly_table/2017-02-01/03/emp06.txt

次のコマンドを実行して、フォルダー内の TXT ファイルをそれぞれ 10 MB 以下のサイズのファイルにマージします。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --targetSize=10 --groupBy='.*/([a-z]+).*.txt' --parallelism 20

次のコマンドを実行して、コピー先のディレクトリ内のファイルを表示します。2 つの TXT ファイルが 1 つにマージされています。

hdfs dfs -ls oss://<yourBucketName>/hourly_table/2017-02-01/03/
Found 1 items
-rw-rw-rw-   1       2032 2020-04-17 21:18 oss://<yourBucketName>/hourly_table/2017-02-01/03/emp2

--enableBalancePlan

小さいファイルと大きいファイルの両方をコピーする必要があるが、小さいファイル間と大きいファイル間でファイル サイズに大きな違いがない場合は、--enableBalancePlan を使用してジョブ割り当てプランを最適化できます。これにより、Jindo DistCp のコピー パフォーマンスが向上します。アプリケーション プランを指定しない場合、ファイルはランダムに割り当てられます。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --enableBalancePlan --parallelism 20
説明

このオプションは、--groupBy または --targetSize と同じコマンドで使用することはできません。

--enableDynamicPlan

コピーするファイルのサイズが大きく異なり、ほとんどのファイルが小さいファイルの場合は、--enableDynamicPlan を使用してジョブ割り当てプランを最適化できます。これにより、Jindo DistCp のコピー パフォーマンスが向上します。

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --enableDynamicPlan --parallelism 20
説明

このオプションは、--groupBy または --targetSize と同じコマンドで使用することはできません。

--enableTransaction

--enableTransaction は、ジョブ レベルの整合性とジョブ間のトランザクション サポートを保証します。例:

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --enableTransaction --parallelism 20

--diff

ファイルがコピーされた後、--diff を使用して、コピー元ディレクトリとコピー先ディレクトリのファイル間の違いを確認できます。

例:
jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --diff
すべてのファイルがコピーされている場合、次の情報が返されます。
INFO distcp.JindoDistCp: Jindo DistCp job exit with 0
一部のファイルがコピーされていない場合は、これらのファイルのリストを含む manifest ファイルがコピー先ディレクトリに生成されます。その後、--copyFromManifest--previousManifest を使用して、リスト内のファイルをコピー先ディレクトリにコピーできます。このようにして、データ量とファイル数が検証されます。Jindo DistCp がコピー処理中に圧縮または解凍操作を実行した場合、--diff // 差分 は正確なファイル サイズの差分を返しません。
jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --dest oss://<yourBucketName>/hourly_table --previousManifest=file:///opt/manifest-2020-04-17.gz --copyFromManifest --parallelism 20
説明 コピー先ディレクトリが HDFS ディレクトリの場合、--dest/pathhdfs://hostname:ip/path、または hdfs://headerIp:ip/path 形式で指定する必要があります。hdfs:///pathhdfs:/path など、他の形式はサポートされていません。
--update を使用して、差分のあるファイルを段階的に更新することもできます。
hadoop jar jindo-distcp-3.5.0.jar --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --update --parallelism 20

--queue

--queue は、現在の DistCp タスクが存在する YARN キューの名前を指定します。

例:
jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --queue yarnqueue

--bandwidth

--bandwidth は、現在の DistCp タスクの単一ノードに割り当てられる帯域幅を指定します。これにより、タスクが過剰な帯域幅を占有するのを防ぎます。単位:MB/秒。

--update

--update を使用すると、Jindo DistCp はワンクリックでファイルを段階的に更新できます。Jindo DistCp は、コピー先と同じファイルとディレクトリをスキップし、コピー元からコピー先に新しいファイルとディレクトリ、および更新されたファイルとディレクトリを直接同期します。

例:
hadoop jar jindo-distcp-3.5.0.jar --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --update --parallelism 20

--filters

--filters はファイルのパスを指定します。このファイルでは、各行に 1 つの正規表現が指定されています。正規表現は、現在の DistCp タスクでコピーしたくないファイル、または差分を比較したくないファイルをフィルタリングするために使用されます。

例:
hadoop jar jindo-distcp-3.5.0.jar --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table -filters /path/to/filterfile.txt --parallelism 20
サンプル ファイルの内容:
.*\.tmp.
.*\.staging.*

上記のサンプル ファイルを使用すると、DistCp タスクは、hdfs://data/incoming/hourly_tabl ディレクトリで名前に .tmp または .staging が含まれるファイルをフィルタリングし、コピー操作と --diff 操作中にこれらのファイルをスキップします。

AccessKey ペアを使用して OSS にアクセスする

EMR の外部のインスタンスから OSS にアクセスする場合、または AccessKey を使用しないアクセスがサポートされていない場合は、AccessKey ペアを使用して OSS にアクセスできます。コマンドで --key、--secret、および --endPoint パラメーターを設定して、AccessKey ペアを指定します。

例:

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --key <yourAccessKeyId> --secret <yourAccessKeySecret> --endPoint oss-cn-hangzhou.aliyuncs.com --parallelism 20

yourAccessKeyId は、Alibaba Cloud アカウントの AccessKey ID です。yourAccessKeySecret は、Alibaba Cloud アカウントの AccessKey シークレットです。

OSS コールド アーカイブ、アーカイブ、または IA ストレージにデータを書き込む

DistCp タスクを使用してデータをオブジェクト ストレージ サービス(OSS)に書き込む場合、--policy を使用してストレージ クラスを指定できます。
  • コールド アーカイブ ストレージ クラスの例(--policy coldArchive
    hadoop jar jindo-distcp-3.5.0.jar --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --policy coldArchive --parallelism 20
    説明 コールド アーカイブ ストレージ クラスは、一部のリージョンでのみ使用できます。サポートされているリージョンの詳細については、「概要」をご参照ください。
  • アーカイブ ストレージ クラスの例(--policy archive // ポリシーアーカイブ
    jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --policy archive --parallelism 20
  • 低頻度アクセス(IA)ストレージ クラスの例(--policy ia
    jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --policy ia --parallelism 20

CloudMonitor の使用

CloudMonitor を使用して、Alibaba Cloud リソースのメトリクスとカスタム メトリクスを収集し、サービスの可用性を検出し、メトリクスのアラートを設定できます。これにより、Alibaba Cloud リソースの使用状況とアプリケーションの状態を取得し、できるだけ早く例外を処理して、アプリケーションの正常な実行を保証できます。

現在の DistCp タスクが失敗した場合に CloudMonitor が障害を報告するかどうかを指定できます。CloudMonitor コンソールで次の手順を実行して、アラート機能を設定できます。

  1. アラート連絡先またはアラート連絡先グループを作成します。詳細については、「アラート連絡先またはアラート連絡先グループの作成」をご参照ください。
  2. アラート トークンを取得します。
    1. 左側のナビゲーション ペインで、[アラート] > [アラート連絡先] を選択します。
    2. [アラート連絡先] ページで、[アラート連絡先グループ] タブをクリックします。
    3. アラート連絡先グループを見つけて、[外部アラートへのアクセス] をクリックします。

      表示されるパネルに表示されているアラート トークンを記録します。

  3. パネルで、[テスト コマンド] をクリックして、次の表に示す環境変数を設定します。
    パラメーター説明
    cmsAccessKeyIdAlibaba Cloud アカウントの AccessKey ID。
    cmsAccessSecretAlibaba Cloud アカウントの AccessKey シークレット。
    cmsRegionクラスターが存在するリージョンの ID(例:cn-hangzhou)。
    cmsToken手順 2 で取得したアラート トークン。
    cmsLevelアラート レベル。次のレベルがサポートされています。
    • INFO:メールと DingTalk チャットボット
    • WARN:テキスト メッセージ、メール、および DingTalk チャットボット
    • CRITICAL:電話、テキスト メッセージ、メール、および DingTalk チャットボット
    例:
    export cmsAccessKeyId=<your_key_id>
    export cmsAccessSecret=<your_key_secret>
    export cmsRegion=cn-hangzhou
    export cmsToken=<your_cms_token>
    export cmsLevel=WARN
    
    hadoop jar jindo-distcp-3.5.0.jar \
    --src /data/incoming/hourly_table \
    --dest oss://yang-hhht/hourly_table \
    --enableCMS

残留ファイルのクリーンアップ

DistCp タスクを実行すると、コピー先ディレクトリに正しくアップロードされていないファイルが生成される場合があります。ファイルは uploadId に基づいて OSS によって管理され、ユーザーには見えない場合があります。この場合、コマンドで --cleanUpPending パラメーターを指定できます。このようにして、タスクの完了後に残留ファイルが自動的にクリーンアップされます。または、OSS コンソールでファイルをクリーンアップすることもできます。

例:

jindo distcp --src /data/incoming/hourly_table --dest oss://<yourBucketName>/hourly_table --cleanUpPending --parallelism 20

Amazon S3 をデータ ソースとして使用する

コマンドで --s3Key、--s3Secret、および --s3EndPoint パラメーターを使用して、Amazon S3 関連の情報を指定できます。

例:
jindo distcp jindo-distcp-2.7.3.jar --src s3a://yourbucket/ --dest oss://<your_bucket>/hourly_table --s3Key yourkey --s3Secret yoursecret --s3EndPoint s3-us-west-1.amazonaws.com 
Hadoop の core-site.xml ファイルで s3Key、s3Secret、および s3EndPoint パラメーターを設定できます。このようにして、コマンドを実行するたびに AccessKey ペアを指定する必要はありません。
<configuration>
    <property>
        <name>fs.s3a.access.key</name>
        <value>xxx</value>
    </property>

    <property>
        <name>fs.s3a.secret.key</name>
        <value>xxx</value>
    </property>

    <property>
        <name>fs.s3.endpoint</name>
        <value>s3-us-west-1.amazonaws.com</value>
    </property>
</configuration>
例:
jindo distcp /tmp/jindo-distcp-2.7.3.jar --src s3://smartdata1/ --dest s3://smartdata1/tmp --s3EndPoint  s3-us-west-1.amazonaws.com

DistCp カウンターの確認

MapReduce のカウンター情報で DistCp カウンターを確認するには、次のコマンドを実行します。
JindoDistcpCounter
  BYTES_EXPECTED=10000
  BYTES_SKIPPED=10000
  FILES_EXPECTED=11
  FILES_SKIPPED=11
Shuffle Errors
  BAD_ID=0
  CONNECTION=0
  IO_ERROR=0
  WRONG_LENGTH=0
  WRONG_MAP=0
  WRONG_REDUCE=0    
タスク カウンター説明
COPY_FAILEDコピーに失敗したファイルの数。このカウンターが 0 でない場合は、アラートが報告されます。
CHECKSUM_DIFFチェックサム検証に合格しなかったファイルの数。この数は COPY_FAILED の値に追加されます。
FILES_EXPECTEDコピーする必要があるファイルの数。
FILES_COPIEDコピーされたファイルの数。
FILES_SKIPPED増分更新中にスキップされたファイルの数。
BYTES_SKIPPED増分更新中にスキップされたバイト数。
DIFF_FILES差分のあるファイルの数。ファイルは --diff を使用して取得されます。このカウンターが 0 でない場合は、アラートが報告されます。
SAME_FILES差分のないファイルの数。ファイルは --diff を使用して取得されます。
DST_MISSコピー先ディレクトリに存在しないファイルの数。この数は DIFF_FILES の値に追加されます。
LENGTH_DIFFコピー元ディレクトリとコピー先ディレクトリでサイズが異なるファイルの数。この数は DIFF_FILES の値に追加されます。
CHECKSUM_DIFFチェックサム検証に合格しなかったファイルの数。この数は DIFF_FILES の値に追加されます。
DIFF_FAILED--diff 関連のエラーが報告されたファイルの数。エラーの詳細はログ ファイルで確認できます。