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

Object Storage Service:HDFS から OSS-HDFS へのデータ移行

最終更新日:May 01, 2026

HDFS データをバックアップする場合やストレージ容量を拡張する場合は、Alibaba Cloud EMR クラスターに搭載されている Jindo DistCp ツールを使用して、HDFS から OSS-HDFS へデータを移行できます。OSS-HDFS は Hadoop エコシステムと互換性があり、移行後も各種ツールやフレームワークを活用してデータ処理および分析が可能です。

前提条件

  • EMR-5.6.0 以降または EMR-3.40.0 以降の Alibaba Cloud EMR クラスターを作成済みである必要があります。詳細については、「クラスターの作成」をご参照ください。

  • ECS インスタンス上に構築されたセルフマネージドクラスターが Hadoop 2.7 以上または 3.x の環境を備えており、MapReduce ジョブを実行できる必要があります。データ移行前に、JindoSDK および JindoFSx を含む JindoData をデプロイしてください。最新バージョンをダウンロードします。

  • OSS-HDFS サービスを有効化し、必要な権限を付与済みである必要があります。詳細については、「OSS-HDFS の有効化」をご参照ください。

背景情報

Alibaba Cloud Jindo DistCp は、大規模クラスター内またはクラスター間でファイルをコピーするための分散ツールです。Jindo DistCp は MapReduce ジョブを利用してファイルの分散コピー、エラー処理、障害からの回復を実現します。入力としてファイルおよびディレクトリのリストを受け取り、各タスクがそのリスト内の一部のファイルをコピーします。Jindo DistCp は HDFS、OSS、OSS-HDFS 間のデータコピーを完全にサポートしており、コピー ジョブをカスタマイズするためのさまざまなパラメーターおよび戦略を提供します。

Jindo DistCp の主なメリットは以下のとおりです。

  • 高効率:テストシナリオにおいて最大 1.59 倍の高速化を実現します。

  • 豊富な機能:複数のコピー方法とシナリオ別の最適化戦略を提供します。

  • OSS との深い統合:ファイルのアーカイブおよび圧縮をサポートします。

  • リネーム不要のコピー:コピー中に一時ファイルのリネームを行わないことで、データ整合性を確保します。

  • 広範な互換性:Hadoop 2.7 以上および Hadoop 3.x をサポートし、Hadoop DistCp の代替として使用できます。

操作手順

  1. EMR クラスターにログインします。

    1. EMR on ECS コンソールにログインします。

    2. 対象の EMR クラスターの名前をクリックします。

    3. Nodes タブをクリックし、ノードグループの左側にある +.jpg アイコンをクリックします。

    4. ECS ID をクリックします。ECS インスタンスページで、インスタンス ID の横にある 接続 をクリックします。

      SSH を使用して接続する方法については、「クラスターへのログイン」をご参照ください。

  2. 指定した HDFS パスから OSS-HDFS へデータを移行します。

    1. 次のコマンドを実行して、HDFS 内のデータを確認します。

      hdfs dfs -ls /

      応答例:

      Found 8 items
      drwxrwxrwx - admin supergroup 0 2023-10-26 10:55 /.sysinfo
      drwxrwxrwx - hadoop supergroup 0 2023-10-26 10:55 /apps
      drwxrwxrwx - root supergroup 0 2022-08-03 15:54 /data
      -rw-r----- 1 root supergroup 13 2022-08-25 11:45 /examplefile.txt
      drwxrwxrwx - spark supergroup 0 2023-10-26 14:49 /spark-history
      drwx-wx-wx - hive supergroup 0 2023-10-26 13:35 /tmp
      drwxrwxrwx - hive supergroup 0 2023-10-26 14:48 /user
      drwxrwxrwx - hadoop supergroup 0 2023-10-26 14:48 /yarn
    2. jindo-distcp-tool-${version}.jar パッケージが格納されているディレクトリに移動します。

      cd /opt/apps/JINDOSDK/jindosdk-current/tools
    3. クラスターに自動デプロイされた Jindo DistCp ツールのバージョンを確認します。

      ls
    4. HDFS から OSS-HDFS へデータを移行します。

      完全移行

      HDFS の /tmp ディレクトリから OSS-HDFS の宛先パス oss://examplebucket/dir へデータを完全移行(またはコピー)するには、次のコマンドを実行します。この例では jindo-distcp-tool-6.1.0.jar を使用しています。ご利用の環境に合わせて JAR のバージョン番号を置き換えてください。

      hadoop jar jindo-distcp-tool-6.1.0.jar --src /tmp/ --dest oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=LTAI************************  --hadoopConf fs.oss.accessKeySecret=yourAccessKeySecret --parallelism 10

      以下の表は、コマンドに含まれるパラメーターおよびオプションの説明です。

      パラメーター

      説明

      --src

      HDFS 内のデータのソースパス。

      /tmp/

      --dest

      OSS-HDFS 内の宛先パス。

      oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/

      --hadoopConf

      OSS-HDFS サービスへのアクセスに使用する AccessKey ID および AccessKey Secret。

      • AccessKey ID

        LTAI************************ 
      • AccessKey Secret

        yourAccessKeySecret

      --parallelism

      コピー ジョブの並列処理の次数。クラスターのリソース状況に応じてこの値を調整してください。

      10

      増分移行

      前回の完全移行以降にソースパスに追加されたデータのみをコピーする場合は、--update オプションを使用して増分コピーを実行します。

      たとえば、HDFS の /data/ ディレクトリから OSS-HDFS の宛先パス oss://destbucket/dir へデータを増分移行(またはコピー)するには、次のコマンドを実行します。

      hadoop jar jindo-distcp-tool-6.1.0.jar --src /data/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=LTAI************************  --hadoopConf fs.oss.accessKeySecret=yourAccessKeySecret --update --parallelism 10

関連ドキュメント

  • 移行コマンドを実行するたびにエンドポイントおよび AccessKey を手動で入力したくない場合は、Hadoop 設定ファイル core-site.xml にエンドポイントおよび AccessKey を設定できます。詳細については、「非 EMR クラスターを OSS-HDFS サービスに接続する」をご参照ください。

  • Jindo DistCp の他のユースケースについては、「Jindo DistCp 使用ガイド」をご参照ください。