MYSQL/Oracles数据通过SKL实时和批量同步到hive数据仓库


Jan 15, 2019

背景


在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB)两类。对于业务DB数据来说,从MySQL等关系型数据库的业务数据进行采集,然后导入到Hive中,是进行数据仓库生产的重要环节。


如何准确、高效地把MySQL数据同步到Hive中?一般常用的解决方案是批量取数并Load:直连MySQL去Select表中的数据,然后存到本地文件作为中间存储,最后把文件Load到Hive表中。这种方案的优点是实现简单,但是随着业务的发展,缺点也逐渐暴露出来:


l 性能瓶颈:随着业务规模的增长,Select From MySQL -> Save to Localfile -> Load to Hive这种数据流花费的时间越来越长,无法满足下游数仓生产的时间要求。


l 直接从MySQL中Select大量数据,对MySQL的影响非常大,容易造成慢查询,影响业务线上的正常服务。


l 由于Hive本身的语法不支持更新、删除等SQL原语,对于MySQL中发生Update/Delete的数据无法很好地进行支持。


为解决这一问题,东方金信开发了海盒数据接入与治理系统(SKL),用户可以用海盒数据接入与治理系统(SKL)直接从传统结构型数据库(oracle/mysql)中获取数据,并存入Hive中。


SKL定位于企业级的数据湖管理平台(Data Lake Platform),它是基于Spark和NiFi的开源数据湖编排框架,


解决对数据湖获取、治理、感知和技术支持等诸多问题。SKL 将数据湖的很多功能自动化,包括数据接入、准备、分析发现、Profiling 和管理等等。SKL 提供了符合业务分析人员思路的 GUI 界面以及 IT 运营和数据科学等模块。


通过 SKL 的 GUI 界面,业务人员可以按照他们关心的方式来操作数据,包括: 创建数 据源、定义数据加载、数据预处理、转换,发布到目标系统。因为不需要部署任何代码,也不需要依赖 IT 部门,业务人员做到了对项目的完全掌控,从而极大的减少了类似项目所需的时间。对于有技术能力的数据科学家、数据管家及 IT 运营人员来说,SKL 提供包括元数据管理、合适的数据加载及类似 Goolgle 的检索能力,可以为业务分析人员赋予不同的权限、提供随时可用的模板,帮助他们使用、监控并提升数据湖的服务 SLA。SKL的意义不止于此,因为它让技术人员和业务人员都能够操作大数据,填平了大数据技术与大数据使用之间的鸿沟。 业务人员可以更快的获得数据洞察,IT 人员则可以专注在工程及数据架构问题,而不是编写代码。


SKL的自有服务和依赖服务可以分开部署,也可以部署在一台服务器上。SKL既支持单机模式也可以集群方式。组网结构如下所示:


SKL与大数据系统的关系,在物理上,SKL既独立于源系统和目标系统,同时也与CDH/HDP Cluster相互独立。但SKL需要集成Hive、HDFS、Spark等的lib库,从而实现与大数据集群的通信。

SKL依赖NiFi实现数据流编排的能力,即SKL中对数据的处理依赖于NiFi中的模板,在工作中需要先在NiFi中完成模板定义,然后从NiFi中导出并导入到SKL中。下图SKL中导入数据模板:


查看任务

查看Hive数据:

作为数据仓库生产的基础,海盒大数据平台提供的数据接入与治理组件,基本覆盖了大数据的各个业务线,目前已经能够满足绝大部分业务的数据同步需求,实现DB数据准确、高效地入仓。海盒大数据平台也会不断突破更稳定前沿的技术支持业务的发展、方便开发人员的使用。