閱讀293 返回首頁    go 阿裏雲 go 技術社區[雲棲]


一個助Hadoop集群數據快速上雲工具

背景

越來越多的公司和企業希望將業務遷移到雲上,同時業務數據也希望能更順暢的遷移到雲上。

當前業界有很多公司是以Hadoop技術構建數據中心,所以本文將探討如何快速的將Hadoop文件係統(HDFS)上的數據遷移到雲上。

在阿裏雲上使用最廣泛的存儲服務是OSS對象存儲。OSS的數據遷移工具ossimport2可以將您本地或第三方雲存儲服務上的文件同步到OSS上,但這是一個單機版的程序,無法發揮Hadoop分布式的特點。並且因為工具隻支持本地文件,所以需要將HDFS上的文件先下載到本地,再通過工具上傳,整個過程耗時又耗力。

工具介紹

本文介紹一個從Hadoop集群直接遷移數據到OSS上的工具,該工具由阿裏雲E-MapReduce團隊開發,基於Hadoop社區中常用的DistCp工具,並從E-MapReduce產品中剝離出了一個常見的功能,做成工具開放給全體阿裏雲客戶使用。

1) 下載和安裝:
下載附件中的emr-tools.tar.gz工具,並解壓縮到本地目錄:
tar jxf emr-tools.tar.bz2

2) HDFS數據複製到OSS上:
cd emr-tools
./hdfs2oss4emr.sh /path/on/hdfs oss://accessKeyId:accessKeySecret@bucket-name.oss-cn-hangzhou.aliyuncs.com/path/on/oss

其中accessKeyId和accessKeySecret是你訪問阿裏雲API(包括OSS等雲產品)的密鑰,bucket-name.oss-cn-hangzhou.aliyuncs.com是OSS的訪問域名,包括bucket名稱和所在Region的endpoint地址。如果參數都正確,則會啟動一個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 !!!

作業完成後,可以用osscmd等工具查看OSS上數據情況:

osscmd ls oss://bucket-name/path/on/oss

3) OSS數據複製到HDFS:
同樣的,如果已經在阿裏雲上搭建了Hadoop集群,可以方便的把數據從OSS上遷移到新的Hadoop集群

./hdfs2oss4emr.sh oss://accessKeyId:accessKeySecret@bucket-name.oss-cn-hangzhou.aliyuncs.com/path/on/oss /path/on/new-hdfs

4) 其他說明:
這個工具同時兼容Hadoop 2.4.x、2.5.x、2.6.x、2.7.x等版本,如果有其他Hadoop版本兼容性的需求,可以直接聯係我們。

更多使用場景

除了線下的集群,阿裏雲ECS上搭建的Hadoop集群也可以用這個工具,借助它可以很方便的將自建集群遷移到阿裏雲E-MapReduce服務上。E-MapReduce是由阿裏雲專業的大數據團隊提供的Hadoop/Spark服務,提供了包括集群管理、作業管理、Hive表管理、監控報警等豐富的功能,將客戶從繁瑣的Hadoop集群運維工作中解放出來。當前阿裏雲E-MapReduce服務在ECS機器費用之外並沒有額外收費,可以直接創建集群使用。

如果你現有集群已經在阿裏雲上ECS上,但是在經典網絡中,無法和VPC中的服務做很好的互操作,所以想把集群遷移到VPC中。此時,你可以先用本工具遷移數據到OSS上,然後需在VPC環境中新建一個集群(自建或使用E-MapReduce服務),再將數據從OSS上遷移到新的HDFS集群中。

如果你使用E-MapReduce服務,還可以直接在Hadoop集群中通過SparkMapReduceHive等組件訪問OSS,這樣不僅可以減少一次數據複製(從OSS到HDFS),還可以極大的降低存儲成本(詳見雲棲社區博客

最後更新:2017-05-05 09:31:12

  上一篇:go Java程序員實現月薪2萬需要具備哪些技能?
  下一篇:go 致敬五四精神 十大“新青年誌願者之星”出爐