背景
現在、多くのデータセンターは Hadoop を使用して構築されており、その結果、サービスをクラウドに円滑に移行することを望む企業が増えています。
Object Storage Service (OSS) は、Alibaba Cloud で最も広く使われているストレージサービスです。 OSS データ移行ツール ossimport2 を使用すると、ローカルデバイスまたはサードパーティーのクラウドストレージサービスから OSS にファイルを同期できます。 ただし、ossimport2 は Hadoop ファイルシステムからデータを読み取ることができません。 その結果、Hadoop の分散構造を十分に活用できなくなります。 また、このツールはローカルファイルのみをサポートしています。 したがって、最初に Hadoop ファイルシステム (HDFS) からローカルデバイスにファイルをダウンロードしてから、ツールを使用してそれらをアップロードする必要があります。 このプロセスは多くの時間とエネルギーを消費します。
この問題を解決するために、Alibaba Cloud の E-MapReduce チームは Hadoop データ移行ツール emr-toolsを開発しました。 このツールを使用すると、Hadoop から直接 OSS にデータを移行できます。
この章では、HDFS から OSS にデータを迅速に移行する方法を紹介します。
前提条件
現在のマシンが Hadoop クラスターにアクセスできることをご確認ください。 Hadoop コマンドを使用して HDFS にアクセスできる必要があります。
hadoop fs -ls /
Hadoop データを OSS へ移行
- emr-tools をダウンロードします。
注 emr-tools は Hadoop バージョン2.4.x、2.5.x、2.6.x、および 2.7.x と互換性があります。他の Hadoop バージョンとの互換性が必要な場合は、チケットを起票しサポートセンターにお問い合わせください。
- 圧縮ツールをローカルディレクトリに解凍します。
tar jxf emr-tools.tar.bz2
- HDFS データを OSS にコピーします。
cd emr-tools ./hdfs2oss4emr.sh /path/on/hdfs oss://accessKeyId:accessKeySecret@bucket-name.oss-cn-hangzhou.aliyuncs.com/path/on/oss
関連するパラメーターは次のように記述されます。
パラメーター 説明 accessKeyId OSS API にアクセスするために使用されるキー。 詳しくは、「AccessKeyIdとAccessKeySecretの取得方法」をご参照ください。
accessKeySecret bucket-name.oss-cn-hangzhou.aliyuncs.com バケット名とエンドポイントアドレスを含む OSS アクセスドメイン名。 システムは Hadoop MapReduce タスク (DistCp) を有効にします。
- タスクが完了すると、ローカルデータ移行情報が表示されます。この情報は、次の例のようになります。
17/05/04 22:35:08 INFO mapreduce.Job: Job job_1493800598643_0009 completed successfully 17/05/04 22:35:08 INFO mapreduce.Job: Counters: 38 File System Counters FILE: Number of bytes read=0 FILE: Number of bytes written=859530 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=263114 HDFS: Number of bytes written=0 HDFS: Number of read operations=70 HDFS: Number of large read operations=0 HDFS: Number of write operations=14 OSS: Number of bytes read=0 OSS: Number of bytes written=258660 OSS: Number of read operations=0 OSS: Number of large read operations=0 OSS: Number of write operations=0 Job Counters Launched map tasks=7 Other local map tasks=7 Total time spent by all maps in occupied slots (ms)=60020 Total time spent by all reduces in occupied slots (ms)=0 Total time spent by all map tasks (ms)=30010 Total vcore-milliseconds taken by all map tasks=30010 Total megabyte-milliseconds taken by all map tasks=45015000 Map-Reduce Framework Map input records=10 Map output records=0 Input split bytes=952 Spilled Records=0 Failed Shuffles=0 Merged Map outputs=0 GC time elapsed (ms)=542 CPU time spent (ms)=14290 Physical memory (bytes) snapshot=1562365952 Virtual memory (bytes) snapshot=17317421056 Total committed heap usage (bytes)=1167589376 File Input Format Counters Bytes Read=3502 File Output Format Counters Bytes Written=0 org.apache.hadoop.tools.mapred.CopyMapper$Counter BYTESCOPIED=258660 BYTESEXPECTED=258660 COPY=10 copy from /path/on/hdfs to oss://accessKeyId:accessKeySecret@bucket-name.oss-cn-hangzhou.aliyuncs.com/path/on/oss does succeed !!!
- OSS データに関する情報を表示するには、osscmd を使用します。
osscmd ls oss://bucket-name/path/on/oss
OSS データを Hadoop に移行
Alibaba Cloud 上に Hadoop クラスターを既に作成している場合は、次のコマンドを使用して OSS から新しい Hadoop クラスターにデータを移行します。
./hdfs2oss4emr.sh oss://accessKeyId:accessKeySecret@bucket-name.oss-cn-hangzhou.aliyuncs.com/path/on/oss /path/on/new-hdfs
詳細なシナリオ
オフラインクラスターに加えて、ECS 上に構築された Hadoop クラスターに emr-tools を使用することもできます。 これにより、自己構築クラスターをE-MapReduceサービスにすばやく移行できます。
クラスターがすでに ECS 上にあって、従来のネットワーク内にある場合は、Virtual Private Cloud (VPC) のサービスとの良好な相互運用性は得られません。 この場合は、クラスターを VPC インスタンスに移行します。 クラスターを移行するには、次の手順に従います。
- emr-tools を使用してデータを OSS に移行します。
- VPC 環境で新しいクラスターを作成します (自分で作成するか E-MapReduce を使用します)。
- OSS から新しい HDFS クラスターにデータを移行します。
Hadoop クラスターで E-MapReduce を使用する場合は、Spark、MapReduce、およびHiveを使用し、 OSS に直接アクセスします。 これにより、1 回のデータコピー操作 (OSS から HDFS へ) が回避されるだけでなく、ストレージコストも大幅に削減されます。コスト削減の詳細については、「EMR+OSS:Separated storage and computing」をご参照ください。