文 | 吕鹏 DataPipeline架构师
进入大数据时代,实时作业有着越来越重要的地位。本文将从以下几个部分进行讲解DataPipeline在大数据平台的实时数据流实践。
一、企业级数据面临的主要问题和挑战
1.数据量不断攀升
随着互联网+的蓬勃发展和用户规模的急剧扩张,企业数据量也在飞速增长,数据的量以GB为单位,逐渐的开始以TB/GB/PB/EB,甚至ZB/YB等。同时大数据也在不断深入到金融、零售、制造等行业,发挥着越来越大的作用。
2. 数据质量的要求不断地提升
当前比较流行的AI、数据建模,对数据质量要求高。尤其在金融领域,对于数据质量的要求是非常高的。
3. 数据平台架构的复杂化
企业级应用架构的变化随着企业规模而变。规模小的企业,用户少、数据量也小,可能只需一个MySQL就搞能搞;中型企业,随着业务量的上升,这时候可能需要让主库做OLTP,备库做OLAP;当企业进入规模化,数据量非常大,原有的OLTP可能已经不能满足了,这时候我们会做一些策略,来保证OLTP和OLAP隔离,业务系统和BI系统分开互不影响,但做了隔离后同时带来了一个新的困难,数据流的实时同步的需求,这时企业就需要一个可扩展、可靠的流式传输工具。
二、大数据平台上的实践案例
下图是一个典型的BI平台设计场景,以MySQL为例,DataPipeline是如何实现MySQL的SourceConnector。MySQL作为Source端时:
- 全量+ 增量;
- 全量:通过select 方式,将数据加载到kafka中;
- 增量:实时读取 binlog的方式;
使用binlog时需要注意开启row 模式并且image设置为 full。
1. MySQL SourceConnector 全量+增量实时同步的实现
下面是具体的实现流程图,首先开启repeatable read事务,保证在执行读锁之前的