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

E-MapReduce:JindoDistCp ユーザーガイド

最終更新日:Aug 22, 2026

このトピックでは、JindoDistCp の使用方法を説明します。

JindoDistCp とは

JindoDistCp は、Alibaba Cloud データレイクストレージチームが開発した、クラスター内およびクラスター間での大規模なデータ転送を目的とした分散ファイルコピーツールです。MapReduce を使用してファイルを分散し、エラー処理と障害復旧を行います。MapReduce タスクの入力としてファイルとディレクトリのリストを受け取り、各タスクがソースリストの一部をコピーします。Hadoop 分散ファイルシステム (HDFS)、OSS-HDFS、OSS、S3 間のデータコピーシナリオを完全にサポートしています。さまざまなカスタムコピーパラメーターと戦略を提供します。HDFS から OSS-HDFS へのデータコピーに最適化されています。カスタム CopyCommitter を使用して No-Rename コピーを実行し、完了時にデータ整合性を保証します。その機能は、S3 DistCp および HDFS DistCp の機能と完全に一致しています。HDFS DistCp と比較して大幅なパフォーマンス向上を実現しています。JindoDistCp は、効率的、安定的、安全なデータコピーツールとして設計されています。

環境要件

  • JDK 1.8.0 以降

  • Hadoop 2.3 以降。最新バージョンの jindo-distcp-tool-x.x.x.jar ファイルをダウンロードする必要があります。この JAR ファイルは、jindosdk-${version}.tar.gz パッケージに含まれています。パッケージを解凍すると、tools/ ディレクトリ内に JAR ファイルがあります。詳細については、「JindoData downloads」をご参照ください。

    説明

    JindoDistCp は、EMR V5.6.0 以降および EMR V3.40.0 以降を実行するクラスターにデプロイされています。jindo-distcp-tool-x.x.x.jar ファイルは、/opt/apps/JINDOSDK/jindosdk-current/tools ディレクトリ内にあります。

パラメーター

JindoDistCp は JAR パッケージとして提供されています。hadoop jar コマンドで一連のパラメーターを使用して、移行操作を実行できます。

パラメーター

パラメータータイプ

説明

デフォルト値

バージョン

OSS

OSS-HDFS

--src

必須

ソースディレクトリを指定します。次のプレフィックスがサポートされています:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

なし

4.3.0 以降

サポート

サポート

--dest

必須

宛先ディレクトリを指定します。次のプレフィックスがサポートされています:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

なし

4.3.0 以降

サポート

サポート

--bandWidth

任意

単一ノードの帯域幅の上限を指定します。単位:MB。

-1

4.3.0 以降

サポート

サポート

--codec

任意

圧縮タイプを指定します。サポートされているコーデックは、gzip、gz、lzo、lzop、snappy です。

keep (圧縮タイプは変更されません。)

4.3.0 以降

サポート

サポート

--policy

任意

宛先のストレージクラスを指定します。有効な値:Standard、IA、Archive、ColdArchive。

Standard

4.3.0 以降

サポート

非サポート

--filters

任意

フィルター規則を含むファイルを指定します。

なし

4.3.0 以降

サポート

サポート

--srcPrefixesFile

任意

コピー対象とするソースパスのプレフィックスリストを含むファイルを指定します。

なし

4.3.0 以降

サポート

サポート

--parallelism

任意

DistCp タスクの並列度を指定します。これは、MapReduce タスクの mapreduce.job.maps パラメーターに対応します。

10

4.3.0 以降

サポート

サポート

--jobBatch

任意

各 DistCp ジョブで処理されるファイル数を指定します。

10000

4.5.1 以降

サポート

サポート

--taskBatch

任意

各 DistCp タスクで処理されるファイル数を指定します。

1

4.3.0 以降

サポート

サポート

--tmp

任意

一時ディレクトリを指定します。

/tmp

4.3.0 以降

サポート

サポート

