vlambda博客
学习文章列表

“湖仓一体”:数据仓库与数据湖的左右互搏术

《射雕英雄传》当中,“老顽童”周伯通被禁闭在桃花岛的地洞里,创出了一门武功叫左右互搏术。这门左右两手可以同时使用不同招式的武学,对于人物本身的战斗力加成几乎是翻倍的。
 
左右互搏的难点其实并不在于一心二用,而是左右两支手上的两套不同的武功,可以融会贯通,相辅相成,与人对敌时,就像是面对两个配合默契的武林高手。
 
那么,如果将左右互搏这项武功,平移到大数据平台上会发生何种有趣的变化?
 
数据湖是伴随开源大数据技术栈的发展而来“外门功夫”,进入门槛低,容易实现自建,但后期的成长较难;而数据仓库是诞生在数据库时代的方法论,更像是一门“内功”,虽然入门困难,但成长性更高。
 
过去,这两种不同流派,代表了企业发展在不同阶段的选择,但随着企业不断的变大,企业的大数据处理需求既要入门又要成长,这就需要一种“左右互搏”的武学,能够将两大流派融汇,做到内外兼修,化身为一代武林高手。
 


在9月18日的2020云栖大会上,阿里云正式发布了这门新的武学,大数据平台的下一代架构——“湖仓一体”。
 
“湖仓一体”:数据仓库与数据湖的左右互搏术
传统门派,与新兴门派

诞生于20 世纪 90 年代的数据仓库,是武林中典型的传统门派。
 
按照全球数据仓库之父 W.H.Inmon对数据仓库的描述,它的主要功能是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料,透过数据仓库理论所特有的资料储存架构,作一有系统的分析整理,以利各种分析方法如联机分析处理(OLAP)、数据挖掘(Data Mining)之进行,并进而支持如决策支持系统(DSS)、主管资讯系统(EIS)之创建,帮助决策者能快速有效的自大量资料中,分析出有价值的资讯,以利决策拟定及快速回应外在环境变动,帮助建构商业智能(BI)。
 

“湖仓一体”:数据仓库与数据湖的左右互搏术


从价值角度,数据仓库能够实现跨业务条线、跨系统的数据整合,为管理分析和业务决策提供统一的数据支持,这是它的魅力所在。但数据仓库也有它的缺点,起步门槛高(强建模),对开发人员要求高,非结构化数据处理能力较弱。
 
而从大数据的角度,直到大数据技术诞生,数据仓库才得以普惠,成为一种大数据系统的架构。数据仓库提供了基于数据抽象的统一存储,强调数据的清洗、建模和管理,以极高的数据存储、计算能力,完善而精细的数据管理能力,是建设企业级数据中台的上佳选择。阿里巴巴的中台之所以出名,也是得益于它数据仓库的早期建设(飞天系统)。

而数据湖的概念,是如今已经被HDS收购的Pentaho公司的前任CTOJames Dixon提出来的,它代表了一种新的数据存储理念。同时,是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。Hadoop则是最常用的部署数据湖的技术。
 

“湖仓一体”:数据仓库与数据湖的左右互搏术


相比于数据仓库的传统门派严谨的“门规”和条件。数据湖的要求,就要简单很多,通常是企业所有数据的单一存储,包括源系统数据的原始副本,以及用于报告、可视化、分析和机器学习等任务的转换数据,换言之,包含了结构化数据,半结构化数据,和非结构化数据。
 
很明显,这种对数据类型的兼容并包,能给企业很快带来多种能力,如数据湖结合数据科学与机器学习技术,能帮助企业构建更多优化后的运营模型等等。与数据仓库不同,数据湖又是江湖上的新兴门派。
 
“湖仓一体”:数据仓库与数据湖的左右互搏术
鱼与熊掌,老问题的新解读

客观地说,数据仓库与数据湖之间,的确有很多明显的差异之处。
 
比如在储存方面上,数据湖中数据为非结构化的,所有数据都保持原始形式,存储所有数据,并且仅在分析时再进行转换,而数据仓库则是数据通常从事务系统中提取。再比如,数据湖的目的是深入分析的非结构化数据,而数据仓库则非常适用于月度报告等操作用途,因为它具有高度结构化等等。
 
因为分属不同的门派,代表了不同的方向和能力,所以数据仓库和数据湖两者之间,起初是井水不犯河水。但武学之道,贵在融合,江湖中的有能之士,亦在努力推动两者的结合。
 
在数据湖阵营,早在2011年,Hadoop开源体系公司Hortonworks开始了Apache Atlas和Ranger两个开源项目的开发,分别对应数据追踪和数据权限安全两个数仓核心能力。这可以看做是数据湖向数据仓库做出的融合尝试。
 
