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

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

最終更新日:Apr 19, 2025

Hadoop 分散ファイルシステム (HDFS) でデータをバックアップしたり、ストレージスペースをスケールアウトしたりする場合は、Alibaba Cloud E-MapReduce (EMR) クラスタに自動的にデプロイされる Jindo DistCp ツールを使用して、HDFS から OSS-HDFS にデータを移行できます。 OSS-HDFS は Hadoop エコシステムと互換性があります。 HDFS から OSS-HDFS にデータを移行した後、Hadoop エコシステムのさまざまなツールやフレームワークを使用して、データを処理および分析できます。

前提条件

  • Alibaba Cloud EMR-5.6.0 以降のバージョンのクラスタ、または EMR-3.40.0 以降のバージョンのクラスタが作成されていること。 詳細については、「クラスタの作成」をご参照ください。

  • Hadoop 2.7.0 以降または Hadoop 3.x の環境が、セルフマネージド Elastic Compute Service (ECS) クラスタに準備されていること。 クラスタは MapReduce ジョブを実行できる必要があります。 ECS クラスタで移行を完了する前に、JindoData を自分でデプロイする必要があります。 JindoData には、JindoSDK と JindoFSx が含まれています。 最新バージョンをダウンロードすることをお勧めします。

  • バケットに対して OSS-HDFS が有効になっており、OSS-HDFS にアクセスするための権限が付与されていること。 詳細については、「OSS-HDFS の有効化」をご参照ください。

背景情報

Jindo DistCp を使用して、大規模クラスタ内または大規模クラスタ間でファイルをコピーできます。 Jindo DistCp は MapReduce を使用してファイルを配布し、エラーを処理し、データを復元します。 ファイルとディレクトリのリストは、MapReduce タスクの入力として使用されます。 各タスクは、入力リスト内の特定のファイルとディレクトリをコピーします。 Jindo DistCp は、HDFS 内のディレクトリ間、HDFS と Object Storage Service (OSS) 間、HDFS と OSS-HDFS 間、および OSS-HDFS 内のバケット間での完全なデータコピーをサポートしています。 また、Jindo DistCp は、さまざまなカスタムコピーパラメータとコピーポリシーも提供します。

Jindo DistCp には、次の利点があります。

  • 高効率。 Jindo DistCp のデータ移行速度は、Hadoop DistCp の 1.59 倍です。

  • 豊富な基本機能。 Jindo DistCp は、複数のコピー方法と、さまざまなシナリオベースの最適化ポリシーを提供します。

  • OSS との緊密な統合。 Jindo DistCp は OSS の機能を活用しているため、データの圧縮やデータストレージタイプのアーカイブへの変換など、データに対してさまざまな操作を実行できます。

  • ファイル名を変更せずにファイルをコピー。 これにより、データの整合性が確保されます。

  • 高い互換性。 Jindo DistCp はさまざまなシナリオに適用でき、Hadoop DistCp の代わりに使用できます。 Jindo DistCp は、Hadoop 2.7.x および Hadoop 3.x をサポートしています。

手順

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

    1. EMR コンソールにログインします。 左側のナビゲーションウィンドウで、EMR on ECS をクリックします。

    2. 作成した EMR クラスタをクリックします。

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

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

      SSH キーペアまたは SSH パスワードを使用して Windows または Linux のクラスタにログインする方法の詳細については、「クラスタへのログイン」をご参照ください。

  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. EMR クラスタに自動的にデプロイされている jindo-distcp-tool のバージョンを表示します。

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

      完全データの移行またはコピー

      /tmp などの HDFS の指定されたディレクトリ内のデータを、oss://examplebucket/dir などの宛先 OSS-HDFS パスに移行またはコピーします。 このトピックの例では、jindo-distcp-tool-6.1.0.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 ペア。 AccessKey ペアは、AccessKey ID と AccessKey シークレットで構成されます。

      • AccessKey ID

        LTAI************************ 
      • AccessKey シークレット

        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 の使用」をご参照ください。