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以降のバージョンのクラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。
自己管理型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をサポートしています。
手順
EMRクラスターにログインします。
EMRコンソールにログインします。 左側のナビゲーションウィンドウで、[ECS上のEMR] をクリックします。
作成したEMRクラスターをクリックします。
[ノード] タブをクリックし、ノードグループの左側にあるアイコンをクリックします。
ECSインスタンスのIDをクリックします。 [インスタンス] ページで、インスタンスIDの横にある [接続] をクリックします。
SSHキーペアまたはSSHパスワードを使用してWindowsまたはLinuxでクラスターにログインする方法の詳細については、「クラスターにログインする」をご参照ください。
HDFSの指定されたパスからOSS-HDFSにデータを移行します。
次のコマンドを実行して、HDFSのデータを表示します。
hdfs dfs -ls /
レスポンス例:
は8アイテムを見つけました drwxrwxrwx - admin supergroup 0 2023-10-26 10:55 /.sysinfo drwxrwxrwx - hadoop supergroup 0 2023-10-26 10:55 /アプリ drwxrwxrwx - root supergroup 0 2022-08-03 15:54 /データ -rw-r ----- 1ルートスーパーグループ13 2022-08-25 11:45 /examplefile.txt drwxrwxrwx - spark supergroup 0 2023-10-26 14:49 /spark-history drwx-wx-wx - hiveスーパーグループ0 2023-10-26 13:35 /tmp drwxrwxrwx - hive supergroup 0 2023-10-26 14:48 /ユーザー drwxrwxrwx - hadoop supergroup 0 2023-10-26 14:48 /yarn
jindo-distcp-tool-${version}.jarパッケージがあるディレクトリに切り替えます。
cd /opt/apps/JINDOSDK/jindosdk-current/tools
EMRクラスターに自動的にデプロイされるjindo-distcp-toolのバージョンを表示します。
ls
HDFSからOSS-HDFSにデータを移行する。
完全なデータの移行またはコピー
HDFSの指定されたディレクトリ (/tmpなど) にあるデータを、宛先OSS-HDFSパス (oss:// examplebucket/dirなど) に移行またはコピーします。 このトピックの例では、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=LTAI5t7h6SgiLSganP2m **** -- hadoopConf fs.oss.accessKeySecret=KZo149BD9GLPNiDIEmdQ7dyNKG **** -- 並列処理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
LTAI5t7h6SgiLSganP2m ****
AccessKey Secret
KZo149BD9GLPNiDIEmdQ7dyNKG ****
-- 並列処理
クラスター内のリソース数に基づいて同時に実行できるデータ移行スレッドまたはデータコピースレッドの数。
10
増分データの移行またはコピー
完全なデータ移行またはコピー後に、ソースパスから増分データのみを移行またはコピーする場合は、-- updateオプションを使用できます。
次のサンプルコードは、HDFSのdata /からHDFSのoss:// destbucket/dirに増分データを移行またはコピーする方法を示しOSS-HDFS。
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=LTAI5t7h6SgiLSganP2m **** -- hadoopConf fs.oss.accessKeySecret=KZo149BD9GLPNiDIEmdQ7dyNKG **** -- update -- parallelism 10
参考資料
移行コマンドを実行するたびにエンドポイントとAccessKeyのペアを手動で追加しない場合は、Hadoop設定ファイルcore-site.xmlでエンドポイントとAccessKeyのペアを事前設定できます。 詳細については、「非EMRクラスターのOSS-HDFSへの接続」をご参照ください。
Jindo DistCpの他の使用シナリオの詳細については、「Jindo DistCpの使用」をご参照ください。