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 をサポートしています。
手順
EMR クラスタにログインします。
EMR コンソールにログインします。 左側のナビゲーションウィンドウで、EMR on ECS をクリックします。
作成した EMR クラスタをクリックします。
[ノード] タブをクリックし、ノードグループの左側にある
アイコンをクリックします。ECS インスタンスの ID をクリックします。 [インスタンス] ページで、インスタンス ID の横にある [接続] をクリックします。
SSH キーペアまたは SSH パスワードを使用して Windows または Linux のクラスタにログインする方法の詳細については、「クラスタへのログイン」をご参照ください。
HDFS の指定されたパスから OSS-HDFS にデータを移行します。
次のコマンドを実行して、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 /yarnjindo-distcp-tool-${version}.jar パッケージが配置されているディレクトリに切り替えます。
cd /opt/apps/JINDOSDK/jindosdk-current/toolsEMR クラスタに自動的にデプロイされている jindo-distcp-tool のバージョンを表示します。
lsHDFS から 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 の使用」をご参照ください。