产品介绍

总体介绍

BDOS Kubernets Data Platform(以下简称:KDP)是智领云研发团队基于容器、K8s和大数据技术研发的大数据平台产品。这一产品的诞生,是要利用云原生的资源隔离、作业混排、存算分离、标准化部署运维等技术优势,解决传统大数据平台因本身技术局限性而无法解决的资源利用率低、部署运维复杂、难以弹性扩容等技术难题,帮助用户花更少时间、用更少的资源去进行大数据平台的部署、配置和运维,投入更多的时间和精力去进行大数据开发和分析,更高效、更稳定地从海量数据当中挖掘数据的价值并提升企业的数字化能力。

KDP支持主流的大数据计算和存储引擎,强化了这些大数据组件在生产环境下的安全性、稳定性和运行性能。同时,平台的大数据集成基座实现大数据组件的标准化部署和运维,统一了所有大数据组件与可观测性服务的适配,并且支持了在K8s调度机制之上的更精细化的作业调度机制。平台支持在公有云和私有云部署,支持社区版的K8s和主流的商业版K8s,适用于不同的企业环境。

智领云相信云原生技术是企业数字化转型的必经之路,云原生大数据平台则是取代传统大数据平台的必然结果。智领云研发团队将会密切关注云原生技术和大数据技术的发展路线,在大数据技术的云原生化方向为企业提供更好的产品和技术服务,帮助企业打造面向未来的云原生数字底座。

云原生大数据架构优势

随着云计算技术的发展,云服务规模的不断增加,数据中心的不断扩张,云平台上的负载均衡,资源分配,迁移技术变得越来越重要。传统云计算模式下,通过虚拟资源的弹性扩展提高云平台的计算能力,采用的分布式计算框架和存储框架来保证大数据分析工作的高性能。而这些分布式框架在传统方式下面临很多的挑战。

根据CNCF(云原生计算基金会)的定义,云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使系统开发人员能够轻松地对系统作出频繁和可预测的重大变更。云原生技术为云平台分析工作负载提供了极大的支持。

传统大数据平台,是指的以Hadoop为中心的大数据生态技术。一个Hadoop集群包含HDFS分布式文件系统和以Yarn为调度系统的MapReduce计算框架。随着时代的发展,大数据技术使用逐步地深入,大数据开发需求变得越来越旺盛,企业对多租户环境下大数据开发的效率、大数据集群资源利用率、新的计算存储引擎、人工智能和机器学习技术的集成速度提出了越来越高的要求,而传统大数据平台在面对这些需求时则显得有点束手无策,出现了无法克服的困难。KDP在云原生等技术加持下有如下优势。

提升集群资源使用率

传统大数据平台对于实时数据分析作业和离线数据分析作业是分开管理部署,各自采用独立的资源调度管理系统,比如离线作业使用Yarn调度,实时作业采用Flink自带的 调度机制。实时作业运行时间较长,对资源的需求存在周期性,比如白天使用资源较多,晚上使用资源较少,整体资源使用率不高。离线作业一般都是资源密集型的计算,比如大数据分析、机器学习模型训练等,但其有一定的运行周期,比如每小时或者每天运行一次,可以容忍较高的时延。实时和离线这两类作业的服务负载在分时复用、资源互补上存在极大的优化空间。但是传统大数据平台没有采用两种作业混部的方式,一是混部会带来底层共享资源(CPU、内存、网络、磁盘等)的竞争,会导致分析作业性能下降,而且这种下降是不可预测的,二是两种作业在传统大数据平台下无法使用统一的资源调度系统。

KDP以K8s技术为基座,将整个集群的资源形成了一个可以共享的资源池。同时,KDP实现了实时分析作业和离线分析作业的统一调度机制,比如Hive离线作业以Spark程序的方式运行,实时作业以Flink程序的方式运行,而Spark和Flink都采用Volcano来进行统一的精细化调度。在此基础之上,KDP实现了实时分析作业和离线分析作业在同一集群的混部,即同一个KDP节点上既可以运行实时分析作业,也可以运行离线分析作业。传统大数据平台的整体资源使用率一般只有30%左右,KDP通过作业混部能把集群资源使用率提升到60%以上。

