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 の代替として使用できます。
操作手順
-
EMR クラスターにログインします。
-
EMR on ECS コンソールにログインします。
-
対象の EMR クラスターの名前をクリックします。
-
Nodes タブをクリックし、ノードグループの左側にある
アイコンをクリックします。 -
ECS ID をクリックします。ECS インスタンスページで、インスタンス ID の横にある 接続 をクリックします。
SSH を使用して接続する方法については、「クラスターへのログイン」をご参照ください。
-
-
指定した 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 /yarn -
jindo-distcp-tool-${version}.jar パッケージが格納されているディレクトリに移動します。
cd /opt/apps/JINDOSDK/jindosdk-current/tools -
クラスターに自動デプロイされた Jindo DistCp ツールのバージョンを確認します。
ls -
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 使用ガイド」をご参照ください。