内容来源:2018 年 09 月 08 日,宜信大数据技术专家卢山巍在“2018开源数据库论坛暨首届MariaDB中国用户者大会”进行《敏捷大数据实践与开源赋能》演讲分享。IT 大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。mysql
阅读字数:2520 | 7分钟阅读sql
本次演讲主要分享敏捷大数据的相关实践。数据库
DBus(数据总线平台)是一个DBaaS平台解决方案,它主要面向大数据项目开发和管理运维人员,致力于提供数据实时采集和分发解决方案。缓存
平台采用高可用流式计算框架,提供海量数据实时传输,可靠多路消息订阅分发。经过简单灵活的配置,实现无侵入接入源端数据,对各个IT系统在业务流程中产生的数据进行聚集,并统一处理转换成经过JSON描述的UMS格式,提供给不一样下游客户订阅和消费。安全
上图为dbus的模块架构以及模块之间的分工和数据流转。就拿mysql为例,咱们会先从MySQL备库binlog中接入日志抽取模块,由它监控日志变动并实时抽取出来,通过处理以后再落到kafka上,后面链接的分发预处理模块会根据schema对数据进行分类,最后经过流式转换模块进行数据的清洗,好比将不一样的数据格式转换成ums。架构
Slave用来拉取初始的全量或者平常数据补充,先由分片模块决定如何分片,具体分片工做在kafka上,后面的全量拉取模块会真正从Slave拉取数据。app
心跳模块会定时给Master发送心跳,心跳数据会经由binlog流出,这样即便下游长时间未收到上游数据,也可以判断当前状况,知道dbus有没有出现问题。框架
最后的多租户分发模块主要是出于安全考虑,保证不一样部门间的数据隔离。运维
在讨论ums以前,咱们首先要讲下schema evolution。大多数公司出于业务考虑,其上游元数据会频繁变动,所以须要在变动以前通知或者人为干预。而dbus支持系统层面的自动检测,拥有schema模式演变的能力,任何关系型表均可以用ums的格式表示(如上图)。分布式
schema模式演变由dbus提供元数据查询服务,ums消息元数据自描述及解析去中心化,支持元数据变动版本号,线下支持非兼容性变动,能够解耦逻辑表与物理Topic,经过payload下降元数据overhead。
Wormhole(流式处理平台),是一个SPaaS平台解决方案,提供数据流式处理解决方案。专一简化和统一开发管理流程,并提供可视化界面,以及基于配置和SQL的业务开发方式。它屏蔽了底层技术实现细节,很大程度上下降了开发门槛,使得大数据流式处理项目的开发和管理变得更加轻量敏捷、可控可靠。
Wormhole设计核心在于概念抽象和flow能力,Wormhole Stream能够看做是一个Spark Stream。咱们都知道Spark Stream的特色在于会占用固定资源,不管负载状况如何,并且从头至尾只能作一件事情,若是要导多张表就要建多个Spark Stream。
而咱们从物理的Wormhole Stream中抽象出了逻辑的Wormhole flow概念,使得一个管道能够同时接收多个源的数据。
上图为wormhole Stream的内部状况,包含一个Driver和多个Executors,flow会实时感应zk指令并动态生效,无需重启stream,还可根据zk配置动态加载topic。
Wormhole stream的幂等Sink实现,主要是经过id判断是否写入,再由op决定写入方式,写入以前尽可能合并行快照,写入的时候采用批量处理,并支持乱序数据最终一致。
Flow漂移是另外一个很是有用的功能,能够控制flow从一个stream中漂移到另外一个stream中,并自动调整合适的offset,为自动化运维提供服务。
Moonbox是一个DaaS平台解决方案,面向群体为数据仓库工程师、数据分析师、数据科学家等,提供数据虚拟化解决方案。便可做为数据应用层数据查询计算统一入口,也可做为逻辑数据仓库与现有数据仓库互补。用户只须要经过统一SQL服务调用和Moonbox交互,便可透明屏蔽异构数据系统异构交互方式,轻松实现跨异构数据系统透明混算。
上图为moonbox的模块架构,能够看到它是分布式高可用的,并基于spark得到了计算能力。不过Spark虽然可以接各类数据源,可是算子下推的能力有限,limit、group by、join等都不支持,moonbox则弥补了这个问题。
Davinci做为可视化应用平台,提供了一站式可视化的解决方案。便可做为公有云/私有云独立部署使用,也可做为可视化插件集成到三方系统。用户只需在可视化UI上简单配置便可服务多种数据可视化应用,并支持高级交互、行业分析、模式探索、社交智能等可视化功能。
整体架构
上图为实时报表实现流程,首先经过dbus加wormhole将数据实时同步到关系型数据库或者在分布式存储,并为了进一步下降自助门槛,流上没有设置转换逻辑。
数据量小时能够sink到关系数据库并直接展现,数据量大时sink到分布式存储,维护实时快照(ODS)。而后利用moonbox进行查询混算并提供给展现段,为提升性能能够定时预算并缓存。最后经过zeppelin进行报表开发,使用davinci进行报表展现和应用。
实时数据应用会接纳更多数据源类型数据,为提升实时应用的数据时效性,能够在wormhole上配置流上处理逻辑,将增量数据以append方式落入到分布式存储。UbiLog能够用来backfill wormhole以修复问题数据或逻辑,也能够做为数据表的历史数据来源。
经过dbus加wormhole将数据源实时同步到ODS和UbiLog,这样就具有了全部最新快照数据和全部最新历史数据。以backfil确保ODS的最终一致性,对OLAP系统的支持知足了实时统计分析类的需求。
数据分层架构均创建在moonbox里,全部数据访问都要经过moonbox接入,所以moonbox会自动维护全部元数据信息和全部查询SQL逻辑,能够基于此创建元数据管理、血缘分析、数据质量等系统。
数据可能因各类缘由散落在不一样存储中,但这对于数据分析人员和数据科学家来讲没必要在乎,它们只需经过moonbox提供的统一SQL来透明操做全部须要的数据,便可在安全管控下进行只有分析和探索。
用户还可使用moonbox方便的将感兴趣的数据导入私人分析沙箱,以确保和其余互不影响。
以上为所有分享内容,谢谢你们!