部署在公有云环境下的KDP,通过云服务提供商提供的接口,可以实现对计算和存储资源的动态扩缩容。当集群需要更多资源的时候,KDP会启动更多的虚机加入集群,当用户资源使用率下降的时候,新分配的虚机资源可以被收回。通过动态扩缩容,系统有比较灵活的手段来应对短时间出现的性能瓶颈问题,而这些问题在传统大数据平台是难以应对的。在私有云环境下部署的KDP,通过虚拟化系统提供的接口也能实现一定程度的资源动态扩缩容,可以把备用的一部分虚机在不同的系统中进行共享,提高这部分虚机的资源复用率。

简化大数据组件集成及配置安装流程

在传统大数据技术架构下,大数据平台部署一直是一个复杂和费时的工作。每个大数据组件都有自己的部署方式和配置管理,大数据后台工程师需要了解和掌握10到20种Hadoop生态的技术,才能完成一个大数据平台的技术选型和部署准备工作。在部署过程中,大数据后台工程师除了要解决操作系统兼容性、大数据组件版本兼容性、软件包依赖、分布式集群网络配置等一系列问题,还要对各个大数据组件进行配置调整,以实现运行的稳定性、数据的安全性、监控指标的可观测性等生产级系统需要具备的能力。基于K8s技术构建的云原生大数据平台也存在类似问题,下面这张图是Data on Kubernetes社区在今年发表的报告中提到的一组数据,在调查了500多名公司高管和技术负责人以后,超过半数(53%)的受访人认为,在K8s中管理数据负载的最大挑战是缺乏自动化的大数据组件部署和配置管理。

为了应对这一挑战,智领云研发团队自主研发了KDP大数据集成基座,形成了自动化的、标准化的云原生大数据平台配置管理流程。该集成基座采用了统一的K8s文件配置方式对大数据组件的镜像文件、软件依赖、部署步骤、与K8s网络和存储的对接、计算和存储资源的配额、监控指标的输出、日志文件的采集等内容进行描述,然后安装程序会通过这些配置文件来自动执行大数据组件到K8s集群的部署、更新、运维、升级等操作。这样一个标准化的云原生大数据平台集成和配置流程有以下几点优势:

提高计算作业的运行效率

传统大数据平台主要依赖Yarn来进行计算作业的调度,但Yarn有几个关键的技术局限性严重影响了计算作业的运行效率。首先,Yarn在调度过程中,是一种单线程的调度机制,随着集群规模增长和作业队列数目的增加,调度耗时越来越长。其次,当集群资源出现不足造成计算作业延迟完成的情况下,Yarn无法实现集群级别的资源扩展,比如说,自动加入一个计算节点。另外,在多租户环境下,Yarn很难实现计算作业之间的隔离,很容易出现软件依赖故障,比如说,计算作业加载了错误版本的程序包造成某个类和方法找不到,解决这些问题需要对Yarn集群进行停机并做全局性的调整。

KDP的调度机制是采用Volcano作为一级调度和K8s作为二级调度来实现的,Volcano对K8s的缺省调度机制做了更精细化的管理,提供了更灵活的调度策略。Volcano可以在同一个K8s集群上部署多个实例,分别管理不同命名空间或者不同节点组(node group)的作业调度,所以基于Volcano的调度机制不会随着作业数目的增长而出现调度延时。根据Volcano社区发布的技术文献,锐天投资公司的大规模分布式离线计算平台部署了多个Volcano实例,每天通过Volcano调度的作业有30万个。

