大数据体系的4个热点,4个趋势和3个疑问
admin
2023-06-24 10:43:20
0
作者 | 阿里云计算平台事业部

如今,大数据技术已进入“后红海”时代,成了“水电煤”一样可以普惠人人的技术。同时,新领域仍在不断演进迭代。

本文的上篇 “Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?,阐述了后红海时代下大数据体系的演进热点是什么,以及大数据体系3个子领域的技术解读,包括多层智能化演进的分布式存储系统、统一框架和算法多元化发展的分布式调度系统,和统一化发展的元数据服务。

本文作为下篇,继续对计算引擎、框架与接入、数据开发与治理、智能化、安全与隐私保护、运维6个子领域做技术解读,概述各领域的演进历史、背后驱动力、以及发展方向,并希望和大家一起探讨大数据体系未来演进的技术趋势,以及仍待探索的未解问题。



大数据体系的领域架构


在Shared-Everything架构角度下,大数据体系子领域划分成9个领域:


注:这张图上的前3个子领域:分布式存储、分布式调度、元数据服务已在上篇完成,本文直接从第4个子领域开始分享。

4. 多种计算引擎并存

计算层是整个大数据计算生态的核心,是数据到价值转换的关键。大数据场景中有各类计算形态,如批、流、交互式、多模、图、搜索、等多种计算模式。

大数据领域发展了20年,在“后红海”时代,主流计算模式已经基本固定,形成批处理、流处理、交互式、机器学习四个核心方向,以及一些小众/专门场景的计算模式。在开源社区领域,经过百舸争流式的竞争和沉淀,也基本形成了主流的社区形态。

除了机器学习,前三个方向有一定的overlapping,例如Spark同时支持流、批和部分交互能力。但最终形成广泛影响力的引擎,都是在某一方向建立显著的竞争门槛。

整体看,计算引擎的发展将会在存储计算分离架构基础上,以一套数据支持多种计算模式:

(1)存储计算分离,以及随后的1+N架构(即一套数据之上支持多种计算模式)


(2)批处理——是大数据处理的基础形态,以Bulk Synchronous Parallelism(BSP)为基础原理,从Map-Reduce(MR)模式开始发展起来,所谓“批”指的就是Bulk(也译作Batch)。Map-Reduce的运算框架逐步发展成Direct Acyclic Graph(DAG),上层语言也开始从MR的Java代码向SQL转型,第一版本集大成的批处理开源系统是Hive+Tez。因为Hive2.0是严格BSP模式,每次数据交互均需要落盘,牺牲了延迟和性能。Spark抓住内存增长的趋势,推出基于ResilientDistributed Dataset(RDD)的运算框架,展开与Hive的竞争。当前在开源领域,Hive/Spark是主流引擎,随Spark稳定性和内存控制逐步完善,Spark逐步占领开源市场。目前批处理仍然是最主流的计算形态,整体的优化方向是更高吞吐/更低成本。

最近两年,随近实时方向的兴起(以开源ApacheDelta/Hudi为代表),批处理数据从接入到计算的延迟得的显著的降低,给用户提供了一种成本/延迟的另一个平衡点。

(3)交互式分析——通常是面向分析场景(人驱动,中小规模输入数据/小规模输出数据),在中小规模cook好的数据上(通常是批处理之后的数据),基于更快的存储、更多的内存(bufferpool)、更实时的数据更新(通常是基于LSMTree的方案),也采用更多的OLAP优化技术(例如PlanCache)。优化方向更偏延迟(而非成本和吞吐率)。技术栈发展上,有两个脉络,一个是从分布式数据库角度发展起来,采用MPP架构,例如开源领域的Apache Impala和Clickhouse,自研领域的AWS Redshift。另一个是更偏云原生和大数据的架构,例如Apache Presto。