--hadoopConf <key=value>

任意

構成を設定します。

なし

4.3.0 以降

サポート

サポート

--disableChecksum

任意

チェックサム検証を無効にします。

false

4.3.0 以降

サポート

サポート

--deleteOnSuccess

任意

ソースファイルを削除します。データの移動に使用します。

false

4.3.0 以降

サポート

サポート

--enableTransaction

任意

トランザクションを有効にし、ジョブレベルの原子性を保証します。

false

4.3.0 以降

サポート

サポート

--ignore

任意

タスクの中断を避けるために、コピー中にスローされた例外を無視します。

false

4.3.0 以降

サポート

サポート

--enableCMS

任意

モニタリングとアラートを有効にします。

false

4.5.1 以降

サポート

サポート

--diff

任意

DistCp モードを DIFF に設定して、ソースと宛先のファイル間の差分を表示します。

DistCpMode.COPY

4.3.0 以降

サポート

サポート

--update

任意

DistCp モードを UPDATE に設定して、増分同期を有効にします。これにより、同一のファイルとディレクトリはスキップされ、ソースから宛先へ新規または変更されたファイルとディレクトリのみが同期されます。

DistCpMode.COPY

4.3.0 以降

サポート

サポート

--preserveMeta

任意

メタデータを保持します。

false

4.4.0 以降

非サポート

サポート

--src と --dest (必須)

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

  • --src:ソースファイルのパスを指定します。

  • --dest:宛先ファイルのパスを指定します。

コマンドの例は次のとおりです。

hadoop jar jindo-distcp-tool-${version}.jar --src /data/hourly_table  --dest oss://example-oss-bucket/hourly_table

dest パスで宛先ディレクトリを指定できます。たとえば、上記のコマンドは /data/hourly_table から example-oss-bucket バケットの hourly_table ディレクトリにファイルをコピーします。この動作は Hadoop DistCp の動作とは異なります。デフォルトでは、JindoDistCp はソースディレクトリのすべてのファイルを指定された宛先パスにコピーしますが、ソースのルートディレクトリは含まれません。宛先パスに指定したディレクトリは、存在しない場合でも自動的に作成されます。

単一のファイルをコピーする場合、宛先にはディレクトリを指定する必要があります。

hadoop jar jindo-distcp-tool-${version}.jar --src /test.txt --dest oss://example-oss-bucket/tmp

--bandWidth の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--bandWidth :DistCp タスクで単一のノードが使用できる帯域幅を MB 単位で指定します。このパラメーターを使用すると、単一のノードが帯域幅を過剰に消費するのを防ぎます。

以下はコマンドの例です。

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --bandWidth 6

--codec の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

ソースファイルは、ストレージコストやデータ分析の観点からは望ましくない非圧縮のテキストとして、OSS または OSS-HDFS に保存されることがよくあります。--codec オプションを使用すると、ファイルをオンラインで圧縮し、データを効率的に保存できます。

--codec はファイル圧縮のコーデックを指定します。gzip、gz、lzo、lzop、snappy のエンコーダー、およびキーワード none と keep (デフォルト) をサポートしています。キーワードの説明は次のとおりです:

  • none:ファイルを非圧縮で保存します。ソースファイルがすでに圧縮されている場合、JindoDistCp は解凍します。

  • keep (デフォルト):圧縮状態を変更せずに、そのままファイルをコピーします。

コマンドの例は次のとおりです:

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --codec gz

コマンドの実行後、宛先フォルダー内のファイルは gz コーデックを使用して圧縮されます。

[root@emr-header-1 opt]# hdfs dfs -ls oss://example-oss-bucket/hourly_table/2017-02-01/03
Found 6 items
-rw-rw-rw-   1        938 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/000151.sst.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/1.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/2.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/OPTIONS-000109.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp01.txt.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp06.txt.gz
説明

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

--filters の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--filters :フィルター ルールを含むファイルを指定します。