KDP支持集群的弹性扩容,在集群的计算资源出现不足的情况下,利用K8s的弹性扩容技术来从容应对计算作业的性能瓶颈。首先,KDP对所有大数据组件都配置了基于Prometheus开源监控系统的监控指标,通过K8s的HPA(Horizontal Pod Autoscaling)API对象,KDP可以利用监控指标(CPU使用率等)自动扩容或者缩容大数据服务中的Pod数量,当计算负载增加时,KDP将自动增加大数据服务的Pod数量,提高系统稳定性,而当计算负载下降时,KDP将自动减少服务的Pod数量,减少对集群资源的请求量。另外,在公有云部署时,KDP可以配合公有云服务提供商的API接口,实现集群规模的自动伸缩,在需要计算节点的时候增加集群节点数,在集群计算负载下降的时候减少节点数,节省集群的整体成本。

最后,我们基于TPC-H测试框架的测试结果显示,在KDP上运行Spark,相比在传统大数据平台的Yarn上运行Spark,要节约5%左右的时间。经过调研发现,Yarn上运行的Spark程序在JVM GC上要花费更多的时间,频繁的GC会阻止Spark executor的进程从而影响整体计算性能。

总体上看,在计算作业的运行效率方面,KDP相比传统大数据平台具有明显的优势,因为KDP采用了灵活的、高并发的调度系统,支持计算资源以及集群资源的动态扩容,以及更好的计算性能。

降低运维成本并提升运维效率

传统大数据平台的运维成本是很高的,需要有熟练技能,了解和掌握各种大数据技术的运维工程师。下图是2018年根据当时美国薪资水平的计算出来的,一个公司每年大数据平台的运维人力成本在60万到120万美元之间。考虑到国内的人力成本会低于美国,折算一半的话一年也有200万到400万人民币的运维人力成本。

传统大数据平台运维的主要工作难度在于以下几点。首先是运维人员要掌握每个大数据组件独特的运维流程和运维命令,比如HDFS datanode扩容和Kafka broker扩容就是两个完全不同的操作方式,运维人员对这两个不同的技术都要有深入了解。其次,类似datanode和broker扩容这样的运维工作都比较耗时,运维人员首先需要申请资源,安装软件,然后进行配置优化,绝大部分工作都是通过各种脚本和命令进行人工操作。另外,运维人员所依赖的大数据日志系统在传统大数据平台下很复杂,需要在集群每个节点上部署和运维类似Flume的日志采集器,同时部署ElasticSearch这样的日志系统对日志进行存储和查询,而ElasticSearch本身也是需要不少资源,并存在一定运维复杂度的。

KDP大数据集成基座实现了大数据组件运维操作的标准化,通过K8s标准的operator操作方式完成大数据组件的部署、升级、扩容、备份等操作,熟悉K8s运维的工程师很快就能掌握这种运维方式。这种标准化的运维方式相比去掌握各种不同的大数据组件的运行原理和运维操作,其学习成本要低了很多。同时,KDP将一些基本的大数据组件运维操作集成到了KDP的运维管理界面,进一步提升了运维人员执行运维操作的效率。

由于KDP以容器化的方式运行大数据组件,同时又支持了大数据集群的动态资源扩容和集群规模扩容,所以类似datanode和broker扩容这样的运维操作就变得很简单了。比如说增加一个datanode到HDFS,如果不需要进行集群规模扩容,一个简单的operator命令就可以将datanode运行容器数增加一个,一个新的datanode实例就运行起来了,如果需要进行集群规模扩容,在公有云的部署方式下,运维人员也只需要在KDP中先运行一个新增节点的命令。

KDP的日志系统相比ElasticSearch是一个轻量级的系统,占用系统资源要少了很多。首先,日志的采集是通过为大数据组件的pod部署一个sidecar容器来实现的,这个比在各个节点上部署和运维一个Flume要简单了很多,因为这个sidecar的部署是标准化的大数据组件部署的一部分。其次,所有日志都是以流文件的形式推送和存储在Loki日子系统中,运维人员可以在Grafana界面上很方便地进行日志的浏览和查询,也可以利用KDP的logviewer服务将日志文件下载后进行查询。另外,Loki支持以对象存储的方式存储日志,借助K8s存算分离的技术,我们可以进一步降低日志系统的整体资源消耗成本。

