你好,游客 登录
背景:
阅读新闻

一个助Hadoop集群数据快速上云工具

[日期:2017-05-05] 来源:云栖团队博客  作者: [字体: ]

背景

越来越多的公司和企业希望将业务迁移到云上,同时业务数据也希望能更顺畅的迁移到云上。

当前业界有很多公司是以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: [email protected] /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: [email protected] /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: [email protected] /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集群中通过Spark、 MapReduce 、Hive等组件访问OSS,这样不仅可以减少一次数据复制(从OSS到HDFS),还可以极大的降低存储成本(详见云栖社区博客)





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款