大家好!我是堵俊平,来自Apache社区。我是Apache 基金会的member (会员), 也是 Hadoop 以及 YuniKorn等项目的committer和PMC。 我也是 Tube MQ, Nutx等孵化器项目的导师。在大数据方面有一个长时间的开源贡献。
首先,我们回顾一下大数据技术的发展历程。 从 2003年开始Google发表了GFS,MapReduce(2004), BigTable(2006)论文, 也就是我们熟知的三辆马车的开始,一直到当前,经历了很多阶段。我们认为,刚开始的是一个起步阶段。标志性的项目Hadoop在2006年横空出世。 2008年时, 像Apache Cassandra 和HBase这样的NoSQL的引擎也相继开源。
到了发展阶段,AWS 推出了EMR服务, 在云上第一次开始有部署大数据的服务。之后,(Apache) Hive成立,包括像Storm, 大数据进入SQL 的时代以及流计算的时代。 到2012年,Hadoop 2.0 时代开启。 Hadoop 除了传统的MapReduce, 它可以支持更多的计算引擎,包括2013年成立的 Spark 项目,再包括像现在比较流行的流处理平台Flink这样的技术等等。
进入2017年之后, 大数据进入成熟阶段。 Hadoop 3.0发布,大数据整体向容器化方向进化,大数据和AI进行深度融合。整体来看这就是大数据发展的一个历程。
另外除了大数据领域,我们看到开源数据引擎全面崛起。 根据权威的榜单db-engines ranking(排名), 可以看到最流行的前10大与数据库相关的引擎,10个里有7个是开源引擎,其中涵盖了 SQL,NoSQL, In-Memory, 搜素相关的引擎都在里面。本次活动的主角Cassandra也归列在前十之列。
我们可以看到整个大数据领域技术有几个很明显的新趋势。
第一个, 我觉得比较重要的,就是云服务化。整个大数据领域全面地向云化方向迈进。比如说,我们的存储,大数据和传统的对象存储怎么样去结合,包括访问的API进行简化,包括全面的Serverless化 (SaaS)。传统的大数据可能是一个集群,服务器化的部署, 现在变成是Serverless化的调用, SQL或其他的计算。
还有一个重要趋势就是,我们希望有统一的SQL, 做数据湖分析的数据可能是跨源的,有的在文件系统里面,有的在SQL引擎里面, 有的在SQL里面等等。 这种跨源的统一SQL的数据库分析是一个重要的趋势。除此之外,像TPE和融合HTAP 的引擎, 甚至包括传统的SQL和machine learning 相统一的引擎也非常重要。另
外一个趋势就是PO统一, 在数据引擎层统一。 就是通过比如说 Flink的技术或其他的引擎,既能处理流,也能处理批。还有在接口层统一。 就是我们接口层统一了,下面有不同的引擎,有流的引擎,有批的引擎, 做一个融合,还有以及MSEQ与计算引擎整合,可能在入口数据的MQ 往后延申流计算相应的服务。 还有重要的技术趋势包括 machine learning, 与传统大数据平台的结合。比如说,平台上的统一,从数据的预处理到训练到推理,形成统一的闭环。包括我们更多的引擎,比如像, 陆陆续续有更多的引擎开发出来,包括我们熟知tensil flow, Y torch之外,比如像国内的Angel, MindSpore, 也包括Ray一样新型的跨数据和machine learning的引擎,也是重要的一个方式。
除此之外,一个重要的方向就是大数据的容器化,包括K8S Operators和.YARN与K8S 共生的项目。比如说,原产于大数据项目的Yunicorn、K8S社区、CNCF数据孵化的Volcano项目,试图把大数据和容器化相结合。还有一个重要的趋势是新硬件。包括异构计算,比如说,CPU 和GPU 怎么样协同或统一。在不同CPU里面,我们有x86 的一套、有ARM的一套,不同的体系之间怎么样去融合。对我们上层的大数据,未来的技术有不同的推动作用。 甚至包括有一些像现在新的技术创新,像Persistent Memory,传统的内存和磁盘之间有一层融合,整体来说就是很多的方向去引领大数据领域。虽然我们说它是成熟期,可以看到很多新的技术革命仍然在酝酿。 当然这些大部分的技术都是开源的技术。
这里简单列举几个吧, 包括下一代数据湖存储。 Hadoop项目里孵化的 Ozone项目值得大家关注。Ozone项目它是为解决什么问题呢?传统的HDFS 它的扩展能力可能有问题,也不能提供,目前来说很多的应用比较喜欢对象存储的接口, HDFS也不能提供。Ozone是完全可以提供对象接口, 也可以提供文件存储接口。 另外它可以无缝支持海量小文件。传统的HDFS 做不到, 因为设计上它把所有的 metadata 都放在NameNode上。 Ozone的设计, Ozone Manager 和 Storage Container Manager两层的设计可以把原数据拆开打散, 包括对K8S 整个 体系的无缝集成,包括高性能, 拓扑感知等等,相对于原有的 HDFS算是一个重要突破, 可以成为下一代数据库存储的重磅级的候选人。
下一代资源调度也有很多技术创新。 比如YARN 社区孵化出来的项目YuniKorn 。 它是 Apache的一个项目,能支持Yarn的服务器和与 K8S项目进行融合, 下面有不同的实现,可以放在 Yarn 的caster上, 把K8S集群的能力调动起来。
另外还有一个项目就是 Volcano, 也就是CNCF项目, 它在K8S的调度体系上做了重要的扩展,不仅支持云原生的面向服务的调度, 它也可以支持面向任务的,面向job的, 比较贴近于像 Spark这样的大数据应用 batch job 的调度, 可以提供一个很好的支持。
现在一个新的热点是数据湖存储格式, 像原产于 Uber 的 Hudi, 以及Netflix的 Apache 项目 Iceberg, 以及 Databricks (Spark 的原厂)贡献出来的 Delta Lake, 应该是 Linux 基金会的一个项目。 这几个项目主要是为解决什么问题呢? 传统流批数据处理有很多痛点。
比如说, 上游数据导入与下游分析作业的schema规范与对齐的问题。 包括整个流式的数据写入是没有ACID保证。 这样的话, 我们是需要在 Table Format 这一层有更加丰富的余的保证。 第三, 在数据写入的时候,数据需要执行Update, Delete等的操作, 原始数据需要一些修正, 或者有一些丢包等操作, 在新的数据库存储格式下可能可以更容易支持这种操作,以及像这种频繁的数据导入会造成的海量小文件让HDFS不堪重负。 当然我们之前说到的Ozone 某种程度上是可以解决这样的问题的, 但是在这些数据库存储格式普及之前,HDSF 还是目前在大数据领域的一个实施的标准。
这里可以说一下整个大数据的技术栈其实有3个路线: Google基本上是自成一体的。另外占主导地位是Apacha基金会。 Apacha的开源社区,包括各种项目,跟 Google去对标,甚至有些是走在Google之前。还有就是AWS, 它作为一个云服务,很容易在云上进行落地的。这里有一个简单对比,就包括,分布式文件系统,大数据的计算引擎, NoSQL的数据库,还有New SQL的数据库 (Big SQL就是大数据的新的数据仓库),以及资源调度框架,包括分布式协同, 都是有很多对应的关系。可以看到Apache的很多项目,包括跟这次主题的Cassandra项目, 都是在业界非常 popular, 很多大数据业者目前从事的工作降低了相应的壁垒,整体的生态是非常蓬勃的。
云和开源的时代是最好的技术创新的时代,云跟开源其实可能天然就无法分开。对于云计算而言,开源的价值在于什么呢? 它是一个开放的生态, 能打造事实标准,帮助新技术快速推广。 传统上来说,我们的很多新技术要落地, 它面临很多产业的挑战,包括场景的限制以及市场碎片化 ,包括标准难统一等等,甚至包括端到端很难集成起来。 但是开源方案天然就很容易推广, 开源方案自带流量,它的应用场景是非常丰富的。 因为它的很多用户接受意愿高,他们可以去帮助优化我们的场景,帮我们去贡献相应的feature。 开源天然就是标准,它可以统一接口,也易于集成。
对开源软件而言,云计算也是很有意义的, 有好几个层面它可以加速开源技术的落地, 商业化的落地也好,或者是应用落地也好,它都是一个很好的技术。 传统对于开源软件来说有很大的挑战, 站在产业的角度, 第一就是,它的赢利模式可能不是那么直接,不是那么清晰;第二就是, 开源的方案要去实际使用的时候可能会面临一些相应的问题。但在云上的时候,它是一键部署, 用一键部署的方式来去推广使用。它是可以用分钟级的方式去布局使用的,包括它的赢利模式非常清晰,很容易按需付费。 对开源项目来说, 云是天然的一个比较适合去推广的平台和商业化落地的平台。
所以说,我们认为,在云和开源的时代,未来可能是把数据价值融入到各行各业,用技术打造智能互联的新时代。 我们认为数据引擎的未来一定是在云上,一定是开源的技术。