批处理和交互分析,有天然的统一需求,因此很多自研的分析引擎也包括一定的批处理能力,形成一体化,例如当前如日中天的SnowFlake。而Google BigQuery采用附加交互引擎(内置一个更快的BIEngine)的方式形成一体化。从细节看,交互分析的引擎优化更偏数据库类优化方向,更强调用好Memory和Index,Plan相对简单,对QueryOptimizer要求低,不需要支持丰富的UDF,也不需要做Query中间的failover。批处理引擎更面向吞吐量(Throughput)优化,核心是更优化的Plan以及尽量降低IO,同时对failover要求高(因此部分数据要落盘)。这也是为什么BigQuery选择双引擎的原因。

(4)流处理——采用ContinuousProcessing的计算模式,通过本地状态保存(State)和CheckPoint(CP,用来做failover),形成分布式增量计算引擎。这种计算模式与BSP架构不同。主打的场景是实时大屏,监控报警以及最近流行的实时机器学习。系统面向低延迟优化,处理的是流式写入的数据,一致性模型(Exact-OnceVS Atleast-Once)、LateEvent处理方式、以及Window函数支持是不同流计算引擎设计的取舍。开源领域Spark Streaming、Apex、Heron和Flink经过竞争,Flink因具备完整Exact-Once语义保证和完善的LateEvent处理能力,最终获得社区广泛的关注。

(5) 机器学习(ML)/深度学习(DL)——以统计为基础理论的传统机器学习有丰富的生态,包括Python系、Matlab等等。大数据领域SparkMLib以一套数据多种计算的优势,一度成为大数据传统算法的主流。随AlphaGo引爆深度学习领域,TensorFlow和Pytorch成为业界标杆。目前DL领域仍然处于红海期,模型并行化以及超大模型是近期的热点。特别的,随DL兴起,Python作为标准语言开始流行,Spark推出Koalas用于连接大数据与AI开发,Python有取代Java成为命令式编程类(Imperitive)大数据开发语言的潜力(Decleritive类编程标准一直是SQL)。

(6)其他小众计算模式——因满足不同细分场景,还有包括图计算,文本检索等引擎。图领域细分成三个子场景:图计算、图分析和图学习。分布式图分析场景目前仍未有完善的方案,图语言也在发展期,未形成统一标准。文本检索领域,主要基于倒排索引技术,开源生态ElasticSearch成为生态主流。限于篇幅,这部分不再做更细节的介绍。

展望未来,我们看到可能的发展方向/趋势主要有:

  • 近实时化成为主流:近实时化方案,是在分钟级的延迟上做到数据的一致性,几乎不用依赖大量内存的BTree系统和常驻的服务,将成本降低到几乎和离线一致,在延迟和成本间找到一个新的平衡,会逐步取代部分离线的作业。

  • IoT领域兴起:随设备的智能化和5/6G网络兴起,面向IoT的分析会逐渐火热。计算形态可能会发生变化,从云为中心演进到云边端一体。

  • 大数据平台/引擎整体云原生化:新兴的引擎均基于云的架构重新设计,充分利用云的优势,降低复杂度的同时提供更多价值。随云原生化,Shared-Everything架构成为未来的演进趋势。

  • Learned based优化:机器学习技术会充分融入大数据系统(甚至任何系统)的设计,优化器、调度系统、存储格式、Index/MV设计等多个领域均会大量使用AI的技术来做优化。例如Cost based Optimization中的基于Statistics的Cost推导,会大量被Learn based Statistics取代。

5.框架与接入层

接入层和管控是一个子系统,主要用于服务背后的主系统。从架构和功能角度上看,与大多数服务的接入层差异不大,也不存在明确的演进和代差,因此简要概述。唯一值得一提的是,随越来越多的大数据平台走向“托管化”或者说“服务化”,框架管控层越来越厚,大多数企业级能力增强来自管控部分。例如,计算引擎是数仓类产品的核心,但最终用户需要的远不止引擎本身而是好用的数据仓库产品,就像发动机是汽车的核心部件,但用户所需的是完整、好开的汽车。

接入和管控层,抽象下来,主要功能包括:

