PPTV之大数据集群容器化研究

简介: 本文讲的是PPTV之大数据集群容器化研究【编者的话】如何统一调度两个集群的物理资源,有效节约成本?
本文讲的是PPTV之大数据集群容器化研究【编者的话】如何统一调度两个集群的物理资源,有效节约成本?

背景

PPTV作为国内视频领域的领先者,对于大规模流媒体的存储、处理、分发及应用,有着迫切的要求。容器技术及微服务模式的出现,使大规模的研发交付效率大为提高。因此我们基于Docker技术打造了DCOS。集群物理资源的调度用Mesos,容器编排用Marathon,并以此为核心,结合Docker和Nginx,开发了DCOS管理控制台,权限管理模块,统一日志管理模块,IP池管理模块,存储管理模块,并与持续集成平台Jenkins集成,实现应用容器的创建、运行。同时我们也有一个独立于容器平台的大数据集群,主要运行批处理任务,它的资源调度系统是Yarn。在容器平台上运行的业务高峰一般发生在白天或晚上的黄金时间,而批处理任务多数运行在深夜。这样就产生一个需求,如果能够统一调度这两个集群的物理资源,业务繁忙的白天将更多的资源用于容器平台,到了深夜就将资源更多地用于批处理任务,就能更有效的节约成本。但是这两个集群采用了两个不同的资源调度系统Mesos和Yarn,使共享资源成为一个课题。本篇介绍了通过Apache Myriad项目解决这一课题的研究。

Mesos资源调度简介

002.jpg

图 1

图1是官方的一个例子。Mesos集群由提供资源的Agent、负责调度资源的Mesos master以及使用资源的Framework构成。
  1. Agent将自己的资源(CPU、内存等)报告给Mesos master。
  2. Mesosmaster根据策略将资源提供(offer)给Framework。
  3. Framework再根据自己的策略决定哪个task在哪台Agent执行。
  4. 通过Mesos master通知相应的Agent去执行。

这里可以看出Mesos是一个两级调度系统。Mesos本身只对Framework做资源调度,然后由各个Framework根据自己的策略针对task进行资源调度。

Yarn资源调度简介

002.jpg


图 2

图2是Yarn的资源调度架构图。与Mesos类似由提供资源的NodeManager、负责调度资源的ResourceManager、使用资源的Application(图中的AppMaster)构成。
  1. NodeManager将自己的资源(CPU、内存等)报告给ResourceManager。
  2. Client向ResourceManager提交作业(相当于一个Application)。
  3. ResourceManager为Application启动一个AppMaster。
  4. AppMaster为Application向ResourceManager请求资源。
  5. ResourceManager根据调度策略为Application分配资源,并通知相应的NodeManager去执行task。

Yarn也可以说是一个两级调度系统,但是AppMaster只能向ResourceManager请求资源(同时可以设定一些条件),最终哪个NodeManager执行哪个task则是由ResourceManager决定。相比Mesos的Framework自己决定执行task的Agent,AppMaster的调度权限比较低。

Apache Myriad:集成Mesos&Yarn

基本思路:把Yarn当作Mesos上的一个Framework来使用。
003.jpg

图 3

如图3所示,ResourceManager中的YarnScheduler被MyriadScheduler取代了。MyriadScheduler继承YarnScheduler并实现了MesosFramework Scheduler接口。这样ResourceManager就能够接受Mesos master提供(offer)的资源,并且还具有原来Yarn Scheduler一样的功能。另外Myriad还实现了管理NodeManager的Executor。整个过程是:
  1. Agent 1(黄色文本框中S1) 报告资源给Mesos master。
  2. Mesos master按照策略提供资源(这里是Agent1的一半)给ResourceManager。
  3. ResourceManager接受Mesosmaster提供的资源,要求Mesos master在Agent1上启动NodeManager1(黄色文本框中NM1)。
  4. Agent1启动NodeManager1。
  5. NodeManager 1将自己的资源(来源于之前Mesosmaster的offer)报告给ResourceManager。

于是在Mesos集群上建立了一个Yarn集群,其资源来源于Mesosmaster的offer,也就是说Yarn被置于Mesos的管理之下。为了方便Yarn集群动态扩、缩容,Myriad还提供了相应的WebUI和WebAPI。通过这个方案,实现了Yarn集群和Mesos集群共享物理资源。

实例

004.jpg

图 4

005.jpg

图 5

006.jpg

图 6

如图4所示,我们在Mesos上启动了一个叫做“MyriadAlpha”的Myriad Framework,并拥有1个task(“4.4CPU,5.4G内存”),如图5可以从Myriad的WebUI上看到该task,其实该task对应了一个NodeManager。如图6(ResourceManager的WebUI)显示了该NodeManager所在的物理机以及向ResourceManager报告的资源(“4VCore,4G内存”,※配置了1CPU=1VCore)。Mesos和ResourceManager上显示的资源差是NodeManager本身使用的资源。

接下来我们利用Myriad的WebUI(也提供了WebAPI)对Yarn集群进行扩容。
007.jpg

图 7

如图7所示我们将增加2个NodeManager,每个NodeManager向Yarn集群提供“2CPU,2G内存”。
008.jpg

图 8

如图8显示增加了2个Task(对应于NodeManager)。
009.jpg

图 9

如图9 ResourceManager WebUI显示已有2个NodeManager加入集群,提供的资源均为“2VCore,2GB内存”。
010.jpg

图 10

最后如图10 Mesos WebUI上显示了启动的Task(也就是NodeManager)数和已分配的资源。

总结

通过Apache Myriad,Mesos可以统一地管理整个数据中心的物理资源,然后由ResourceManager从中获得资源建立Yarn集群并进行扩、缩容。这样本来运行于Yarn上面的应用如MapReduce、Tez、Hive等就能不加改变的运行(还是由Yarn来调度),但是它们使用的物理资源来源于Mesos。另外随着Yarn的Docker Container Executor(DCE) 项目的完成,将实现整个集群的容器化。

文中为了便于说明这个过程上面的例子是手动进行的,如果利用“Fine-grained Scaling”,Myriad可以根据执行作业需要的实际资源动态的对NodeManager进行扩、缩容(具体细节与上例有差别)。
作者介绍 :郑辉,现PPTV研发中心架构师,专注于大数据、云计算,目前主要研究PPTV大数据平台与容器平台融合的相关技术。之前是日本一家互联网公司的Hadoop技术负责人,同时也参与Apache社区HDFS、Hive项目的开发工作。

原文链接:聚力传媒(PPTV)之大数据集群容器化研究

原文发布时间为:2016-10-01

本文作者:郑辉

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:PPTV之大数据集群容器化研究

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
2月前
|
存储 人工智能 安全
拔俗AI临床大数据科研分析平台:让医学研究更智能、更高效
阿里云原生AI临床大数据科研平台,打通异构医疗数据壁垒,实现智能治理、可视化分析与多中心安全协作,助力医院科研提速增效,推动精准医疗发展。
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
472 5
|
3月前
|
存储 并行计算 算法
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
202 4
|
人工智能 大数据 安全
拔俗AI临床大数据科研分析平台:用智能技术加速医学研究新突破
AI临床大数据科研平台基于云原生架构,融合医疗NLP、联邦学习与智能分析技术,破解非结构化数据处理难、多源数据融合难、统计周期长等痛点,实现数据治理、智能分析与安全协作全链路升级,赋能医学科研高效、安全、智能化发展。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
8月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
12月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
zdl
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
553 56