01数据仓库选型数据仓库选型是整个数据中心项目的重中之重,是所有开发和应用的基础。数仓的选择其实是Hive数仓和非Hive数仓的较量。Hive数据仓库以Hive为核心,构建数据ETL流程,配合Kylin、Presto、HAWQ、Spark、ClickHouse等查询引擎完成数据的最终展示。非Hive数据仓库主要使用支持分布式扩展的OLAP数据库,如Greenplum、Doris、GaussDB、HANA(基于SAPBW构建的数据仓库一般使用HANA作为底层数据库),支持数据ETL处理和OLAP查询。自从Facebook开源Hive后,Hive逐渐占领了市场。Hive背靠Hadoop系统,基于HDFS数据存储,安全稳定,读取高效。同时,借助Yarn资源管理器和Spark计算引擎,可以轻松扩展集群规模,实现稳定的批处理。Hive数据仓库的优势在于其强大的可扩展性和大规模集群应用案例,深受架构师的推崇。Hive虽然应用广泛,但其缺点也不容忽视。Hive的开源生态已经完全分化。各大互联网公司和云厂商都在早期开源版本的基础上进行了个性化改造并投入生产。很难回到开源系统。Hive目前1.2.x、2.1.x、3.1.x三个版本应用广泛,无法形成合力。开源社区发布的Hive版本太粗糙,漏洞太多。最典型的问题是Hive3.1.0中的Timestamp类型自动存储为GMT。无论你怎么调整参数和系统变量,都无法解决。按照HDP官方说明,需要升级到3.1.2版本才能解决。根据笔者的实际应用情况,Hive3.1.2版本在关联大表时偶尔会丢失惰性覆盖数据。最影响查询性能的Hive的计算引擎也不能让人放心。Hive支持的查询引擎主要有MR、Spark、Tez。MR的性能一如既往的慢,升级到3.0版本后也没有任何改善。基于内存的Spark引擎的性能有了很大的提升。虽然3.x版本的稳定性也有所增强,但是对JDBC的支持还是比较弱。基于MR优化的Tez引擎虽然集成度最好,但需要根据Hadoop和Hive版本进行编译,部署和升级非常复杂。Hive对更新和删除操作的支持并不友好,导致它在数据湖和实时数仓时代被迅速抛弃。Hive的查询引擎也很难让用户满意,最典型的就是下面的查询引擎。1)Spark支持SQL查询,需要启动ThriftServer,性能不稳定,查询速度一般几秒到几分钟。2)Impala是鼎晖推出的产品。一般用在CDH平台上,查询速度比Spark快。由于它是用C++开发的,所以很难在非CDH平台上安装Impala。3)和Hive一样,Presto也是Facebook开源的,其语法与Hive不兼容,查询速度一般为几秒到几分钟。4)Kylin是一款中文开源MOLAP软件。基于Spark引擎,对Hive数据进行预算,保存在Hbase或其他存储中。查询速度非常快且稳定,一般在10s以下。但模型构建复杂,使用和运维不是很方便。5)ClickHouse是目前最流行的OLAP查询软件。特点是查询速度快,集成了各大数据库的精华引擎。它独立于Hadoop平台。需要同步迁移Hive数据。它提供有限的SQL支持,几乎不支持关联。操作。以Hadoop为核心的Hive数据仓库的衰落是不可逆转的。MapReduce早已被市场抛弃,HDFS在各大云平台上逐渐被对象存储取代,Yarn迟早会被Kubernetes取代。当我们将视野扩展到Hive系统之外时,会发现MPP架构的分布式数据库正在蓬勃发展,大有取代Hive数据仓库的趋势。其中,Greenplum系统技术最为成熟,生态最为完善。Greenplum自2015年开源以来,经历了4.x、5.x、6.x的三大升级。功能已经非常全面和稳定,也得到了市场的广泛推崇。除了Greenplum的开发母公司Pivotal,还有中国本土团队的创业公司四维纵横等也提供基于Greenplum的商业版本。此外,还有阿里云提供的云数据库AnalyticDBforPostgreSQL、百度云FusionDB和京东云提供的JDW,都是基于Greenplum的云产品。华为的GaussDB在设计上也参考了Greenplum数据库。OLAP查询性能最强大的当属SAP商业数据库HANA,是数据库领域当之无愧的王者。HANA是软件和硬件的结合体,提供高性能的数据查询功能,用户可以直接对大量的实时业务数据进行查询和分析。HANA唯一的缺点就是太贵了,软硬件成本都很高。HANA是基于列式存储的内存数据库,主要有以下优点。将数据存储在内存中。通过对比,我们发现内存的访问速度比磁盘快100万倍,比SSD和闪存快1000倍。传统的磁盘读取时间为5ms,内存读取时间为5ns。服务器采用多核架构(每个刀片8×8核CPU),多刀片大规模并行扩展,刀片服务器价格便宜,采用64位地址空间——单台服务器容量2TB,数据100GB/s的吞吐量,价格快速下降,性能快速提升。数据存储可以选择行存储或列存储,同时对数据进行压缩。SAPHANA采用数据字典的方式压缩数据,用整数表示对应的文本,数据库可以进一步压缩数据,减少数据传输。百度开源的Doris也迎头赶上,在百度云提供云原生部署。ApacheDoris是一款具有领先架构的MPP分析型数据库产品。仅需亚秒级响应时间即可获取查询结果,高效支持实时数据和批量数据。ApacheDoris分布式架构非常简单,易于运维,支持10PB以上的大数据集,可以满足固定历史报表、实时数据分析、交互数据等多种数据分析需求分析和探索性数据分析。ApacheDoris支持AGGREGATE、UNIQUE、DUPLICATE三种表模型,支持ROLLUP和MATERIALIZEDVIEW两种向上聚合方式,可以更好的支持OLAP查询请求。此外,Doris还支持数据的快速插入和删除,是未来实时数仓或数据湖产品的有力竞争者。尝试在OLTP基础上整合OLAP数据库TiDB、腾讯TBase(云平台已更名为TDSQLPostgreSQL版)、阿里的OceanBase,都在架构上进行了大胆的突破。TiDB采用行存储和列存储两种数据格式来保存数据的副本,分别支持快速OLTP事务和OLAP查询。TBase为OLAP业务和OLTP业务设置了不同的计算引擎和数据服务接口,以满足HTAP场景的应用需求。OceanBase数据库采用了基于LSM-Tree的存储引擎,可以在不影响性能的情况下有效压缩数据,可以降低用户的存储成本。02ETL工具选择目前业界领先的开源ETL数据抽取工具主要有Kettle、DataX和Waterdrop。商业版的DataStage、Informatica、DataServices不仅配置复杂、开发效率低,而且大数据加载速度也很慢。Kettle(正式名称为PentahoDataIntegration)是一款基于Java开发的开源ETL工具。具有图形化界面,可以工作流形式流动,有效降低研发工作量,提高工作效率。Kettle支持不同来源的数据,包括不同的数据库、Excel/CSV等文件、邮件、网站爬虫等,除了数据的提取和转换,还支持文件操作、收发邮件等,创建和通过图形界面设计转换和工作流任务。DataX是阿里巴巴集团内部广泛使用的离线数据同步工具/平台。结构化数据源之间的高效数据同步。水滴是一款简单易用的高性能海量数据处理工具,支持实时流式处理和离线批处理。该程序在ApacheSpark和ApacheFlink上运行。Waterdrop使用简单,配置灵活,无需开发。可以运行在单机、SparkStandalone集群、Yarn集群、Mesos集群上。水滴支持实时流式处理,具有高性能、海量数据处理能力,支持模块化和插件化,易于扩展。用户可以根据需要扩展插件,支持Java/Scala实现的Input、Filter、Output插件。总的来说,Kettle适合ETL任务比较少,单表数据量在百万级以下项目的中小企业。开发速度快,支持的数据源丰富,便于快速实现项目目标。DataX支持需要批处理提取数据的项目,支持千万级、亿级数据的快速同步,性能高效,运维稳定。水滴是一颗冉冉升起的新星。它还支持基于DataX的流式数据处理。它是DataX的有力竞争者和潜在的替代产品。03调度平台选择调度平台可以连接ETL任务,按照指定的依赖关系和顺序自动执行。调度平台一般采用Java语言开发,平台实现难度不大。大多数实时数仓厂商都有自研的调度平台。在银行业早期的数据仓库项目中,大部分数据ETL过程都是通过DataStage、Informatica或存储过程实现的。我接触过的最好的产品是来自AdvancedDatacom的MoiaControl。MoiaControl定位为企业统一调度管理平台,致力于为企业批处理业务制定统一的开发规范和运维方法,对各系统批处理业务进行统一管理、调度和监控。MoiaControl的系统架构如图1所示,系统分为管理节点和代理节点。管理节点负责调度任务配置和作业分发,代理节点负责任务执行和监控。MoiaControl在金融领域有着非常广泛的应用。图1 MoiaControl系统架构在开源领域,随着大数据平台的兴起,Oozie、Azkaban、AirFlow等深度融合Hadoop生态的产品虽然相继涌现,但都昙花一现逐渐被DolphinScheduler取代。DolphinScheduler由易观科技捐赠给Apache于2019年8月29日开始孵化。DolphinScheduler的产品架构如图2所示。图2 DolphinScheduler产品架构DolphinScheduler是全球顶级架构师和社区认可的数据调度平台.它把复杂性留给自己,把易用性留给用户。它具有以下特点。1)云原生设计:支持多云、多数据中心的跨端调度,也支持KubernetesDocker的部署和扩展。性能可以线性增加。在用户测试的情况下,最高可支持10万级并行任务控制。2)高可用:去中心化的多主从节点工作模式,可以自动均衡任务负载,自动高可用,保证即使任意一个节点挂掉,任务也能完成整体调度。3)友好的界面:可视化DAG图,包含子任务、条件调度、脚本管理、多租户等功能,可将运行中的任务实例与任务模板分离,为平台维护者提供方便易用的开发和数据科学家和管理平台。4)支持多种数据场景:支持流数据处理、批数据处理、暂停、恢复、多租户等,可直接为Spark、Hive、MR、Flink、ClickHouse等平台调用。另外,Kettle本身包含了调度平台的功能。我们可以直接在KJB文件中定义定时调度任务,也可以通过操作系统的定时任务来启动Kettle。也可以到Kettle中文网申请KettleOnline在线调度管理系统。Kettle可以通过KJB任务中的START组件设置定时调度器,运行界面如图3所示。图3 Kettle定时页面另外,Kettle中文网还提供了一个更强大的KettleOnline工具,它是非常适合比较大的Kettle项目,具体功能这里就不介绍了。除了上面的调度工具,还有一些小众的web调度工具,比如Taskctl、XXL-JOB等,总的来说基本可以满足需求。研发能力强的企业可以在开源版本的基础上进一步完善功能,打造属于自己的调度平台。04BI工具选择BI是一套完整的业务解决方案,用于有效整合企业现有数据,快速准确地提供报表和提出决策依据,帮助企业做出明智的业务决策。BI工具是指能够快速完成报表创建的集成开发平台。与调度平台不同,BI领域的商业产品百花齐放,但基本没有成功的开源产品。这也与产品定位有关。调度平台以功能实现为主,整体逻辑简单通用,便于快速开发满足基本功能的产品。但是,BI需要经过精心打磨,不断完善和优化,才能获得市场认可。在甲骨文称霸数据库市场的早期,BI领域存在着三大巨头,分别是IBMCognos、OracleBIEE和SAPBO。在早期的BI领域,IBM以50亿美元收购Cognos、SAP以68亿美元收购BO都创造了软件行业的收购记录。两次收购分别发生在2007年和2008年。此后是传统BI的黄金十年,这三大软件占据了国内80%以上的BI市场。笔者参与工作的第一个职位是BIEE开发工程师,之后兼职做了两年的Cognos报表开发,对两者都有很深的了解。在传统的BI时代,BI应用主要是按照星型模式和雪花模式构建的。在开发BI报表之前,必须定义各种维度表和事实表,然后通过各个BI软件支持的客户端工具完成数据建模,即事实表和维度表的关联,以及一些指标逻辑的计算(如环比、同比、同比累计等)。最后在Web页面自定义报表样式,根据不同的过滤条件,开发出固定的报表,不同的数据以相同的样式显示。整个开发过程逻辑清晰,模块划分清晰,系统运行比较稳定。作为整个数据分析项目的“门面”,赢得了很高的客户满意度。传统BI主要以固定表格展示为主,辅以少量图形。模型和页面分离虽然简化了开发,广泛应用于金融行业和大型国企管理系统,但也存在诸多不足。比如星型模式结构在大数据场景下查询速度很慢,页面分离导致版本难以控制,模型内嵌函数导致数据问题难以发现等。2017年前后,Tableau强势崛起,以“AgileBI”的理念轰动了整个BI市场,引领BI进入新时代。Tableau最大的特点是以可视化为核心,强调BI应用构建的敏捷性。Tableau摒弃了传统BI的模型层,可以直接基于数据库表或查询构建报表模块,大大降低了开发难度,提高了报表的开发效率和查询性能。以往需要一天才能完成的报表制作,现在不到一个小时就可以完成,大大提高了输出效率。在传统BI时代,国产BI软件虽然也在发展,但还不够强大。在敏捷BI时代,FineBI、永红BI、SmartBI、观远BI等商业产品顺势崛起,开始抢占国内BI市场。帆软的精细报表和FineBI是其中的佼佼者,稳坐国产BI软件的头把交椅,并将产品普及到一大批中小企业。国内的BI在培训体系上做得比较好,以至于笔者发现在最近六个月的面试中,几乎有一半的应聘者使用过帆软的产品。除了本土化BI,跨国软件公司也纷纷向敏捷BI方向做出调整。其中,笔者接触过微软的PowerBI和MicroStrategy的新一代MSTRDesktop。与此同时,云厂商也在加入BI市场的竞争。其中,百度云糖、阿里云QuickBI就是内部产品对外提供服务的例子。总的来说,在敏捷BI领域,国外厂商的软件成熟度高,版本兼容性好。国内厂商的软件迭代比较快,也容易出现bug。从实现效果来看,以上软件的区别不大。BI的战场变成了UI的较量。只要UI能够设计的很好,大部分的BI软件都可以达到类似的效果。作者简介:王春波,资深架构师,数据仓库专家,现任上海奇高信息技术有限公司大数据架构师,ApacheDoris和openGauss贡献者,Greenplum中文社区参与者。公众号「数据中国台湾学习社」营运者。本文节选自《高效使用Greenplum:入门、进阶与数据中台》,经出版社授权发布。(ISBN:9787111696490)转载请保留文章出处。
