传统数据库RDBMS到大数据平台HDFS的数据同步方法

目前常用的传统RDBMS到HDFS的数据同步工具有三种:Sqoop(Apache),DataX(阿里云开源的离线同步工具),Kettle(pentaho)。

数据同步过程中,需要关注以下规则及技术点[1]:

1. 无论运行多少次,HDFS中的操作都应该产生相同的结果。

2. 在将数据移入HDFS之前,须将其汇总,以便MapReduce程序使用最少量的内存进行转换,特别是在namenode上。

3. 将数据移入HDFS之前,请将其从一种格式转换为另一种适用于目标系统的格式。

4. 实现故障切换,以便在失败时再次尝试操作,例如某个节点不可用。

5. 验证数据在网络传输时是否已损坏。

6. 控制所使用的并行数量,并限制运行的MapReduce程序的数量。 这两个功能都会影响资源消耗和性能。

7. 监控您的操作以确保其成功并产生预期的结果。

数据同步的一般流程如下[2]:

1. 将源数据库数据进行导出,使用Sql或DB原生的导出命令直接导出为txt等文本文件,字段以分隔符进行分隔。

1.1 可以部署多个代理端,对数据库数据启用多个线程进行导出

1.2 支持基于key值或时间戳的增量数据导出

2. 对导出的数据进行压缩后进行传输(特别是在源和目标库不在同一个数据中心时)

3. 在目标库端基于数据库原生的load命令对数据进行bulk批量导入。

Sqoop:

Sqoop的一个特点就是可以通过hadoop的mapreduce把数据从RDBMS导入数据到HDFS。[4]

使用Sqoop进行数据同步的大致流程如下[3,4,5]:

1.读取要导入数据的表结构,生成运行类,默认是QueryResult,打成jar包,然后提交给Hadoop。

2.设置好job,主要也就是设置好各个参数。

3.由Hadoop来执行MapReduce,执行Import命令,

1)首先要对数据进行切分,也就是DataSplit

2)切分好范围后,写入范围,以便读取

3)读取以上2)写入的范围,

4)然后创建RecordReader从数据库中读取数据

5)创建Map

6)RecordReader一行一行从关系型数据库中读取数据,设置好Map的Key和Value,交给Map

7)运行map

Sqoop验证数据同步效果有3个基本接口,通过导入导出数据结果的行数进行验证。[6]

1. ValidationThreshold - 确定源和目标之间的误差容限是否可以接受:绝对值,百分比容差等。默认实现为AbsoluteValidationThreshold,可确保源和目标的行计数相同。

2. ValidationFailureHandler - 负责处理故障:记录错误/警告,中止等。默认实现是LogOnFailureHandler,它向配置的记录器记录一条警告消息。

3. Validator - 通过将决策委托给ValidationThreshold并将故障处理委托给ValidationFailureHandler来驱动验证逻辑。默认实现是RowCountValidator,它验证源和目标的行计数。

DataX:

DataX框架如下:[7]

核心模块介绍:

1 DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。

2 DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。

3 切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。

4 每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。

5 DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0

DataX调度流程:

举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。 DataX的调度决策思路是:

1 DataXJob根据分库分表切分成了100个Task。

2 根据20个并发,DataX计算共需要分配4个TaskGroup。

3 4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。

Kettle[8]:

使用Kettle导入文件到HDFS流程:

启动Kettle,新建Job。

添加Start主键。

添加Hadoop Copy Files主键。

将上面两个主键连接起来。

编辑Copy Files主键。

保存Job。

7.  运行Job。

其它:

Sqoop与DataX的比较:

https://chu888chu888.gitbooks.io/hadoopstudy/content/Content/9/datax/datax.html

参考:

https://www.ibm.com/developerworks/library/ba-hadoop-rdbms/index.html

http://blog.sina.com.cn/s/blog_493a84550102w83v.html

http://宋亚飞.中国/post/145

https://www.zybuluo.com/sasaki/note/272640

https://docs.qingcloud.com/guide/sqoop.html

http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_introduction_2

https://github.com/alibaba/DataX/wiki/DataX-Introduction

http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容