每天洞察新趋势
——————
企业云端数据仓库
调研 | 李喆 崔可家 撰写 | 崔可家
从单机数据库到分布式数据仓库,数据的存储和分析的方式在不断演进,2016年成立的酷克数据则是将数据仓库搬上云端,推出了SQL-on-Cloud HashData,致力于降低企业大数据分析门槛。
HashData联合创始人简丽荣,先后在IBM、雅虎以及Pivotal从事分布式计算研发工作,在Pivotal工作期间,从事MPP数据库Greenplum的开发工作。之后随着Hadoop逐渐火热,简丽荣等人将Greenplum的执行引擎与HDFS结合,开发出了Apache HAWQ,在当时的SQL on Hadoop市场中,无论是功能还是性能都表现突出。
然而,不论是Greenplum还是ApacheHAWQ以及后续出现的Impala等分布式执行引擎,虽然处理能力、分析功能和性能在不断提升,但是企业使用门槛一直较高,这里的门槛包括硬件设施的巨大投入、漫长的实施周期以及高昂运维成本等。
云端数据仓库HashData的出现,就是为了帮助企业解决这些问题。
HashData是一款基于Greenplum的MPP架构云端数据仓库。与市场上很多只提供简单自动化部署和运维的云端数据仓库产品不同,Hashdata从数据内核层面实现了计算、存储的彻底分离,同时将数据仓库主节点中的元数据管理与资源调度管理分离,实现元数据管理、计算、存储三者的相互独立,通过创新性的多集群共享统一数据存储层的架构取得传统解决方案无法比拟的高可用、高并发和扩展性。
在这三个层面,每一层都能按照需求单独动态伸缩,极大提升了系统的扩展性和吞吐量,结合云平台海量的存储和计算资源,HashData可以满足超大数据量的分析和存储需求。
目前,HashData云数据仓库可以在青云、金山云、AWS、阿里云和腾讯云等云平台上运行,用户只需要按照数据量、查询复杂度选择云服务器类型和节点数量即可完成快速部署。
在存储层,HashData利用云平台的对象存储服务,如青云的QingStor,作为数据持久层,这种存储方式相对于块存储来说极大的降低了成本。同时,为了解决云数据存储在延迟方面的劣势,HashData会在计算节点本地部署缓存组件,将热数据在本地缓存,以减轻访问延迟。
在计算层,由于计算存储相互分离,计算节点数量增减并不会影响数据的存储层,不用担心数据丢失以及重分布问题,因此用户可以随时进行计算节点的扩容和缩容。
数据源方面,HashData除了兼容市场上常用的大部分ETL工具外,也提供丰富的数据迁移功能,帮助客户从各种业务系统、其它的数据仓库系统等以全量和实时增量的方式加载数据到HashData数据仓库,极大减少用户的数据迁移成本;数据分析方面,HashData提供简单的BI功能,并兼容市场上常用的大部分BI工具,同时支持原生Apache MADlib机器学习库,可以帮助用户完成库内机器学习建模分析。
简丽荣认为,云数据仓库开发最难的部分不是数据库内核具体功能的开发,而是如何利用Service-Oriented-Architecture(SOA)的思想重构整个数据库系统,即把数据库内的每个组件以服务的方式去构建,以保证云数据库的灵活性以及可扩展性。
在市场策略方面,由于云数据仓库高性价比、近乎无限的扩展能力以及最少的运维成本的特点,HashData可以服务的客户数量会更多,但对于客户的留存、续约率都有较高的要求,这样才能保证后续的营收增长。在拓展大客户时,会参照国外云数据仓库厂商Snowflake的模式,将这类客户的元数据单独存放以保证大客户对于安全的要求。
目前,HashData已经拥有十多个付费用户,包括像威立雅这样的世界500强客户,瑞易信息、销售易、蓝信康等海内外互联网SaaS公司,以及像江苏交通控股和三大运营商这样的本土大型机构,分布在运营商、物联网和金融等行业。获客方面,HashData主打合作伙伴方式,通过云厂商和集成商等合作伙伴来获取客户。
云数据仓库服务在国内处于早期,但是随着云计算的不断成熟,高性价比、运营简单的云数据仓库服务预计在企业中的接受程度会不断提升。
在市场格局方面,由于云厂商天生具有资源优势,所以如今已经有部分厂商开始提供云数据仓库服务。但是由于云厂商数据仓库一般只能在自家云服务上部署,而大中型企业在考虑高可用以及议价能力时,往往会选择多云部署的模式。因此,酷克数据这类具备中立性的、产品支持多云部署的云数据仓库厂商往往有较大优势。
近期,爱分析对酷克数据联合创始人简丽荣,就酷克数据的产品、经营策略,以及数据库行业发展趋势做了深入交流,现将部分内容分享如下。
云数据仓库降低数据分析门槛
计算、存储分离实现快速扩容
爱分析:在创办酷克数据之前,有哪些工作经历?
简丽荣:从香港科大毕业后进入IBM中国研究院从事云计算,主要是Platform-as-a-Service(PaaS)方向的研究;之后去雅虎参与用户数据平台的建设,利用Hadoop生态圈的各种组件构建端到端的用户兴趣(就是我们常说的用户画像)服务平台,从用户行为日志采集、多数据源的清洗整理汇总,到最后基于机器学习的用户兴趣分类。
2012年,我开始在Pivotal工作,最初主要是从事MPP架构数据库Greenplum的研发工作。后来随着Hadoop逐渐发展火热,开始参与研发Apache HAWQ,一直到2015年9月份将HAWQ这个项目开源并贡献给Apache基金会。
爱分析:Apache HAWQ相对于Hive等其它SQL-on-Hadoop产品有何优势?
简丽荣:Apache HAWQ的设计初衷是,将Greenplum的执行引擎与Hadoop的存储引擎结合起来,HDFS分布式文件系统作为数据存储层,数据处理使用MPP执行引擎,从而构建一个既具备传统MPP数据仓库丰富分析功能和超高查询性能,同时也有类似Hadoop平台的高可用、灵活性以及扩展性的分布式数据库。
当时市场上SQL on Hadoop的解决方案并不多,只有耶鲁大学团队做的Hadapt和Facebook做的Hive,而这两个产品在当时无论是易用性还是查询性能方面都差强人意。我记得,当时HAWQ给沃尔玛做PoC时,平均查询速度比Hive快两个数量级以上,也是当时市场上唯一能够在不对SQL语句进行大改动的情况下完整跑完TPC-DS 99条查询的SQL-on-Hadoop解决方案。
后来的故事大家都知道了,Cloudera的Impala,MapR的Drill,UC Berkeley/Databricks 的SparkSQL,Facebook也推出了新的SQL-on-Hadoop解决方案Presto,Hive也在Hortonworks的支持下快速迭代。这些产品无论是功能还是性能都有了很大提升,并开始提供原来只有商业数据仓库产品才用的功能特性,如ACID事务、更新和删除操作,索引等,而HAWQ的内核还停留在十多年前的PostgreSQL 8.2的基础,最初从Greenplum继承下来的优势正快速流失。
爱分析:为什么选择做云数据仓库?
简丽荣:我觉得可以从如下两个方面来回答这个问题:
• 商业:虽然在2015年底、2016年初的时候,国内云计算市场的前景不像今天这样清晰,但我们认为大趋势已经呈现。企业高管不再争论应不应该上云,而是什么时候上云以及多大范围内使用云。企业将越来越多的应用部署在云上面,而这些应用产生大量的业务数据。考虑到数据迁移成本、网络延迟以及数据一致性等因素,将云上产生的数据移到云外面进行分析是不可取的。其实,这个逻辑跟当年我们决定做Apache HAWQ是一致的:数据保存在什么平台上面,我们就围绕这个平台打造原生的数据处理引擎。只不过这一次,我们押注云平台而已。
• 技术:云计算的很多特性,包括规模经济和按需付费的商业模式,硬件资源API化,以及几乎无限的可扩展性以及弹性等,提供了很多技术创新机会,让我们有机会解决传统数据仓库和Hadoop大数据平台面临的易用性、可扩展性、弹性、高可用和高并发等难题。
爱分析:计算、存储分离更适合云架构?
简丽荣:当初我们决定围绕着云计算打造下一代分布式分析型数据库的时候,我们确定了如下三个基本特性:
1.抽象服务:作为一个服务,除了易用性的需求外,客户对自动化/智能化运维和高可用有着比传统私有部署更高的要求。通过计算、存储分离的方式,我们利用云平台提供的对象存储服务作为数据持久层,并将由多个计算节点组成的计算层变得完全没有状态,从而大幅降低计算层的复杂性和发生故障的概率,以及节点发生故障后对整个集群的负面影响和故障恢复所需的时间。
2.多维度弹性:一直以来,云计算的一个很大卖点就是按需购买,按使用量付费。通过计算和存储分离,我们可以根据客户具体的应用场景,对计算和存储分别单独扩缩容,而不用像传统的计算存储紧耦合的方案,计算和存储必须一起扩缩容,容易造成计算资源或者存储资源的浪费。而且,在没有计算任务的时候,我们可以将计算资源完全释放,不会对数据的持久性和可访问性造成任何影响。
3.扩展性:我们知道,对于某个应用场景而已,对象存储服务提供的存储能力几乎是无限的,而将计算层无状态化后,单计算节点的故障不会影响集群的可用性,我们可以将计算集群的扩展性推向全新高度,能够同时调度几百甚至上千个计算单元。
所以,我们认为,计算、存储分离是云架构的基石。
爱分析:HashData云数据仓库是基于HAWQ吗?
简丽荣:不是的,HashData是基于开源版本的Greenplum来做的。因为公司创始团队跟Apache HAWQ这个项目的关系比较密切,所以业界大多认为HashData是基于HAWQ来实现的,这里额外澄清一下。
之所以选择Greenplum,主要 有如下两方面的原因:
• 目前业界唯一的开源企业级MPP数据仓库:全球大客户1000+安装集群,百万行源代码,超过10年的全球研发投入,标准SQL数据库,支持ACID和分布式事务等。
• 开源社区非常活跃:除了Pivotal公司外,很多创业公司(包括我们自己)、集成商、云计算大厂都在围绕Greenplum打造产品和解决方案,并且不断地将PostgreSQL新功能往回合并,提升内核版本。
爱分析:HashData相对于Hadoop的优势有哪些?
简丽荣:Hadoop的生态系统有两大基础组件:HDFS和YARN。HDFS是分布式共享文件系统,YARN负责集群资源管理。我们认为,在云计算的大背景下,我们有着更好的选择。例如,S3vs. HDFS,Kubernets vs. YARN。Databricks有一篇博客文章详细比较了S3和HDFS,结论是,无论是性价比、高可用、数据持久性还是弹性,S3都有着比HDFS高出一个数量级的优势。我们相信,如果仔细比较Kubernets(或者其它公有云厂商提供的资源编排服务)和YARN,结论也差不多。还有一点比较重要的是,无论是S3还是云计算资源编排服务,本身就是按需使用的服务,不像HDFS或者YARN需要用户自己运维。
HashData继承Greenplum丰富的分析功能、超高的执行性能以及企业级特性的同时,围绕着对象存储和抽象服务而构建,通过创新性的元数据管理、计算和存储三者分离,多集群共享统一数据存储层的架构,提供Hadoop/Spark大数据平台无法比拟的高性价比、易用性、可扩展性和高并发。
爱分析:云端数据仓库使用对象存储有什么缺点?
简丽荣:虽然前面提到,相对于传统的块存储和HDFS,对象存储在性价比、可扩展性、高可用、持久性以及高并发访问方面有着显著优势,但这些优势是有代价的:
• 远程访问带来的高延迟和低带宽:虽然云厂商不断改进对象存储的性能,但相对于利用了数据局部性的块存储和HDFS,对象存储的延迟会比较高,访问带宽也会相对低。为了减轻延迟和带宽问题给查询性能造成的影响,我们在计算节点部署缓存组件,将从对象存储下载的数据缓存在本地,这样下次再去访问这些数据的时候就可以直接从本地文件系统读取。我们的测试表明,在绝大部分应用场景,HashData的查询性能跟利用本地块存储的Greenplum是非常接近的。
• Immutable文件系统,一旦写入不可更改:对象存储是不可更改的文件系统,甚至连追加操作都不支持。而作为一个全功能的分布式分析型数据库,HashData高效地支持增删改查所有操作。我们在数据内核层面做了大量的改进和取舍。
爱分析:HashData与其他云端数据仓库的区别有哪些?
简丽荣:近年来,很多云厂商都基于开源的MPP数据库(主要是Greenplum)推出了自己的云端数据仓库服务,这些服务主要有两个特点:(1)分布式系统,支持线性扩容;(2)按需付费,自动化部署、监控和运维。这给大众造成了一种印象,认为所谓的云端数据仓库就是将原来部署在x86物理服务器上的MPP分布式数据库一键部署到云端的虚拟主机。
除了上述两个共同点外,HashData与其他云端数据仓库的区别主要体现如下几方面:
• 计算和存储分离,对象存储作为底层数据持久层,计算和存储可以独立扩容,提供多维度弹性。
• 多集群共享统一数据存储层,通过多集群的方式支持高并发的复杂混合查询。
• 共享存储+一致性Hash数据分布策略,实现秒级弹性伸缩以及高可用。
这里举一个Greenplum的例子。作为完全无共享架构的代表,Greenplum计算和存储是紧耦合的。这种设计带来超高性能的同时,面临着扩容窗口长的问题,因为每次扩容都导致全量数据的重分布,扩容时间跟集群数据量成正比。这个几乎所有传统MPP数据库都面临的老难题不会因为云厂商提供了一键部署的功能就能得到解决。在系统架构不进行全新设计的情况下,即便把Greenplum部署到云平台上面,还是无法充分利用云计算的弹性特性。而HashData在数据库内核层面,利用对象存储作为共享存储,加上基于一致性Hash的数据分布策略,使得集群扩容的时候不涉及任何数据的重分布,从而实现秒级扩容,充分体现云端数据仓库的弹性。