大数据云原生系列大数据系统云原生渐进式演进最佳实践腾讯云原生

基于Hadoop生态的传统大数据系统,同样面临着弹性能力不足、资源利用率低,管理困难等问题,云原生技术天然适合解决这些问题。然而,将基于Hadoop生态的传统大数据系统改造成云原生架构,涉及到改造成本高、迁移风险大等诸多挑战。那有没有方案,既可以基于云原生技术解决大数据系统弹性能力不足,资源利用率低,管理困难等问题,又能保证改造成本、迁移风险比较低呢?腾讯云大数据团队和容器团队,基于大数据系统的现状,结合大数据技术和容器技术的特点,推出了渐进式的云原生演进方案。使用该方案,可以在较小改造成本和迁移风险的前提下,实现大数据系统的云原生化,充分利用云原生的优势。

本文依次分析了大数据系统当前面临的主要问题、云原生如何解决这些问题、大数据系统云原生改造面临的挑战,基于这些问题和调整,重点介绍了基于HadoopYarnonKubernetesPod(下文会详细介绍)的渐进式的云原生演进方案及其最佳实践。

传统的大数据系统围绕着Hadoop生态快速的发展,百花齐放,各个企业也逐步建立了自己的大数据平台,甚至是数据中台。然而,在激烈的市场竞争和不断增加的消费期望的双重驱动下,一方面业务需要快速迭代以满足迅速的增长,另一方面需要在资源需求不断增长的同时控制高昂的成本以保持企业的竞争力。这就要求大数据系统能够及时、快速的扩容以满足生产需求,又能尽可能的提高资源的使用效率,降低资源的使用成本。具体的问题体现在以下几点:

图1大数据系统主要问题

以上提到的弹性扩缩容、应用发布效率和资源利用率,是当前大数据系统普遍存在的问题,如何解决和应对这些问题,越来越成为企业较为关心的话题。接下来,我们将从云原生的角度来分析如何解决这些问题。

云原生技术如何解决资源使用率低的问题:在传统架构中,大数据业务和在线业务往往部署在不同的资源集群中,这两部分业务相互独立。但大数据业务一般更多的是离线计算类业务,在夜间处于业务高峰,而在线业务恰恰相反夜间常常处于空载状态。云原生技术借助容器完整(CPU,内存,磁盘IO,网络IO等)的隔离能力,及kubernetes强大的编排调度能力,实现在线和离线业务混合部署,从而使在离线业务充分利用在线业务空闲时段的资源,以提高资源利用率。

另外,使用无服务器(serverless)技术,通过容器化的部署方式,做到有计算任务需求时才申请资源,资源按需使用和付费,使用完之后及时退还资源,极大的增加了资源使用的灵活性,提升资源使用的效率,有效的降低了资源使用的成本。

云原生技术如何解决发布周期长的问题:传统大数据系统中,所有环境基本上使用同一个镜像,依赖环境比较复杂,部署、发布周期往往比较长。有时基础组件需要更新,因为需要重新构建镜像,并上传到各个地域,耗时可能长达数天。而云原生架构使用容器进行部署,应用的发布和基础组件的更新都只需要拉取新的镜像,重新启动容器,具有更新速度快的天然优势,并且不会有环境一致性的问题,可以加快应用发布的节奏,解决应用发布周期长的问题。

云原生的技术虽然能解决当前大数据系统遇到的问题,然而,将大数据系统从传统的基于Hadoop生态的架构,迁移到云原生架构,将会面临一些挑战:

由此可见,将大数据应用从传统Hadoop架构迁移至Kubernetes架构,并没有那么简单,尤其是依赖社区对大数据应用本身的改造,使其具备运行在云原生平台的能力,然而这些改造,非一朝一夕所能完成,仍需要大数据应用社区在云原生方向作出更多的努力。

上文提到的大数据系统现存问题,云原生技术如何解决大数据系统的问题,以及大数据系统从传统架构迁移到云原生架构的挑战。那有没有一种方案既能解决大数据系统的问题,让大数据系统架构更加云原生。又可以降低迁移过程中的改造成本,规避迁移风险呢?

接下来本文将介绍大数据系统渐进式向云原生演进的方案,通过渐进式迁移演进的方式,在架构较小改动的情况下,通过云原生技术解决大数据系统的问题。通过较小的投入,获得云原生技术的红利,并且避免迁移过程的的风险。同时后期还可以在这基础上进一步将大数据系统平滑演进到云原生架构。