KDP的云原生改造

KDP的主要功能是提供了一个标准的集成基座,将成熟的开源大数据组件以标准化的方式集成到K8s平台上,确保它们可以按云原生的方式部署,运行和运维。

K8s标准集成基座

目前,云原生开源社区已经提供了不少支持大数据组件部署的operator或者helm chart,比如Google非官方开源的Spark operator,Strimzi开源的Kafka operator,以及几个工程师一起开源的HDFS helm chart。但这些开源的operator和helm chart没有解决大数据组件在云原生环境下部署和运维的几个核心问题:

为了解决这些问题,智领云研发团队自主研发了KDP大数据集成基座:

  1. 形成标准的云原生大数据组件集成流程,将开源大数据组件与统一系统服务(多租户、监控、报警、日志、网络、存储等)对接,形成标准化配置文件;
  2. 通过配置文件来完成大数据组件到K8s集群的发布、更新、运维、升级操作;
  3. 提供大数据组件的可观测性服务,包括大数据组件以及其执行的workload的日志,性能及稳定性的指标监控和报警,计费以及审计功能;
  4. 为计算大数据计算引擎提供云原生的调度机制支持,提升资源使用率与运行效率。

大数据组件的K8s改造

在标准集成基座的基础上,KDP集成了主流的大数据计算和存储引擎,所有大数据组件均以容器的方式运行在K8s系统之上。在下面的列表中,我们可以看到该平台所支持的大数据组件及其版本。在集成这些大数据组件的过程中,我们保留了其原生的访问方式(UI、接口、协议等),但是通过对开源代码的修改和扩展,强化了标准化的部署和运维、统一的可观测性、统一的安全认证和鉴权机制、以及性能上的优化等方面。

大数据组件 版本
容器化编排引擎 Kubernets 1.20.4
分布式文件系统 HDFS 3.1.1
分布式数据仓库 Hive 4.0.0-SNAPSHOT
分布式计算引擎 Spark 3.3.0
分布式消息队列 Kafka 2.8.1
分布式搜索和分析引擎 Elasticsearch 7.6.1
分布式对象存储 MinIO RELEASE.2022-09-07
批流一体计算引擎Flink 1.14.6
交互式开发环境 JupyterLab 3.4.3
权限管理框架 Apache Ranger 2.1.0
计算机网络授权协议 kerberos krb5-1.15
指标监控系统 Prometheus 2.37.0
日志聚合工具 Loki 2.5.0
数据可视化和监控平台 Grafana 9.0.3
告警管理系统 AlertManager 0.24.0

相比传统的主流大数据组件,我们对Hadoop的支持只保留了HDFS,而没有选择其计算框架Yarn,一是因为Yarn在资源隔离方面的局限性,二是因为采用了K8s作为容器编排和调度引擎后,Yarn的存在显得有些多余,三是MapReduce计算引擎在性能上已经被Spark超越太多。为了支持Yarn所提供的各种调度策略,我们在计算引擎方面是支持云原生的精细化调度引擎Volcano,作为K8s之上的二级调度系统。保留HDFS的原因是因为目前还是有很多的企业在使用HDFS作为数据仓库的存储方案,在迁移到云原生系统以后,基于HDFS的这些作业可以直接迁移过来运行,而不需要重新开发。

KDP另一个技术特点是通过Spark计算引擎在K8s上运行Hive SQL。Hive是深受众多大数据开发者喜爱的数据仓库开发工具,它使开发者通过简单易学的SQL语言进行大数据分析作业的开发和数据仓库的建设。以强大的Spark计算引擎来运行Hive SQL,则不仅仅是简化大数据分析的开发流程,同时也提升了大数据计算的运行速度。据我们了解,KDP是业界首个基于Spark计算引擎在K8s上运行Hive SQL的产品。数据存储方面,我们支持同时在Hive SQL中访问HDFS或者对象存储中的数据。也就是说,我们可以将热数据保存在HDFS中,冷数据保存在相对便宜的对象存储(比如MinIO)中,通过数据仓库工具Hive同时访问冷热数据。

