前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈MySQL到HBase数据迁移多种策略

谈谈MySQL到HBase数据迁移多种策略

作者头像
公众号guangcity
发布2019-09-20 17:26:46
1.3K0
发布2019-09-20 17:26:46
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

《数据迁移》

漫步于数据的海洋

在实验中静静感受这些数据迁移的魅力

动手所到之处

都是一段代码

与终端交织而成的盛宴

by 光城

前面文章写了MySQL的插入,亿级数据的快速插入方法,以及MySQL入库HBase的策略方案。

本节则是在上述基础上做的更加高端的一部。同时对MySQL入库HBase做一个总结。

回顾之前,先给大家放一个我的总体框架图:

1

初出茅庐

初出茅庐

使用Sqoop,直接将MySQL同步HBase,天真啊,一个Sqoop能搞定?好用?

经过我的实践证明,小数据完全没问题,那这个成亿数据,就问题大了去了,很多人用这个根本完成不了这个需求,不过我完成了。

怎么做的呢?

如果直接输入Sqoop命令去导入,经过一段时间,就卡了,根本无法全部导入完毕,于是乎,分片导入思想诞生了,写个bash脚本,放在服务器或者自己机器上跑即可。

怎么分片?

这个就是所谓的1亿数据的分开插入,每次只针对一小部分数据使用Sqoop,做个循环,直到这一亿数据导入完,那新的问题又来。

速度如何保证?

如果分片,速度自然无法保证,这虽然完成了上述的需求,但是导入完毕的效率非常低,当时导入1.8亿条耗时70多个小时,大家可以看到效率多么低了吧,有没有解决办法?

当然有,接下来进入,第二个方案。

2

小有成就

小有成就

在使用Sqoop后,binlog与kafka大吼一声,我来也,对没错,第二个思路就是,使用maxwell提取binlog的增删改查操作,然后发送到kafka的监听的topic上,再通过Python的pykafka库对数据进行消费,利用thrift接口进行sink,也就是存入数据库,哈哈,听了这么多,我都晕死了。

那速度如何呢?

这个速度当然快了啊,如果使用Python操纵HBase单条插入,那就非常慢了,但是比上述的要快,是不是还有批量插入呢,没错,里面有个批量插入,直接可以实现2-3秒的2万数据导入,实现高效率导入,这个最终耗时可从原来的70多个小时到7个小时左右,直接提高了10倍!

生命不息,奋斗不止;

速度不够,不断调整。

3

游刃有余

游刃有余

接着我们来到了第三个方案,那就是Kafka-Flink,这个简直非常好的一个思路,上述方案二提供了Python入库,那么对于大数据来说,更多的是使用Java,于是就查资料,学习,就get到Flink这个点子上了,这个同步过程实际上就是ETL,算是数据仓库的一部分吧,上游的数据经过Flink做各种计算,过滤,再到下游,进行业务处理,那这个就是标准的数据仓库作业。

对于方案三,详细阐述一下,前面不变,依旧使用maxwell提取binlog,后面使用kafka消费后,通过Flink进行sink到HBase,Flink在这个中间起到一个过滤、map、求和等等的操作,我们可以通过Flink按照自己给定的时间来进行数据的sink,最后数据就抵达了下游,从MySQL真正实时同步到HBase。

那么问题来了,效率呢?

当然快的可怕,1s至少1w的速度,你们觉得1亿数据得多快。

漫步于数据的海洋

在实验中静静感受这些数据迁移的魅力

动手所到之处

都是一段代码

与终端交织而成的盛宴

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档