乐趣区

关于大数据:星环科技自研技术加速大数据从持久化统一化资产化业务化到生态化

从 2013 年成立开始,星环科技就专一于大数据根底技术与企业数据业务的更好联合,同时面对中国更为简单的数据利用场景,研发了多种更贴合国内大数据利用需要的大数据管理技术,在大数据技术畛域有多项根底技术冲破。星环科技在保持技术自研的路线上,发明了多个世界级的技术成绩,本篇介绍星环科技大数据技术。

— 星环科技大数据技术概述 —

为了应答新的数据业务化需要,解决原有的技术问题,星环科技从新设计大数据技术栈,建设一个高度对立的数据平台,可能无效的解决大数据的 4 个 V 问题,买通大数据价值输入的技术链条,从而减速大数据从长久化、统一化、资产化、业务化到生态化的价值门路,这就是星环科技大数据 3.0 技术体系。

星环科技 2015 年即实现了基于 Hadoop 的分布式剖析型数据库,是首个反对残缺的 SQL 规范、存储过程、分布式事务的分布式剖析型数据。同年推出低延时流计算引擎,在业界率先推出 StreamSQL 的 SQL 语言扩大,升高流利用开发的难度,同时推出延时低于 5ms 的计算引擎,远低于 Spark Streaming 的计算延时。

2017 年在业内率先推出基于 Docker 和 Kubernetes 的大数据云服务,实现大数据产品更好的跨平台和云化能力,是业内最早采纳 Kubernetes 技术的厂商,而 Cloudera 到了 2020 年 Q3 才实现相干的研发工作。

2018 年公布反对万亿级图点和边数据的分布式图数据库,提供了弱小的图剖析与存储能力,减速了认知智能的计算。同年公布基于闪存的新一代分布式剖析数据库,基于 Raft 协定和闪存自研的新一代列式存储,可能显著的晋升交互式剖析性能,满足数据仓库和全量数据交互式剖析的场景要求。

— 设计考量与总体架构 —

在设计之初,咱们定义新一代的大数据技术必须具备以下特点:
(1)对立交融的数据平台,取代混合架构目前的企业数据业务架构中,往往须要蕴含数据湖、数据仓库、数据集市、综合搜寻等不同数据系统,很多企业采纳简单的混合架构,不仅产生宏大的数据冗余,也重大限度了数据利用的时效性。新的大数据平台须要能一站式的满足所有需要,应答从疾速响应到海量剖析的各层级需要,淘汰混合架构的模式。(2)开发方式的交融,SQL 作为对立接口 SQL 作为通过历史测验的结构化查询语言,具备宏大的用户群和灵活性,而以往通过 API 开发的形式存在利用兼容性差、开发难度低等问题。新一代大数据平台须要应用 SQL 来反对全副性能,包含数据仓库、在线交易、搜索引擎、时空数据库等,升高开发者门槛,放慢产品开发与上线速度。
(3)大数据云化,推动大数据普惠化云计算的弹性和随处接入能够让更多的数据业务和开发者应用大数据技术,因而新的大数据技术须要可能提供云化的能力。在硬件层面上,大数据平台对 CPU、GPU、网络、存储等资源进行对立治理和调配,基于容器技术实现云上的大数据利用对立部署,平台租户按需申请大数据的技术和产品。
(4)大数据与利用生态的交融,撑持数据业务化和业务数据化数据业务化是大数据技术最终的价值体现,在数据层面上,平台所有数据对立存储,建设对立的数据仓库与数据资产目录,各业务部门依据需要调用;在模型层,通过建设模型市场,租户训练好的模型能够抉择一键公布至模型市场,其余租户间接调用。在应用层,平台内用户可将业务验证过的利用公布至企业级利用市场,共享给其余用户,所有运行的利用被对立治理。
为了满足企业对大数据的更高的交融要求,同时可能撑持新型的数据存储和计算要求,星环科技整体上从新设计了大数据技术栈,同时尽量保障各个层级之间由通用的接口来买通,从而保障后续的可扩展性,防止了 Hadoop 技术的架构毛病,同时逐渐实现了大数据根底技术的自主研发,通过 7 年多的倒退,整体技术栈曾经根本实现了自研过程。