次にコマンドの例を示します。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --filters filter.txt

たとえば、filter.txt ファイルに .*test.* が含まれている場合、パスに文字列「test」が含まれるファイルは OSS にコピーされません。

--srcPrefixesFile の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--srcPrefixesFile:包含ルールを含むファイルを指定します。

次にコマンド例を示します。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --srcPrefixesFile prefixes.txt

たとえば、prefixes.txt ファイルに .*test.* が含まれている場合、パスに文字列「test」が含まれるファイルのみが OSS にコピーされます。

--parallelism の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--parallelism: MapReduce タスクの mapreduce.job.maps パラメーターを指定します。 E-MapReduce (EMR) 環境におけるこのパラメーターのデフォルト値は 10 です。クラスターリソースに基づいてこのパラメーターの値をカスタマイズし、DistCp タスクの同時実行数をコントロールできます。

コマンドの例は次のとおりです。

 jindo-distcp-tool-${version}.jar --src /opt/tmp --dest oss://example-oss-bucket/tmp --parallelism 20

--taskBatch の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

対応

対応

--taskBatch :各 DistCp タスクで処理するファイル数を指定します。デフォルト値は 1 です。

以下はコマンドの例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --taskBatch 1

--tmp の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

対応

対応

--tmp:一時データを保存するための HDFS 上の一時ディレクトリを指定します。デフォルト値は /tmp です。これは hdfs:///tmp/ に対応します。

以下はコマンドの例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table  --tmp /tmp

OSS または OSS-HDFS にアクセスするための AccessKey の設定

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--hadoopConf : EMR 環境にいない場合や、パスワードレスアクセスサービスに問題がある場合は、このオプションを使用して OSS または OSS-HDFS にアクセスする AccessKey を指定できます。

次にコマンド例を示します。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret

毎回 AccessKey を入力しなくても済むように、Hadoop の core-site.xml ファイルに、OSS または OSS-HDFS 用の AccessKey ID と AccessKey Secret を事前に設定できます。EMR コンソールで、Hadoop-Common サービスの core-site.xml ページに次の設定を追加します。

<configuration>
    <property>
        <name>fs.oss.accessKeyId</name>
        <value>xxx</value>
    </property>

    <property>
        <name>fs.oss.accessKeySecret</name>
        <value>xxx</value>
    </property>
</configuration>

--disableChecksum の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--disableChecksum :ファイルのチェックサム検証を無効にします。

以下はコマンド例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --disableChecksum

--deleteOnSuccess の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--deleteOnSuccess:データをコピーするのではなく、移動します。このオプションは mv 操作と同様です。最初にファイルをコピーし、その後ソースからファイルを削除します。

以下はコマンドの例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --deleteOnSuccess

--enableTransaction の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--enableTransaction:デフォルトでは、JindoDistCp はタスクレベルの完全性を保証します。このパラメーターを使用すると、ジョブレベルの完全性を保証し、ジョブ間のトランザクションサポートを有効にできます。

コマンドの例を次に示します。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --enableTransaction

--ignore の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--ignore :データ移行中に発生する例外を無視します。エラーはタスクを中断せず、代わりに JindoCounter の値として報告されます。CMS が有効になっている場合は、通知も送信されます。

以下はコマンドの例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --ignore

--diff の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--diff :ソースとデスティネーションのファイルを比較します。ソースファイルがデスティネーションに同期されていない場合、差分を含むファイルがカレントディレクトリに生成されます。JindoDistCp タスクに圧縮または展開が含まれる場合、処理中にファイルサイズが変更されるため、--diff では正しいファイル差分を報告できません。

以下はコマンドの例です:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff

差分が見つかった場合、差分を含むファイルがカレントディレクトリに生成され、次のメッセージが表示されます:

JindoCounter
DIFF_FILES=1