渐进式演进方案主要有弹性扩缩容和离在线混合部署两种模式,两个模式的侧重点略有不同,弹性扩缩容主要聚焦于如何利用云原生资源,借助serverless技术,快速扩容资源以补充算力,满足业务实时需求。而离在线混部主要聚焦于利用在线业务空闲时段的闲置资源,通过将大数据离线计算任务调度到在线业务闲置资源的上,在保证业务稳定性的基础上,大幅提升资源的使用效率。这两种模式都使用了YarnonKubernetesPod的形式,如下图,其基本思想是,将YarnNodeManager运行在Kubernetes集群中新扩容的Pod容器内,当YarnNodeManagerPod启动后,根据配置文件自动向已有的Hadoop集群的YarnResourceManager发起注册,最终以KubernetesPod的形式补充Yarn集群的算力。

图2YarnonKubernetesPod

在弹性扩缩容模式中,弹性扩缩容模块会根据大数据集群资源的使用情况,动态的向serverlessKubernetes集群申请(释放)资源。申请资源的具体形式为,在Kubernetes集群中创建(销毁)Yarnoperator的自定义资源(CustomResourceDefinition,CRD),集群中部署的Yarn-operator会根据crd资源来创建(删除)Yarnpod。在Yarnpod中会启动Yarnnodemanager进程,Yarnnodemanager进程启动后会自动向大数据集群中的Yarnresource-manager发起注册,扩充(减少)大数据集群的算力,满足任务的资源需求。

图3弹性扩缩容方案(EMR大数据集群)

该方案的关键组件是Yarn-operator和Yarn-autoscaler。Yarn-autoscaler组件通过监听Yarn集群中资源使用的情况,作出扩容或者缩容的判断,然后向EKS集群创建Yarn-operaorcrd资源。Yarn-operaor根据crd资源创建或删除对应的Yarnpod实例,这两个的组件的功能如下。

Yarn-operator通过kubernetes接口监听大数据集群管控平台中Yarn-autoscaler模块创建的crd资源。Yarn-opterator完成的主要功能包括:

(1)根据crd中的配置创建对应的Yarnpod;(2)维护pod的生命周期,在pod出现异常时,自动重启pod;(3)指定pod进行缩容(4)在pod启动失败时,标记启动失败。

图4扩缩容规则管理--负载伸缩

另外对于云上客户自建的大数据集群,也可以通过将集群导入到EMR的管系统形式来实现弹性扩缩容,提升资源使用的效率。具体的只需在每个节点安装EMRagent组件,然后EMR团队在后台增加对应的集群信息,即可以完成集群的导入。EMRagent本身对集群无任何侵入,消耗的资源也比较小(CPU消耗小于0.1核,内存消耗小于150M),主要做监控指标采集,日志采集,集群心跳上报等工作。安装完agent后,集群将完整的被EMR管控系统纳管,客户不仅可以使用弹性扩缩容的能力,还可以在既使用自身日志监控的能力的同时使用EMR提供的日志监控能力。后续也可以持续享受EMR提供的各种能力。

图6弹性扩缩容方案(用户自建集群导入EMR管控系统)

对于在离线混部模式,节点上的agent组件基于监控统计cpu和内存的真实使用情况,这些统计信息由一个server统一收集,大数据管控平台通过该server,获取当前在线集群中可以提供的闲置算力的规格及数量,调用Knetesapi创建对应数量的资源,ex-scheduler扩展调度器确保Pod被创建在剩余资源更多的节点上,其中申请资源的具体形式与弹性扩缩容模式中相同,由Yarnoperator根据crd资源创建(删除)Yarnpod。

图7在离线混部方案

图8用户最佳实践--弹性扩容缩容

该用户基于HadoopYarn自建了大数据集群,包含多种组件,如Spark、Flink、Hive等,当前遇到的主要问题是,面对临时的突发流量,如何快速的扩容以提高算力,并且在计算完成后,如何实时的释放资源以解决成本。借助腾讯云EKS的serverless能力,我们实现的快速自动扩缩容方案,正好可以满足该用户的诉求。

在控制台上,用户使用我们提供的自动扩缩容的配置策略,自由配置自动扩容、缩容的触发阈值。比如配置当剩余CPU或者内存小于指定的值时,Yarn弹性伸缩组件会调用EKSKubernetesAPI创建YarnNodeManagerPod,容器启动后自动注册到YarnResourceManager,从而提供算力;当触发了用户配置的缩容策略时,如剩余CPU或者内存大于指定的值时,Yarn弹性伸缩组件同样会调用EKSKubernetesAPI缩容YarnNodeManagerPod,整个过程中无需用户创建虚拟机,计费方式以Pod的CPU和内存为基础,真正的达到资源随用随建,按需付费。

图9用户最佳实践--离在线混部