上图是星环科技大数据技术栈的逻辑架构图。自下而上,最底层是能够治理和调度各种计算工作的资源调度层,咱们抉择基于 Kubernetes 技术来打造。随着数据利用的倒退,计算工作不仅仅只是 MapReduce,还可能是 Spark、深度学习,甚至是 MPI 类的高性能计算工作,也能够是弹性的数据利用,因而专门为 Hadoop 设计的 YARN 就无奈满足需要。通过对 Kubernetes 和大数据底层的翻新,咱们的资源调度层不仅能够撑持各种计算工作,还能够与云计算底层买通,解决大数据云化的问题。

为了更好的适应将来的数据存储与剖析的需要,撑持各种新的存储引擎,咱们形象出了对立存储管理层,可能插拔不同的存储引擎来实现对不同类型的数据的存储、检索和剖析的申请。将来针对某些特定的利用可能都会有专用的分布式存储引擎来撑持,在应用对立的分布式块存储管理层之后,架构师们只须要设计一个单机版本的存储引擎或者文件系统,并接入存储管理层,就能够实现一个分布式存储引擎,反对分布式事务、MVCC、索引、SQL 表达式下推等性能,这样能够极大的升高存储开发的复杂度。

在块存储管理层之下就是各个数据库内核或存储,包含用于剖析型数据库的列式存储、NoSQL 的 Bigtable、打造搜索引擎的全文索引、面向图计算的图存储引擎等,这些引擎接管下层的执行打算,而后生成对存储层的 scan/put/write/ 事务等操作,实现特定的解决工作。在存储层之上就是对立的计算引擎层,咱们抉择了基于 DAG 的计算模式来反对大数据的各种计算。绝对于 MPP 模式,DAG 计算可能更好的适宜大规模集群之间的各种通信和计算工作,并且有更高的可扩展性,可能满足包含图计算、深度学习在内的多迭代的计算个性,同时通过代码生成等技术,也能够将性能优化到十分靠近 native 代码的程度。

最下面是对立的开发接口层,对剖析数据库、交易数据库等,咱们通过规范的 SQL 开发接口提供给开发者,升高数据开发和剖析的复杂度。此外,通过欠缺的 SQL 优化器设计,能够做到无需非凡的优化,SQL 业务也能有十分高的性能,甚至比间接 API 级编程更好,而无需理解底层架构的细节。对于图数据库,咱们提供 Cypher 语言接口,而优化器零碎则全副复用 SQL 优化器。此外,开发接口层还提供了对立的事务处理单元,从而保证数据开发都有残缺的事务保障,确保数据的 ACID。

— 开发接口层 —

对立的开发接口层的外围是 SQL 编译器、优化器和事务管理单元,它能够提供给开发者比拟好的数据库体验,无需基于底层 API 来做业务开发,保障对传统业务的反对水平,还能够更好的优化业务。

