任何一种技术都会教训从阳春白雪到阳春白雪的环节,就像咱们对计算机的了解从“戴着鞋套才干进的机房”变成了随处可见的智能手机。在前面20年中,大数据技术也教训了这样的环节,从曾经居高临下的 “火箭科技(rocket science)”,成为了人人普惠的技术。
回首来看,大数据开展初期涌现了十分多开源和自研系统,并在同一个畛域开展了相当长的一段“红海”竞争期,例如Yarn VS Mesos、Hive VS Spark、Flink VS SparkStreaming VS Apex、Impala VS Presto VS Clickhouse等等。教训强烈竞争和淘汰后,胜出的产品逐渐规模化,并开局霸占市场和开发者。
理想上,近几年,大数据畛域曾经没有再降生新的明星开源引擎(Clickhouse@2016年开源,PyTorch@2018年开源),以Apache Mesos等名目中止保养为代表,大数据畛域进入“后红海”时代:技术开局逐渐收敛,进入技术普惠和业务大规模运行的阶段。
本文作者关涛是大数据系统畛域的资深专家,在微软(互联网/Azure云事业群)和阿里巴巴(阿里云)教训了大数据开展20年环节中的后15年。本文试从系统架构的角度,就大数据架构热点,每条技术线的开展头绪,以及技术趋向和未解疑问等方面做一律述。
值得一提的是,大数据畛域依然处于开展期,局部技术收敛,但新方向和新畛域层出不穷。本文内容和团体教训相关,是团体的视角,不免有缺失或许偏颇,同时限于篇幅,也很难片面。仅作抛砖引玉,宿愿和同业独特讨论。
一、当下的大数据体系热点
BigData概念在上世纪90年代被提出,随Google的3篇经典论文(GFS,BigTable,MapReduce)奠基,曾经开展了将近20年。这20年中,降生了包括Google大数据体系,微软Cosmos体系,阿里云的飞天系统,开源Hadoop体系等低劣的系统。这些系对抗步步推进业界进入“数字化“和之后的“AI化”的时代。
海量的数据以及其包括的价值,吸引了少量投入,极大的推进大数据畛域技术。云(Cloud)的兴起又使得大数据技术关于中小企业万无一失。可以说,大数据技术开展合理时。
从体系架构的角度看,“Shared-Everything”架构演进、湖仓技术的一体化融合、云原生带来的基础设计更新、以及更好的AI支持,是当下平台技术的四个热点。
1.1 系统架构角度,平台全体向Shared-Everything架构演进
泛数据畛域的系统架构,从传统数据库的Scale-up向大数据的Scale-out开展。从散布式系统的角度,全体架构可以依照Shared-Nothing(也称MPP), Shared-Data, Shared-Everything 三种架构。
大数据平台的数仓体系最后由数据库开展而来,Shared-Nothing(也称MPP)架构在很长一段期间成为干流。随云原生才干增强,Snowflake为代表的Shared-Data逐渐开展起来。而基于DFS和MapReduce原理的大数据体系,设计之初就是Shared-Everything架构。
Shared-Everything架构代表是GoogleBigQuery和阿里云MaxCompute。从架构角度,Shared-Everything架构具有更好的灵敏性和后劲,会是未来开展的方向。
(图:三种大数据体系架构)
1.2 数据治理角度,数据湖与数据仓库融合,构成湖仓一体
数据仓库的高性能与治理才干,与数据湖的灵敏性,仓和湖的两套体系在相互自创与融合。在2020年各个厂商区分提出湖仓一体架构,成为当下架构演进最热的趋向。但湖仓一体架构有多种外形,不同外形尚在演进和争执中。
(图:数据湖与数据仓库自创融合)
1.3 云架构角度,云原生与托管化成为干流
随着大数据平台技术进入深水区,用户也开局分流,越来越多的中小用户不再自研或自建数据平台,开局拥抱全托管型(通常也是云原生)的数据产品。Snowflake作为这一畛域的典型产品,获取广泛认可。面向未来,后续仅会有大批超大规模头部公司驳回自建(开源+改良)的形式。
(图:snowflake的云原生架构)
1.4 计算形式角度,AI逐渐成为干流,构成BI+AI双形式
BI作为统计剖析类计算,关键是面向过去的总结;AI类计算则具有越来越好的预测未来的才干。在过去五年中,算法类的负载从不到数据中心总容量的5%,优化到30%。AI曾经成为大数据畛域的一等公民。
二、大数据体系的畛域架构
在前文(#1.1)引见的Shared-Nothing、Shared-Data、Shared-Everything 三种架构中,笔者教训过的两套体系(微软Cosmos/Scope体系,和阿里云MaxCompute)均为Shared-Everything架构,因此笔者关键从Shared-Everything架构角度,将大数据畛域分红6个叠加的子畛域、3个横向畛域,共9个畛域,详细如下图。
(图:基于 Shared-Everything 大数据体系下的畛域架构)
经过多年的开展,每个畛域都有肯定的停顿和积淀,上方各个章节将概述每个子畛域的演进历史、面前驱能源、以及开展方向。
2.1 散布式存储向多层智能化演进
散布式存储,本文特指通用大数据海量散布式存储,是个典型的带形态(Stateful)散布式系统,高吞吐、低老本、容灾、高可用是**优化方向。(注:下述分代仅为了论述繁难,不代表严厉的架构演进。)
第一代,散布式存储的典型代表是谷歌的GFS和Apache Hadoop的HDFS,均为支持多备份的Append-only文件系统。 因HDFS早期NameNode在扩展性和容灾方面的短板不能充沛满足用户对数据高可用的要求,很多大型公司都有自研的存储系统,如微软的Cosmos(起初演进成Azure Blob Storage),以及阿里巴巴的Pangu系统。HDFS作为开源存储的奠基,其接口成为理想规范,同时HDFS又具有支持其余系统作为面前存储系统的插件化才干。
第二代, 基于上述底盘,随海量对象存储需求激增(例如海量的照片),通用的Append-only文件系统之上,封装一层支持海量小对象的元数据服务层, 构成对象存储(Object-based Storage) ,典型的代表包括AWS S3,阿里云OSS。值得一提的是,S3与OSS均可作为规范插件,成为HDFS的理想存储后端。
第三代,以数据湖为代表。 随云计算技术的开展,以及(2年之后)网络技术的提高, 存储计算一体的架构逐渐被云原生活储(存储托管化)+ 存储计算分别的新架构取代 。这也是数据湖体系的终点。同时因存储计算分别带来的带宽性能疑问并未齐全处置,在这个细分畛域降生了Alluxio等缓存服务。
第四代, 也是当下的趋向,随存储云托管化,底层成功对用户透明,因此存储系统无时机向更复杂的设计方向开展,从而开局向 多层一体化存储系统演进 。由繁多的基于SATA磁盘的系统,向Mem/SSD+SATA (3X备份)+SATA (1.375X为代表的EC备份)+冰存储(典型代表AWS Glacier)等多层系统演进。
如何智能/透明的将数据存储分层,找到老本与性能的Trade-off,是多层存储系统的关键应战。这畛域起步不久,开源畛域没有清楚好的产品,最好的水平由几个大厂的自研数仓存储系统引领。
(图:阿里巴巴 MaxCompute 的多层一体化存储体系)
在上述系统之上,有一层文件存储格局层(File Format layer),与存储系统自身正交。
存储格局第一代, 包括文件格局、紧缩和编码技术、以及Index支持等。目前干流两类的存储格局是Apache Parquet和Apache ORC,区分来自Spark和Hive生态。两者均为 顺应大数据的列式存储格局 ,ORC在紧缩编码上有专长,Parquet在半结构支持上更优。此外另有一种内存格局Apache Arrow,设计体系也属于format,但关键为内存替换优化。
存储格局第二代 - 以 Apache Hudi/Delta Lake 为代表的近实时化存储格局 。存储格局早期,是大文件列存储形式,面向吞吐率优化(而非latency)。随着实时化的趋向,上述干流的两个存储形式均向支持实时化演进,Databricks推出了Delta Lake,支持Apache Spark启动近实时的数据ACID操作;Uber推出了Apache Hudi,支持近实时的数据Upsert才干。
虽然二者在细节处置上稍有不同(例如Merge on Read or Write),但全体形式都是经过支持增量文件的形式,将数据更新的周期降落到更短(防止传统Parquet/ORC上的针对更新的无差异FullMerge操作),进而成功近实时化存储。由于近实时方向,通常触及更频繁的文件Merge以及细粒度元数据支持,接口也更复杂,Delta/Hudi均不是单纯的format、而是一套服务。
存储格局再向实时更新支持方向演进,会与实时索引联合,不再单单作为文件存储格局,而是与内存结构融合构成全体方案。干流的是实时更新成功是基于LogStructuredMergeTree(简直一切的实时数仓)或许Lucene Index(Elastic Search的格局)的形式。
从存储系统的接口/外部配置看,越繁难的接口和配置对应更放开的才干(例如GFS/HDFS),更复杂更高效的配置通常象征着更敞开,并逐渐退步成存算一体的系统(例如AWS当家数仓产品RedShift),两个方向的技术在融合。
展望未来,咱们看到或许的开展方向/趋向关键有:
1)平台层面 ,存储计算分别会在两三年内成为规范,平台向托管化和云原生的方向开展。平台外部,精细化的分层成为平衡性能和老本的关键手腕(这方面,数据湖产品还做得远远不够),AI在分层算法上施展更大的作用。
2)Format层面 ,会继续演进,但大的打破和换代很或许取决于新配件的演进(编码和紧缩在通用途理器上的优化空间有限)。
3)数据湖和数仓进一步融合 ,使得存储不只仅是文件系统。存储层做的多厚,与计算的边界是什么,依然是个关键疑问。
2.2 散布式调度,基于云原生,向一致框架和算法多元化开展
计算资源治理是散布式计算的**才干,实质是处置不同种类的负载与资源最优婚配的疑问。在“后红海时代”,Google的Borg系统,开源Apache Yarn 照旧是这个畛域的关键产品,K8S在大数据计算调度方向上仍在起步追逐。
经常出现的集群调度架构有:
中心化调度架构: 早期的Hadoop1.0的MapReduce、后续开展的Borg、和Kubernetes都是中心化设计的调度框架,由繁多的调度器担任将义务指派给集群内的机器。特意的,中心调度器中,大少数系统驳回两级调度框架经过将资源调度和作业调度分开的形式,准许依据特定的运行来定做不同的作业调度逻辑,并同时保管了不同作业之间共享集群资源的特性。Yarn、Mesos都是这种架构。 共享形态调度架构: 半散布式的形式。运行层的每个调度器都领有一份集群形态的正本,并且调度器会独立地对集群形态正本启动更新。如Google的Omega、Microsoft的Apollo,都是这种架构。 全散布式调度架构: 从Sparrow论文开局提出的全散布式架构则愈加去中心化。调度器之间没有任何的协调,并且经常使用很多各自独立的调度器来处置不同的负载。 混合式调度架构: 这种架构联合了中心化调度和共享形态的设计。普通有两条调度门路,区分为为局部负载设计的散布式调度,和来处置剩下的负载的中心式作业调度。
(图 :The evolution of cluster scheduler architectures by Malte Schwarzkopf)
无论大数据系统的调度系统是基于哪种架构,在海量数据处置流程中,都须要具有以下几个维度的调度才干:
数据调度 :多机房跨区域的系统服务带来全域数据排布疑问,须要最优化经常使用存储空间与网络带宽。 资源调度 :IT基础设备全体云化的趋向,对资源的调度和隔离都带来更大的技术应战;同时物理集群规模的进一步扩展,去中心化的调度架构成为趋向。 计算调度 :经典的MapReduce计算框架逐渐演变到支持灵活调整、数据Shuffle的全局优化、充沛应用内存网络等配件资源的精细化调度时代。 单机调度 :资源低压力下的SLA保证不时以来是学术界和工业界发力的方向。Borg等开源探求都假定在资源抵触时无条件向在线业务歪斜;然而离线业务也有强SLA需求,不能轻易就义。
展望未来,咱们看到或许的开展方向/趋向关键有:
1.K8S一致调度框架:Google Borg很早就证实了一致的资源治理无利于最优婚配和削峰填谷,虽然K8S在“非在线服务”调度上依然有应战,K8S准确的定位和灵敏的插件式设计应该可以成为最终的赢家。大数据调度器(比如KubeBatch)是目前投资的一个热点。
2.调度算法多元化和智能化:随各种资源的解耦(例如,存储计算分别),调度算法可以在繁多维度做更深度的优化,AI优化是关键方向(实践上,很多年前Google Borg就曾经驳回蒙特卡洛Simulation做新义务资源需求的预测了)。
3.面向异构配件的调度支持:众核架构的ARM成为通用计算畛域的热点,GPU/TPU等AI减速芯片也成为干流,调度系统须要更好支持多种异构配件,并形象繁难的接口,这方面K8S插件式设计有清楚的长处。
2.3 元数据服务一致化
元数据服务撑持了大数据平台及其之上的各个计算引擎及框架的运转,元数据服务是在线服务,具有高频、高吞吐的特性,须要具有提供高可用性、高稳固性的服务才干,须要具有继续兼容、热更新、多集群(正本)治理等才干。关键包括以下三方面的配置:
DDL/DML的业务逻辑,保证ACID特性,保证数据完整性和分歧性授权与鉴权才干,保证数据访问的安保性Meta(元数据) 的高可用存储和查问才干,保证作业的稳固性
第一代数据平台的元数据系统,是Hive的Hive MetaStore(HMS)。 在早期版本中HMS元数据服务是Hive的内置服务,元数据更新(DDL)以及DML作业数据读写的分歧性和Hive的引擎强耦合,元数据的存储通常托管在MySQL等相关数据库引擎。
随着客户对数据加工处置的分歧性(ACID),放开性(多引擎,少数据源),实时性,以及大规模扩展才干的要求越来越高,传统的HMS逐渐局限于单集群,单租户,Hive为主的单个企业外部经常使用,为保证数据的安保牢靠,运维老本居高不下。这些缺陷在大规模消费环境逐渐暴显露来。
第二代元数据系统的代表 ,有开源体系的Apache IceBerg,和云原生体系的阿里巴巴大数据平台MaxCompute的元数据系统。
IceBerg是开源大数据平台最近两年出现的独立于引擎和存储的“元数据系统”,其要处置的**疑问是大数据处置的ACID,以及表和分区的元数据的规模化之后性能瓶颈。在成功方法上IceBerg的ACID附丽了文件系统POSIX的语义,分区的元数据驳回了文件形式存储,同时,IceBerg的Table Format独立于Hive MetaStore的元数据接口,因此在引擎的adoption上老本很高,须要各个引擎变革。
基于未来的热点和趋向的剖析,放开的,托管的一致元数据服务越来越关键,多家云厂商,都开局提供了DataCatalog服务,支持多引擎对湖和仓数据存储层的访问。
对比第一代与第二代元数据系统:
展望未来,咱们看到或许的开展方向/趋向关键有:
1.趋向一:湖仓一体进一步开展下, 元数据的一致化 ,以及对湖上元数据和数据的访问才干树立。如基于一套账号体系的一致的元数据接口,支持湖和仓的元数据的访问才干。以及多种表格局的ACID的才干的融合,这个在湖上数据写入场景越来越丰盛时,支持Delta,Hudi,IceBerg表格局会是平台型产品的一个应战。
2.趋向二:元数据的权限体系转向企业租户身份及权限体系,不再局限于单个引擎的限度。
3.趋向三:元数据模型开局打破相关范式的结构化模型,提供更丰盛的元数据模型,支持标签,分类以及自定义类型和元数据格局的表白才干,支持AI计算引擎等等。
本文详细论述了后红海时代,当下大数据体系的演进热点是什么,以及大数据体系下局部子畛域架构的技术解读。