このトピックでは、Alibaba Cloud Jindo DistCpを使用して、OSS-HDFS内の複数のバケット間でデータを移行する方法について説明します。
前提条件
Alibaba Cloud EMR-5.6.0以降のバージョンのクラスター、またはEMR-3.40.0以降のバージョンのクラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。
自己管理型ECS (Elastic Compute Service) クラスターにHadoop 2.7.0以降またはHadoop 3.xの環境が用意されています。 クラスターはMapReduceジョブを実行できる必要があります。 ECSクラスターでの移行を完了する前に、JindoDataを自分でデプロイする必要があります。 JindoDataは、JindoSDKおよびJindoFSxを含む。 最新バージョンをダウンロードすることを推奨します。
バケットのOSS-HDFSが有効になり、OSS-HDFSにアクセスする権限が付与されます。 詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。
背景情報
Jindo DistCpを使用して、大規模なクラスター内またはクラスター間でファイルをコピーできます。 Jindo DistCpは、MapReduceを使用してファイルの配布、エラーの処理、データの復元を行います。 ファイルとディレクトリのリストは、MapReduceタスクの入力として使用されます。 各タスクは、入力リスト内の特定のファイルとディレクトリをコピーします。 Jindo DistCpは、HDFS内のディレクトリ間、HDFSとOSS (Object Storage Service) 間、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: Jindo DistCpのJARパッケージをダウンロードする
手順2: OSS-HDFSへのアクセスに使用するAccessKeyペアの設定
次のいずれかの方法を使用して、OSS-HDFSへのアクセスに使用するAccessKeyペアを設定できます。
サンプルコマンドを使用してAccessKeyペアを設定する
hadoop jar jindo-distcp-tool-${version}.jar -- src oss:// srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- dest oss:// destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- hadoopConf fs.oss.accessKeyId=yourkey -- hadoopConf fs.oss.accessKeySecret=yoursecret-並列処理10
設定ファイルを使用してAccessKeyペアを設定する
Hadoopのcore-site.xmlファイルにfs.oss.accessKeyIdとfs.oss.accessKeySecretを指定して、OSS-HDFSへのアクセスに使用するAccessKeyペアを設定します。 サンプルコマンド:
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>LTAI ********</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>KZo1 ********</value> </property> </configuration>
手順3: OSS-HDFSのエンドポイントを設定する
OSS-HDFSを使用してOSSのバケットにアクセスする場合は、OSS-HDFSのエンドポイントを設定する必要があります。 アクセスパスは、oss://<Bucket>.<Endpoint>/<Object>
形式で指定することを推奨します。 例: oss:// examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt
アクセスパスを設定した後、JindoSDKはアクセスパスで指定されたエンドポイントに基づいて対応するOSS-HDFS操作を呼び出します。
他の方法を使用してOSS-HDFSのエンドポイントを設定することもできます。 異なる方法を使用して構成されたエンドポイントの優先度は異なります。 詳細については、「付録1: OSS-HDFSのエンドポイントの設定に使用されるその他の方法」をご参照ください。
ステップ4: OSS-HDFSの複数のバケット間で完全なデータを移行する
この例では、Jindo DistCp 4.4.0が使用される。 バージョン番号を実際のバージョン番号に置き換えます。
同じAccessKeyペアを使用して、同じリージョンのバケットAからバケットBにデータを移行する
コマンド構文
hadoop jar jindo-distcp-tool-${version}.jar -- src oss:// bucketname.region.oss-dls.aliyuncs.com/ -- dest oss:// bucketname.region.oss-dls.aliyuncs.com/ -- hadoopConf fs.oss.accessKeyId=yourkey -- hadoopConf fs.oss.accessKeySecret=yoursecret-並列処理10
次の表に、上記のコマンドのパラメーターとオプションを示します。
パラメータ /オプション
説明
例
-- src
データの移行またはコピー元のOSS-HDFSでのソースバケットのフルパス。
oss:// srcbucket.cn-hangzhou.oss-dls.aliyuncs.com /
-dest
移行またはコピーされたデータが保存されるOSS-HDFSの宛先バケットのフルパス。
oss:// destbucket.cn-hangzhou.oss-dls.aliyuncs.com /
-- hadoopConf
OSS-HDFSへのアクセスに使用されるAccessKeyペア。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
AccessKey ID
LTAI ********
AccessKey Secret
KZo1 ********
-- 並列処理
クラスター内のリソース数に基づいて、並列に実行できるデータ移行タスクまたはデータコピータスクの数。
10
例:
次のコマンドを実行して、同じAccessKeyペアを使用して中国 (杭州) リージョンのsrcbucketからdestbucketにデータを移行します。
hadoop jar jindo-distcp-tool-4.4.0.jar -- src oss:// srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- dest oss:// destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- hadoopConf fs.oss.accessKeyId=LTAI ******** -- hadoopConf fs.oss.accessKeySecret=KZo1 *********-並列処理10
(オプション) OSS-HDFS内の複数のバケット間で増分データを移行する
完全なデータ移行またはコピー後に、ソースパスから増分データのみを移行またはコピーする場合は、-- updateオプションを使用できます。
たとえば、次のコマンドを実行して、同じAccessKeyペアを使用して、中国 (杭州) リージョンのsrcbucketからdestbucketに増分データを移行できます。
hadoop jar jindo-distcp-tool-4.4.0.jar -- src oss:// srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- dest oss:// destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ -- hadoopConf fs.oss.accessKeyId=LTAI ******** -- hadoopConf fs.oss.accessKeySecret=KZo1 *********-更新-並列性10
参考資料
Jindo DistCpの他のシナリオの詳細については、「Jindo DistCpの使用」をご参照ください。