不同于传统的大数据 SQL 引擎(如 Hive),咱们从新设计了 SQL 编译器,它蕴含了三个 Parser,能够从 SQL、存储过程或者 Cypher 语句生成语义表达式,以及一个分布式事务处理单元。一个 SQL 通过 Parser 解决后,会再通过 4 组不同的优化器来生成最佳的执行打算,最终将执行打算推送给向量化的执行引擎层。

  • lRBO(Rule-Based Optimizer)依据已有的专家规定进行优化,不同的存储引擎或者数据库开发者会提供专门的优化规定,目前咱们曾经积攒了数百条优化规定。其中,最无效的优化规定都是针对 IO 相干的优化,如过滤下推、隐式过滤条件折叠、基于分区或分桶的 IO 优化、Partition 打消、多余字段打消等技术,将 SQL 中可能节俭掉的各种 IO 操作尽最大可能的打消,从而晋升整体性能。
  • ISO(Inter SQL Optimizer)用于存储过程外部的优化,当一个存储过程外面有多个 SQL 存在相似的 SQL 查问或剖析的时候,它能够将这些操作合并在一起,从而缩小不必要的计算工作或者 SQL 操作。为了让存储过程有较好的性能,PL/SQL 解析器会依据存储过程中的上下文关系来生成 SQL DAG,而后对各 SQL 的执行打算进行二次编译,通过物理优化器将一些没有依赖关系的执行打算进行合并从而生成一个最终的物理执行打算 DAG。因而,一个存储过程被解析成一个大的 DAG 从而 stage 之间能够大量并发执行,防止了屡次执行 SQL 的启动开销并保障了零碎的并发性能。
  • MBO(Materialize-Based Optimizer)是基于物化视图或 Cube 的优化器,如果数据库中曾经有物化视图或 Cube 已构建好,而 SQL 操作可能基于这个物化对象来优化的话,MBO 就会生成对相应的物化对象的操作,从而缩小计算量。
  • CBO(Cost-Based Optimizer)即基于老本的优化器,它会依据多个潜在的执行打算的 IO 老本、网络老本和计算成本来抉择一个最佳的执行打算,而老本的估算则来自元数据服务。在将来,咱们还打算引入机器学习的能力,通过对历史执行 SQL 的统计信息的无效剖析,生成更加强壮的执行打算。一些十分无效的优化规定包含多表 Join 程序调优、JOIN 类型抉择、工作并发度管制等。

SQL 编译器和优化器对大数据技术栈十分要害,正如咱们在前序章节的剖析论断,它是可能决定整个技术的生态建设是否胜利的要害。除了 SQL 接口外,分布式事务和接口对大数据技术栈也是十分要害的组成。能够简单的零碎架构和容错设计下保证数据的一致性,以及有多种事务隔离级别的反对,从而可能拓展数据库去撑持更多的利用。

— 计算引擎层 —

咱们的执行引擎抉择了基于 DAG 的模式,此外为了有更好的执行效率,咱们应用量化执行引擎技术来减速数据处理。量化执行引擎即每次计算对批量的数据进行解决,而不是一一记录。对列式的数据存储,向量执行引擎有十分高的提速成果。另外与学术界很多研究进展类似,星环科技也采纳的是同一个计算引擎反对实时计算和离线计算,从而更好反对流批对立的业务场景。

在解决数据库的计算性能的可扩展性的办法上,目前支流的计算框架有两种,一种是基于 MPP(Massive Parallel Processing)的减速形式,另一种是基于 DAG(Directed Acyclic Graph)。整体上来看,基于 MPP 的形式在容错性、可扩展性和对业务的适配上灵活性有余,不能满足咱们对将来多样化的数据服务撑持的需要,因而咱们抉择了基于 DAG 的计算模式,同时在它的根底上深度优化执行性能,既能反对更多样化的数据计算需要,也可能取得极致的性能。

从 2018 年开始,企业对实时计算的需要的增长十分迅速,此外因为实时计算多是生产零碎,绝对于剖析零碎在技术上也有更高的要求,包含:

  • 高并发:霎时高并发的数据操作或者剖析
  • 低延时:要求毫秒级的解决响应工夫
  • 准确性:数据不丢不重、业务高可用
  • 业务连续性:在线对接生产的数据业务

为了可能零碎的适应业务需要,咱们放弃了对 Spark 或者 Flink 等开源计划,而是残缺的设计了整个的实时计算产品。首先,咱们从新设计了流计算引擎的计算模式,保障其对数据流的计算延时可能低至 5 毫秒级别,同时必要残缺的设计了整个数据通路,确保其数据的不丢不重,以及整个链路的安全性。

此外,在计算模式上,流数据不仅能够跟其余工夫窗口的数据进行简单计算,还须要跟历史数据(长久化在各种数据库中的数据)进行计算,因而咱们引入了 CEP 引擎 (Complex Event Processing Engine),可能对多个输出事件进行计算,执行包含简单模式的匹配和聚合计算等,也反对各种滑动窗口类计算,同时也能够与历史数据或长久化数据进行关联计算。