遗憾的是,这两个开源项目的活跃度一直不高,直到2017年才完成孵化,且发布周期较慢,相较同时期的Spark、Flink等开源项目完全不可同日而语,几乎被人淡忘。
 
在数据仓库阵营,2017年AWS Redshift推出RedshiftSpectrum,支持Redsift数仓用户访问S3数据湖的数据。开始在AWS产品体系内,尝试打通数据仓库到数据湖统一存储的边界;同时,2018年阿里云MaxCompute推出外表能力,支持访问包括OSS/OTS/RDS数据库在内的多种外部存储。实现阿里云产品体系内数仓产品到数据湖统一存储的打通。
 
这两次数据仓库与数据湖融合做的尝试,但因为这类数仓到数据湖的打通仍然停留在各自的技术体系内,而且是从存储层进行打通,上层元数据仍然要在数仓中人工重建,易用性较差,只适用于低频查询。所以,也没有在业界引起广泛的关注。
 
可是,如果从企业成长的角度看,这两者之间又确实存在融合的必要性。
 
当一个企业在业务初创的时候,数据的规模比较小,它的数据的形态在迅速的试错和变化,灵活性是这个时候的重点,这时候使用数据湖就可以快速的搭建自己的技术平台来支撑业务,比如说深度学习,数据库可以在支持丰富的数据种类的基础上面实现非常低的成本跟非常高的灵活性,可以满足企业在这个阶段快速发展和对数据存储和计算的一个需求。但随着业务规模逐渐增大,数据的形态就会变得更加成熟。这个时候降本增效就会变成企业越来越高的一个需求。他会开始逐步的选择数据仓库,来更好的做数据的优化,数据的治理和数据的各种应用。
 
面对鱼与熊掌的问题,企业要选择去取舍,还是更希望同时获得这两种能力的融合?答案不言而喻。
 

“湖仓一体”:数据仓库与数据湖的左右互搏术


按照阿里巴巴集团副总裁、阿里云计算平台负责人贾扬清的观点,“ 用户关注的是数据应用,是数据中台,是数据上的人工智能。为什么要来去选择,是用铲子,还是铁锹这样的细节问题?所以‘湖仓一体’,就是可以让用户免去选择工具的痛苦,获得两者融合的价值。”
 
“湖仓一体”:数据仓库与数据湖的左右互搏术
湖仓一体,双手融汇

“湖仓一体”,其实并不是一个新鲜的概念,它的成功必然建立在实际业务压力的环境之下,必须经过拿得出手的业务实践。
 


第一个吃螃蟹的武林高手,名字叫做“微博”。
 
贾扬清说,“此前微博拥有Hadoop数据湖和阿里云大数据及AI两套异构的大数据平台,且两套平台在集群层面完全割裂,数据和计算无法自由流动。所以,微博和阿里云共同,向湖仓一体化的AI计算中台的方向发起了努力。”
 
2020 年1月9日,在微博首次在测试当中完成了湖和仓的数据和元数据打通。到2020年4月,湖仓一体在微博生产系统正式应用,PAI深度学习和机器学习训练任务以及各种数据处理任务通过湖仓一体技术,实现在MaxCompute和EMR之间的无缝调度,真正在两套体系之上实现了统一的元数据管理和数据开发体验。
 
从此,微博摆脱繁重的数据搬迁,极大的提升平台化服务能力,使微博数据湖中的数据和算法工程师能够轻松无缝的借助阿里巴巴成熟的超大规模计算能力和算法赋能业务提效,并且实现MaxCompute云数仓加数据湖的闭环,极大的提升AI类作业的效率,将数据湖的灵活性和云数仓的性能成本,云原生优势充分结合,形成互补,从而达到成本节约。
 
在这个故事里,阿里云就像是习得了左右互搏术的周伯通,而微博则成为了将这门武学发扬光大的故事主角郭靖。
 
贾扬清表示,MaxCompute湖仓一体方案打破了数据湖与数据仓库割裂的体系,在架构上将数据湖的灵活性、生态丰富与数据仓库的企业级能力进行融合,从而构建数据湖和数据仓库融合的湖仓一体的全新计算平台。MaxCompute湖仓一体方案不仅可广泛用于支持超大规模的机器学习和深度学习,还能帮助企业高效提升自身大数据能力,实现敏捷运营,降本增效。
 
与此同时,这种能力的获取几乎是“无感”的,“湖仓一体的意义,是说企业不需要看见湖和仓,数据有着打通的元数据的格式,它可以自由的流动,也可以对接上层多样化的计算生态。”贾扬清说。
 
很明显,这项将数据湖和数据仓库两种能力融会贯通的“左右互搏术”,还会服务于更多的企业,并帮助他们更好地实现数据价值的变现。