大数据开发的至简之道 – 河图引擎
现在“大数据(Big Data)”应该不是什么神秘词汇了,每个开发者都能够或多或少地就一些专业名词而侃侃而谈,例如Hadoop生态,存算分离,内存计算引擎等。这一切得益于大数据生态的日新月异,开源社区的极高活跃度,使得大数据呈现百花齐放百家争鸣的状态。正如以下这张经典的大数据技术全貌图:
图1. 大数据全貌图
面对如此丰富的组件库,工程师们能够犹如搭建乐高积木一般地构建一套大数据解决方案。然而随着业务的推进,这种“乐高式”的大数据解决方案的弊端逐渐暴露:
1. 选型难 – 组件多且开发方式和语言有差异,如何做好兼容,又如何不被绑死在一个组件是个困难点。
2. 数据孤岛 – 组件之间互通不佳,陷入“找数据难,取数据难,数据搬移,数据膨胀”的陷阱。
3. 开发门槛高 – 组件的开发语言不同,北向接口不一致,大大增加了开发人员的开发成本和技术门槛。
图2. 积木式大数据框架的弊端
是时候重新审视这种“乐高式”方案了
华为公司首创的大数据库引擎 - 河图引擎 (HetuEngine),为大数据开发人员提供了一种至简至易的开发方式。河图引擎吸收了华为在大数据深耕多年的经验,站在Presto 和Impala 两大巨人的肩膀上,集大家之长,创新地提出了“四个一”理念:
“一个入口、一个目录、一份数据、统一安全”
图3. 河图引擎的“四个一”
1. 一个入口: 提供兼容ISO/ ANSI SQL:2003 标准的SQL语法,统一的JDBC, ODBC 以及REST 北向接口,解决开发人员取数据难的问题。
2. 一个目录: 构建南向异构异地数据源的全局数据视图,让开发人员能够一眼看到全局数据,解决找数据的难的问题。
3. 一份数据:通过开放数据连接框架,统一接入南向数据源,解决用数难问题。
4. 统一安全:让数据的访问控制更加集中,更加细粒度。权限分配也更加便捷高效。
对于开发人员来说,一个入口保证了开发的极简体验。通过标准SQL语法,屏蔽了底层数据源的差异,减少了开发人员的学习成本,以及在多种语言规范和编程方式之间的切换的代价。
更重要的是,一个统一的入口,使得跨大数据引擎协同计算和分析变得更加高效。 一条SQL 语句可以同时计算HDFS、MPPDB、RDBMS的数据,并且具备跨中心/跨域/跨云异构协同计算能力,可以实现真正的数据的0搬迁。此外,对已有的技术和资产投资破坏性小,这对开发人来说也是非常经济的。
案例分析
接下来,我们模拟一个批流融合查询的场景。
场景简化为,假设某政务系统需要实时处理公司提交各项申请,在处理申请之前必须进行信息核查以及征信筛查。公司用户提交的申请信息通过Kafka消息队列发送到系统,而公司信息表和公司的历史征信记录表都存放在Hive数仓中。
实时提取核查后的数据是这个问题的重点,一个通常的步骤包括:
第一步,开发人员需要首先写代码从Kafka中获取消息;
第二步,解析消息并提取出申请号和用户ID,并将提取的数据缓存下来;
第三步,将Kafka的临时数据导入Hive;
第四步,借助Hive 引擎进行多表的联合查询得出筛查结果。
河图引擎可以直接访问异构数据,且对于Kafka这样的流式消息也能够直接映射为一张数据表。因此在河图引擎中以上完全可以用一个标准的SQL 语句来实现以上功能:
图4. 示例SQL
图5. SQL查询结果
与传统批流处理相比,河图的优势在于:
1. 一边流一边读,结合历史数据快速分析;
2. 无感知底层数据引擎;
3. 统一语言访问,兼容SQL:2003;
4. 无需额外的学习成本;
不仅如此,通过实际测试我们发现,性能的大幅提升约10倍,而代码量却显著下降了约80%。 这对于开发者而言是十分友好的。
图6. 开发效率提升
华为公司计划于2020年6月30日发布开源版本的河图引擎。目前华为正不断扩展河图引擎的北向和南向接口,支持更多应用和更多异构数据源,解决用数难问题,确保上层的数据治理和数据应用软件可以更好地对接数据基础设施。
河图引擎致力于构建“大数据库”,为开发者提供极致的开发效率,让开发者像使用数据库一样的使用大数据,聚焦业务,挖掘数据价值。
古有云:“大禹得河图后始见清明”。
- 点赞
- 收藏
- 关注作者
评论(0)