--dest が HDFS パスの場合、/path、hdfs://hostname:ip/path、hdfs://headerIp:ip/path 形式がサポートされています。 hdfs:///path、hdfs:/path、またはその他のカスタム形式はサポートされていません。

ファイルメタデータの差分を確認するには、--diff --preserveMeta コマンドを実行します:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff --preserveMeta

--update の使用

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

サポート

--update: 増分同期を有効にします。このオプションは、同一のファイルとディレクトリをスキップし、ソースからデスティネーションに、新規または変更されたファイルとディレクトリのみを同期します。

JindoDistCp タスクが失敗した場合、このパラメーターを使用してブレークポイントからタスクを再開し、残りのファイルのみをコピーできます。また、このパラメーターを使用して、前回の JindoDistCp タスクの完了後にソースに追加された新規ファイルをコピーすることもできます。

以下はコマンドの例です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --update

OSS の Cold Archive、アーカイブ、または IA ストレージクラスへのデータ書き込み

バージョン

OSS

OSS-HDFS

4.3.0 以降

サポート

非サポート

--policy:OSS に書き込むデータのストレージクラスを指定します。このパラメーターは Cold Archive、アーカイブ、または IA に設定できます。このパラメーターを指定しない場合、データはデフォルトで標準ストレージクラスに書き込まれます。

  • OSS の Cold Archive ストレージクラス (coldArchive) へのデータ書き込み

    この機能は特定のリージョンでのみ利用できます。詳細については、「OSS storage classes」をご参照ください。次にコマンドの例を示します。

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy coldArchive --parallelism 20
  • OSS のアーカイブ ストレージクラス (archive) へのデータ書き込み

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy archive --parallelism 20
  • OSS の IA ストレージクラス (ia) へのデータ書き込み

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy ia --parallelism 20

--preserveMeta の使用

バージョン

OSS

OSS-HDFS

4.4.0 以降

非対応

対応

--preserveMeta :メタデータをデータとともに移行することを指定します。メタデータには、所有者、グループ、パーミッション、Atime、Mtime、レプリケーション、ブロックサイズ、XAttrs、ACL が含まれます。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --preserveMeta

--jobBatch の使用

バージョン

OSS

OSS-HDFS

4.5.1 以降

サポート

サポート

--jobBatch:DistCp タスクが OSS にデータを書き込む場合、--jobBatch を使用して、各 DistCp ジョブが処理するファイル数を指定できます。デフォルト値は 10,000 です。

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --jobBatch 50000

--enableCMS の使用

バージョン

OSS

OSS-HDFS

4.5.1 以降

サポート

サポート

--enableCMS :CMS アラート機能を有効にします。

JindoDistCp カウンター

JindoDistCp カウンターは、JindoDistCp タスクの結果を要約したものです。次の表にカウンターを示します。

パラメーター

説明

COPY_FAILED

コピーに失敗したファイル数。

CHECKSUM_DIFF

チェックサムが異なるファイル数。コピー操作時は COPY_FAILED に、差分比較時は DIFF_FILES に含まれます。

FILES_EXPECTED

コピーされる予定のファイル数。

BYTES_EXPECTED

コピーされる予定のバイト数。

FILES_COPIED

正常にコピーされたファイル数。

BYTES_COPIED

正常にコピーされたバイト数。

FILES_SKIPPED

増分更新時にスキップされたファイル数。

BYTES_SKIPPED

増分更新時にスキップされたバイト数。

DIFF_FILES

ソースパスとデスティネーションパス間で差分があるファイル数。

SAME_FILES

ソースパスとデスティネーションパス間で同一のファイル数。

DST_MISS

デスティネーションパスに存在しないファイル数。DIFF_FILES に含まれます。

LENGTH_DIFF

ソースとデスティネーション間でサイズが異なるファイル数。DIFF_FILES に含まれます。

CHECKSUM_DIFF

The number of files that failed checksum verification. This is included in DIFF_FILES.

DIFF_FAILED

比較操作が異常終了したファイル数。