a. 前端API接入:是系统对外的接口,通常提供HTTP协议接入,并具有认证、流控能力。部分系统提供Web接入能力。

b. 服务层:包括更多的业务逻辑,例如用户/租户管理,提供服务层面的访问控制,以及服务级别的流控。对于引擎来说,服务层很可能包括编译与作业分发能力,异常作业的检测与隔离等等。有些系统为了简化将API接入与服务层合二为一个服务进程。


设计考虑:

a.服务于背后的主系统,功能随后台变化而变化,并没有“一定之规”。

b.管控层直接决定系统的可用性,因此也需要完善的容灾能力,无状态的服务组件通常依托部署系统实现容灾,对于有状态服务,通常将状态存储在元数据系统或者底层存储系统中。

c.很多独立引擎,特别是开源类,接入和管控层通常比较简单。对于企业级服务来说,很多额外的功能都在本服务扩展,也体现企业级服务的价值。例如:监控/运维能力、审计日志、计量计费、对计算系统热切换的控制等。甚至包括自动化作业调优等高级功能(例如SparkCruise,来自微软Azure托管版的基于历史信息的自动作业调优子系统)。

d.当用户选用多个系统组合搭建一套大数据平台,不同系统都会有自己的管控层,造成服务的冗余和各系统的割裂。因此很多云平台提供商,会致力于抽象统一规范和公共子模块,例如统一认证协议/服务(Kerberos等)、统一权限管理,TerraformAPI标准等。

展望未来,我们看到可能的发展方向/趋势主要有:

  • 托管化 - 框架与接入层是企业级能力增强的关键一层,随托管化成为大趋势,这一层会有大量的企业级能力加入,会逐步成为关键层。

6. 数据开发与治理平台

随着大数据技术在众多领域的广泛应用,大量数据源需要接入大数据平台,多种数据处理引擎和开发语言被各类技术/非技术人员人员使用,复杂业务催生了规模庞大、逻辑复杂的工作流程,数据成为业务的生命线需要重点保护,数据作为业务的原动力需要更加方便快捷的被分析和应用。

让大数据计算平台真正能够服务于业务,还需要一系列数据研发和数据治理利器,以帮助数据工作者低成本和高效地获取数据洞察,实现业务价值:

1. 数据集成:支持关系型数据库、大型数仓、NoSQL数据库、非结构化数据、消息队列等数据源之间的数据同步,包含批量数据同步、实时数据同步、整库数据迁移等,解决云上、跨云、跨地域以及本地IDC机房等复杂网络环境之间的数据同步问题。

2. 元数据服务:支持不同数据源的元数据发现与元数据归集,并构建数据目录和数据血缘服务,同时为上层数据开发与数据治理提供元数据服务。

3. 数据开发:提供在线数据开发IDE,支持多种计算存储引擎,提供批计算、实时计算、交互式分析、以及机器学习等一体化数据开发服务,为各种技术/非技术人员提供高效极致的ETL/ELT研发体验。

4. 调度系统:支持大规模、高并发、高稳定性的细粒度周期性任务调度,支持流处理、批处理与AI一体化数据任务编排,保障数据生产的时效性、稳定性。

5. 数据治理:提供数据资产管理、数据质量控制、数据安全管理、监控告警、数据标准、成本优化等服务,保障数据仓库能够规范、健康、合规和可持续发展。

6. 数据服务:提供快速将数据表生成数据API服务的能力,连接数据仓库与数据应用的“最后一公里”,实现灵活可控的数据共享交换服务。