某客户大数据应用和存储跑在Yarn管理的大数据集群,在生产环境中,面临诸多问题,主要体现在大数据的算力不足和在线业务波谷时资源的浪费。如离线计算在算力不足时,数据准时性无法得到保证,尤其是当遇到随机紧急大数据查询任务,没有可用的计算资源,只能停掉已有的计算任务,或者等已有任务完成,无论哪种方式,总体任务执行的效率都会大打折扣。

基于TKE的在、离线混部方案,将离线任务自动扩容至云上集群,与在线业务混合部署,充分利用云上波谷时段的闲置资源,提高离线业务的算力,并利用云上资源快速的弹性扩容能力,及时补充离线计算的算力。简单来说,该方案提供了三种使用方式:

本文提出了大数据云原生渐进式演进的理念和最佳实践,在极大减少改造成本、降低迁移风险的基础上,解决了大数据应用当前面临的主要问题。在未来,我们将基于最小化迁移风险、最低改造成本等原则,设计并落地更多方案,使大数据应用更原生的跑在云原生架构上,为企业带来更多的便利和实际收益。

THE END
1.强化学习ReinforcementLearning在航空航天领域的应用与挑战强化学习,Reinforcement Learning,航空航天,应用,挑战,控制,优化,决策 1. 背景介绍 航空航天领域一直以来都是科技发展的前沿阵地,其复杂性、安全性要求极高,对智能控制和决策的需求日益迫切。传统控制方法往往依赖于预先设定的规则和模型,难以应对复杂、动态变化的环境。而强化学习(Reinforcement Learning,RL)作为一种机器https://blog.csdn.net/2301_76268839/article/details/144429525
2.自然语言强化学习:一个可处理语言反馈的强化学习框架这种困境促使研究团队开始探索一个更具突破性的方向:能否设计一个框架,让 AI 系统完全通过与环境的交互来学习,而不依赖任何人类标注数据?传统强化学习为这个问题提供了灵感,但其单一数值奖励的机制难以满足复杂场景的需求。团队意识到需要一个新范式,既要继承强化学习的数学严谨性,又要具备自然语言的表达丰富性。这个https://hub.baai.ac.cn/view/41851
3.大数据上云存算分离演进思考与实践大数据阿里技术异构计算的资源负载混部:在统一存储平台提供面向异构计算的工作资源负载下的多维度查询分析服务。在线与离线计算共用计算和存储资源。解决资源波峰波谷问题,实现资源动态削峰填谷 存储降本: 存储利用率+冷热分层。支持基于分布式存储系统上的多层存储(热存储/标准存储/冷存储等)。举例来说,存储降本优化主要依赖于归档与冷https://xie.infoq.cn/article/de0971c840628b7b467a110dc
4.Volcano:在离线作业混部管理平台,实现智能资源管理和作业调度节点可观测性增强,对在离线任务资源布局动态优化,识别在线业务是否受到干扰,对干扰进行定位和控制。 集群可观测性增强,对集群任务布局动态优化,减少集群资源使用不均衡问题。 基于Volcano混合部署解决方案如下图所示: 图3 基于Volcano混合部署架构 Volcano混部调度能力 https://developer.huawei.com/consumer/cn/forum/topic/0202841185168780412
5.云计算:ChatGPT的“中枢神经”云原生离混部技术实现离散训练,在线微调 ChatGPT基于大量优质的数据语料训练,实现对话意图识别和内容生成能力的突破,这主要由于ChatGPT具有强大的智能算法学习和记忆调用基础,通过云原生离线混部和极致弹性调用机制,离线训练千亿级别的超大规模参数,形成了ChatGPT的存储记忆资源池,通过在线补充完成人类反馈强化学习(RLHF)的微调https://m.thepaper.cn/newsDetail_forward_22342649
6.在离线混部云容器引擎最佳实践调度在离线混部的核心目标是通过将在线应用和离线应用混合部署到同一个集群中,最大程度地提高集群的资源利用率,进而降低企业的运营成本。值得注意的是,在线应用和离线应用这两种不通类型的应用对服务质量的要求是不一样,在线应用往往是延时高度敏感,对资源质量要求也更高。而离线应用则对延迟要求相对宽松,有更好的重试容错https://www.ctyun.cn/document/10083472/10172926
7.阿里决战双11核心技术揭秘——混部调度助力云化战略再次突破在大家如丝般顺滑地完成一次次秒杀、抢购和付款过程的背后,是阿里巴巴技术团队经历数年时间的系统打磨,技术架构优化所做出的努力。而底层基础设施服务质量不断提升、IT 成本增加逐年递减的演进历程,都由一个名为「云化战略」的技术梦想所贯穿起来。 特别是 2017 年双 11,阿里巴巴首次混合部署了在线服务、离线计算以及https://www.leiphone.com/category/ai/HHa8Y9tPeVgB1Kt8.html
8.Kubernetes资源拓扑感知调度优化腾讯云开发者社区基于离线虚拟机的混部方案导致的节点实际可用 CPU 核心数变化 面对运行在线业务的云主机平均利用率较低的现实,为充分利用空闲资源,可将离线虚拟机和在线虚拟机混合部署,解决公司离线计算需求,提升自研上云资源平均利用率。在保证离线不干扰在线业务的情况下,腾讯星辰算力基于自研内核调度器 VMF 的支持,可以将一台机器上https://cloud.tencent.com/developer/article/2029446
9.浪潮云海首席科学家张东:面向一云多芯的系统设计云海云操作系统(InCloud OS)、Apsara Stack、EasyStack等通过单一资源池实现异构资源的统一调度和互联互通,但当前阶段主要解决“多芯”的混部问题,距离以应用为中心的跨架构运行和低成本切换尚有较大差距。为满足多芯共存条件下业务的稳定运行、平滑切换和弹性伸缩,如下科学问题和技术难题亟待解决。 https://www.cet.com.cn/itpd/itxw/3465583.shtml
10.便宜云服务器容器服务在AI智算嘲的创新与实践容器服务也在积极推动上游开源社区,在Kubernetes体系下,定义支持各类计算框架和任务类型的云原生任务标准API和生命周期。帮助用户可以在Kubernetes集群上以统一的标准和接口,管理调度各类数据计算类工作负载。 ACK扩展了Kube-scheduler framework,与Slurm调度系统打通,即支持节点池维度的分节点调度,也支持共享节点资源的混部调度http://zhanzhang.ceden.cn/?article/1644909
11.腾讯云专有云TCS容器平台企业级云容器平台云原生容器腾讯云专有云TCS容器平台,适配丰富异构IAAS设备,满足利旧需求,广泛适配兼容信创CPU/指令集/操作系统。自研高性能负载均衡;基于eBPF的高性能网络;跨集群统一服务发现;高性能Ingress;平台高可用和部署方案,运维运营能力。 立即咨询 传统企业信息化体系存在的问题 https://www.yun88.com/product/3926.html
12.华为云UCS华为云与本地IDC协同,实现弹性上云 构筑本地集群极速弹性上云,流量高峰,业务云上秒级扩容 结合Volcano以及HCE OS 2.0能力,构建本地集群在线、离线混部能力,资源利用率提升40% 在AI训练和AI推理场景下,通过GPU虚拟化技术实现GPU隔离以及资源利用率提升 云原生应用全景观测,大幅提升运维效率 https://www.huaweicloud.com/product/ucs.html
13.阿里云异构计算类云服务器介绍(GPU云服务器FPGA云服务器等神龙AI加速引擎AIACC是基于阿里云IaaS资源推出的AI加速引擎,用于优化基于AI主流计算框架搭建的模型,能显著提升深度学习场景下的训练和推理性能。配合集群极速部署工具FastGPU快速构建AI计算任务,全面提升研发效率和GPU利用率,缩短计算时间并降低AI的推理延迟。 2、神龙AI加速引擎AIACC产品优势 https://www.jianshu.com/p/d4c370053533
14.深入硬件层内核态与用户态,一文看懂火山引擎云原生操作系统近日,在2020全球分布式云大会上,火山引擎解决方案总监于鸿磊以“多云环境下的云原生操作系统”为主题,从云原生操作系统出发,分享了火山引擎敏捷高效的基础设施与技术,为企业追求业务持续增长的提供了一种创新技术思路。 激发创造,释放潜能 字节跳动具有长期沉淀、服务于数亿用户的大数据技术、人工智能等基础技术服务能力,拥https://www.volcengine.com/docs/6316/66821
15.小红书近线服务统一调度平台建设实践对于服务,我们目前将服务划分为强隔离要求在线服务、普通在线服务、近线服务、离线服务4个QoS级别。 服务QoS 资源保障模型,本质上就是按照服务的 QoS 级别,给予不同的算力保障。 对于近线服务,调度优先级为:独占资源池机器 > 在线集群闲置算力 > 混部算力 > 公有云容器实例服务。目前公有云容器实例服务,只是作为一https://blog.itpub.net/70016482/viewspace-2927565/
16.成立3年,云服务厂商火山引擎全景扫描该服务属于实时计算方面,完全基于云原生构建:脱胎于抖音内部超大规模实践,日常峰值 QPS 达100亿,稳定性提升51%;通过Serverless,实现弹性扩缩容和在离线业务混部,资源利用率提升40%;并且能够统一调度,满足流批一体等多种计算模态。通过LAS和Serverless Flink,企业可以更加高效、经济的建设自身的数据底座。https://www.eefocus.com/article/1512934.html