ITPUB

存算分离的尽头只有数据湖

存算分离、湖仓一体都是这两年的热门话题,尤其是湖仓一体的说法,简直堪比莎士比亚笔下的哈姆雷特,100个人眼中有101个湖仓一体。争执久了,觉得没什么意思,静待时间给出答案吧。

不过,这两天正好参加一个同业交流会议,话题又谈到存算分离和湖仓一体,这种讨论的妙处在参与者有共同的行业背景,相似问题和痛点,而观点的争论没有直接利益影响,各抒己见又能心平气和,于是又生出些倾诉的欲望。会议发言时间短暂,表述也未必清晰,想想还是应该落成文字,以便回顾反思,也可供诸位看官评鉴。

先谈谈存算分离。

目前,银行业的Hadoop集群主要还是采用物理机部署方式,数据存储在PC服务器的本地磁盘上,这些服务器同时为计算供给CPU和内存资源。这样的现状可以说是存算一体。存算分离,则是指将存储资源从这些PC服务器上剥离出去,用“对象存储”来承接,PC服务器只供给计算资源。而计算多是无状态的,就可以进一步容器化,替代PC服务器。最终,存算分离演变为“对象存储”+“容器云”的组合。

你可以很容易的发现,上面这个演变过程只是物理资源的变化,是物理层面的存算分离。

物理上的分离是以逻辑上分离为前提的。从逻辑上说,Hadoop在诞生之初就是存算分离的,HDFS负责存储,MapReduce和后来的Spark负责计算,甚至还有单独Yarn来负责资源调度。

存算分离,有一个比较容易达成的共识,就是存储资源上的数据是可以跨平台共享的。这就意味着,存算之间是有开放标准的,所谓开放就是不隶属于某个厂商。存在开放标准,就意味着存算之间必须做逻辑上的分离。

到这里,我们小结一下,第一个要点,存算分离其实包含了逻辑和物理两个层面的意义,而且先有逻辑才能有物理;第二个要点,存算分离必须支持跨平台共享,否则没有意义。

再来看湖和仓的情况。

湖在仓之后诞生,是因为仓无法应对新的挑战,需要湖来承载,它们包括非结构化数据处理、实时数据处理、AI支撑能力等等,即便是仓最擅长的结构化数据,在真正海量数据到来后,受到成本约束和技术约束,仓也很难应对。

所以,湖与仓的差异,首先在功能层面不同。而功能不同,源自支持技术体系的不同。

湖背后的Hadoop生态体系,是基于开放标准和开源组件构建起来的庞大生态体系,其始终在蓬勃发展,不断进化,几乎每年都有重量级开源项目走上舞台。开放标准和开源组件两个要件中,前者的重要程度又更高。所以,开源组件的商业版只要保留开放标准,仍然被视为Hadoop生态的重要组成部分。

反观仓背后的MPP技术,常见产品包括Teradata/ Greenplum/ GaussDB/ Gbase等等,无论哪种产品基本上都是封闭系统。这里的“封闭”与否,同样看它是否支持开放标准,而不是代码开源与否。比如,Hadoop上的Parquet文件,MPP是否可以不在转换存储而直接使用。

再小结一下,湖和仓的关系就是Hadoop和MPP的关系,更进一步是开放体系和封闭体系的关系。

存算、湖仓,这两组概念我们论述完,结论也就出来了。要实现存算分离,必然要求MPP从封闭体系走向开放,真正的开放必然要兼容Hadoop生态的“开放标准”。那么,MPP也就成为Hadoop中一种特殊存在,如同开源组件商业版一样。这意味着,MPP与Hadoop融为一体,仓和湖的界限也就此消失。

喧嚣散去,唯留下沉静的湖水......

Image