组件K8s性能优化

虽然K8s对有状态服务的支持逐渐在加强,但是很多大数据组件在设计和实现时并没有针对云原生架构做相应的考虑,导致直接在K8s上运行时会有性能上的问题,或者是无法利用K8s的调度机制和资源管理来提升系统效率。

因此,除了将大数据组件改造成能在K8s上运行之外,我们还要确保各种大数据组件在K8s上的运行性能,利用云原生的机制来提升组件性能,减少由于容器化和插件化带来的性能损耗,能够处理各种特性的大数据工作负载。

例如,在性能优化方面,我们对Spark计算引擎做了相应优化,一是解决了云原生环境下的data locality问题,二是通过持续运行机制避免了Spark pod的频繁启动:

集成管理运维平台

对于集成的大数据组件,KDP利用K8s标准的发布和运维机制,为开发和运维人员提供了一个标准的运维管理平台Cluster Manager。类似于CDH的 Cloudera Manager,KDP允许用户在一个统一的界面里发布新的组件,查看组件运行情况,资源使用情况,运行日志,大大降低了运维的难度,提高了运维的效率。

与传统的集成管理运维平台相比,KDP完全使用云原生的方式安装,管理,运维底层的组件,支持租户资源配额管理和计费,因此,KDP Cluster Manager能够以标准化的方式添加新的组件,新添加的组件无需复杂的定制化和集成,就可以使用集成管理平台的各种运维工具,大大降低了集成新功能的成本。KDP Cluster Manager的主要功能包括:

系统架构及集成框架

系统架构

从架构上看,智领云研发团队自研的部分主要是我们前面提到的大数据集成基座,以及可观测性服务的异常检测、计费、审计和血缘功能。同时,智领云研发团队对主流的大数据计算引擎、存储引擎、调度引擎和开发工具进行了源代码级别的修改,主要的修改集中在以下几个方面:

集成框架

KDP的集成框架提供了一个标准集成流程,允许各种大数据组件以标准化配置文件的形式与统一系统服务对接,形成标准化部署,运行和运维流程。它在K8s配置的基础上提供封装,简化大数据组件的配置流程,标准化组件与系统服务及其它组件之间的对接机制。

KDP集成框架的主要功能有:

系统发布服务

KDP的系统发布服务负责大数据组件从配置文件到K8s集群的发布,更新,运维,升级操作。和通用的PaaS平台应用管理功能相比,KDP的系统发布功能需要支持大数据类型的负载(比如大量即起即停的批处理任务),与大数据租户体系,权限管理,用户管理,其资源管理的对接和集成。
KDP系统发布服务的主要功能有:

系统部署及性能

公有云和私有化部署

KDP可以在公有云平台部署,已完成与阿里云容器服务、腾讯云TKE服务、华为云CCE服务、亚马逊EKS服务的适配,包括在托管K8s服务是那个部署平台、采用这些公有云平台的云原生存储方案、以及对接云原生计算或存储组件等。KDP也支持私有云部署,目前已完成与CentOS 7.9操作系统、社区版K8s和OKD上的部署适配。

国产软硬件支持

目前社区版K8s已经完成与中标和银河麒麟操作系统,以及基于飞腾和鲲鹏芯片的国产Arm架构CPU服务器的适配。而KDP可以基于社区版K8s部署,所以理论上是可以在社区版K8s所支持的国产软硬件上进行部署的,在落地实施的实践中,目前KDP已经完成了与中标和银河麒麟操作系统,以及华为、浪潮、新华三等多家国内服务器的软硬件适配。

华为鲲鹏服务器详细数据:
CentOS Linux release 7.9.2009 (AltArch)
Linux version 4.18.0-193.28.1.el7.aarch64 (mockbuild@aarch64-01.bsys.centos.org) (gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)) #1 SMP Wed Oct 21 16:25:35 UTC 2020

性能对比

部署效率

资源效率

运维效率