展望未来,我们看到可能的发展方向/趋势主要有:

  • 低代码开发与分析:数据的获取、分析与应用将逐步从专业开发人员覆盖到更多的分析师和业务人员,因此数据开发与分析工具将逐步从专业代码开发工具向低代码化、可视化工具演进。甚至是基于NLP和知识图谱技术,实现通过自然语言执行数据查询。低代码化开发与分析工具让非技术人员也能轻松获取数据洞察,实现数据价值的普惠,实现“人人都是分析师”。

  • 智能编程:在传统的ETL开发过程中,存在着大量重复的或相似的编码工作,未来将在AI的加持下,通过语义分析、数据血缘探测、输入意图预测等技术,以智能编程助手的形式帮助开发人员实现更高效的编程。

  • 开发即治理:过去我们大多习惯于先开发后治理,最终则让数据治理成为了负担。随着数据规模的不断增长、数据安全与隐私保护越来越受关注、数据业务化的持续发展,将不再允许数据治理仅仅是事后行为,数据治理将会融合到覆盖事前、事中和事后的大数据生产与应用的全链路中,数据开发与治理将协同并进。

7. 智能化

随着大数据平台及其所承载业务的发展,我们也面临着新的挑战:

1. 10PB到EB级数据和百万级别作业规模,已经成为主流,海量数据和作业靠人很难管理。传统的DBA模式或数据中台团队不再胜任。

2. 多种数据融在一起,人无法在海量规模上理解数据的所有价值。

3. 大数据系统经过多年发展,如果需要实现“跃迁”式的进步,需要体系结构层面的改造。

因此AI for System的概念兴起,基于AI的能力做系统的优化,在数仓领域我们可以称之为自动数仓(AutoData Warehouse)。数据湖领域也可以有更多的自动化,但因为数仓方向的数据管理/调优能力发展更早,这个领域更领先。下图是一个基本的自动数仓能力分类。


自动化本身并不太可衡量,我们定义了一个“自动数仓”的能力分级,类比“自动驾驶”。分为L1-L5。

1. L1级:运维能力白屏化和工具化。目前绝大多数系统都可以做到这个层次。

2. L2级:更好的系统托管化,底层系统对用户透明。例如小文件Merge自动化、软硬件升级透明、自动loadbalance等。很多全托管系统都可以做到这个层次(例如Snowflake、MaxCompute)。

3. L3级:中台能力的自动化,辅助数据关联与理解,建模与调优。包括数据血缘,相似度,冗余度,使用情况与自动评分。辅助标签系统,辅助中台建设。市面上的很多数据中台产品聚焦在这一层。

4. L4级:系统具备自学习能力。基于历史信息的性能调优(自动Parallelism,自动冷热数据分层等等),资源与优先级的动态调配,自适应的监控和报警能力,自动数据异常识别。目前大多数系统的能力边界在此,有巨大的发挥空间。

5. L5级:自动化建模。包含更高阶的数据理解,能够自动发现数据的内在关联与冗余度,根据数据访问情况,自动维护数仓体系。


最近1-2年,自动化资源管理和自动化作业调优成为热点,有非常多的研究性论文。几个核心元产品也推出新能力,例如AWSRedshift的自动workload mgmt、自动key sorting和table sorting,微软Azure的SparkCruise(@VLDB2021)用来抽象公共子查询做MaterializedView。

智能化作为大数据体系的发展趋势之一,上述内容即为我们对这个子领域的未来展望。

8. 安全与隐私保护

随着大数据的发展,数据在多方数据融合场景下能发挥更大的价值。然而在这种场景下用户的隐私保护以及数据的合规问题成为了严重的问题。问题的本质是数据的开放性与使用安全性的平衡。安全能力,包括数据安全/隐私保护能力,是大数据体系中的重要能力基线之一。

信息的可用性、信息的完整性、以及信息的保密性是信息安全的三个基本要素。我们将企业级大数据中台要面临的安全风险, 根据其所涉及的系统及技术领域的不同,分为三个层次。

1. 最基础的层次是数据中心的物理安全与网络安全,数据中心是构建大数据中台的基础,数据中心自身安全性和网络接入安全性直接影响到企业大数据中台的可用性。主要包括数据中心保障设施、数据中心安全管控、数据中心的网络安全等几个维度的建设。当云架构成为主流,物理安全方面通常由云厂商承担。