对于简单的利用业务,咱们设计了规定引擎(Rule Engine)来解决业务规定,并且能够兼容其余规定引擎设计的业务规定,从而能够实现简单的业务规定。最初为了更好的应答业务指标,咱们也在流引擎中减少了基于内存的分布式缓存,用于减速数据指标的高速存储和读取,同时反对数据的订阅与公布。

在 SQL 模型层,咱们定义了 StreamSQL 的 SQL 语言扩大,新增了 Stream、Stream Application 和 Stream Job 等对象。一个 Stream 用于接管从一个数据源传来的数据,能够是间接接管,也能够对数据进行肯定的转换操作。一个 Stream Job 定义了具体的流上的数据操作逻辑,如规定匹配逻辑、实时 ETL 逻辑等。一个 Stream Application 是一组业务逻辑相干的 Stream Job 的组合。

— 分布式块存储管理层 —

对立的分布式块存储管理层,是咱们对新一代大数据技术做的重大革新。数据的一致性是分布式系统的根基,Paxos 协定的呈现在实践上保障其可行性,而之后更加简洁的 Raft 协定在工程的实现上更加高效。而工程上多个开源分布式存储在实现数据高可用和数据一致性的形式上也有不少的有余。譬如 Cassandra 在架构上可能保障高可用,然而它会存在 Replica 数据不统一的问题,此外也无奈反对事务性操作;HBase 底层应用 HDFS 保证数据长久化和一致性,然而 HMaster 采纳了主备的形式,切换过程可能比拟长,因而有单点故障问题,不能保障可用性;Elasticsearch 也相似,分区内数据的一致性在生产中也是一个问题。

随着企业数据业务倒退的深刻,更多的专用存储引擎的需要会被引入,譬如专门面向地理信息的数据存储与剖析、图数据、高维度特色的存储与计算等专用场景,再加上对现有的 4 大类 NoSQL 存储的需要,针对每个场景去实现独自的存储引擎工作量十分大,也有反复造轮子问题。

为了解决这个问题,咱们将各个分布式存储的通用的局部形象进去放在存储管理层,包含数据的一致性、存储引擎的优化接口、事务的操作接口、MVCC 接口、分布式的元数据管理、数据分区策略、容错与灾备策略等性能,通过自研的基于 Raft 的分布式管制层来协同各个角色。各个存储引擎只须要实现其单机的存储引擎,而后接入对立的存储管理层就能够成为一个高可用的分布式存储系统。

在实现上,咱们应用 Raft 协定来做各个存储之间的一致性保障,次要包含:

  • 各个单机存储组成的 tablet 正本之间的状态机同步
  • Master 的选主和状态机同步
  • 事务协同组的选主和状态机同步
  • 存储服务的复原服务能力
  • 其余治理运维能力

— 资源调度层 —

相似于操作系统的调度模块,资源调度层是整个大数据平台可能无效运行的关键技术。下图是资源调度层的总体架构,最底层是 Kubernetes 服务,在其下层运行着咱们自研的产品或服务。其中配置核心用于实时的收集和治理云平台内运行的服务的配置参数;物理资源池是通过各个资源池化后的逻辑资源;云存储服务是基于本地存储开发的分布式存储服务,会长久化有状态服务的数据,保障利用数据的最终长久化和零碎灾备能力;云网络是自研的网络服务,提供利用和租户相似 VPC 的网络能力。在此之上是云调度零碎,它接管利用的输出,从配置核心、标签核心、云存储和网络服务中获取实时的运行指标,从资源池中获取资源的应用状况,从而依据运行时的信息进行准确的调度决策。调度零碎之上就是各类的应用服务,包含大数据、AI、数据库类,以及各种微服务,也就是云平台能够良好撑持的各种利用。

— 小结—
本篇介绍了星环科技大数据技术,将来星环科技将持续欠缺这个新的大数据架构体系,减少更多的新型数据存储与计算能力,同时欠缺数据业务化的技术拼图,包含基于机器学习的数据治理、数据服务公布等能力,进一步夯实数据与业务之间的技术缺口,让大数据技术更好的施展出价值。

退出移动版