一看就懂!任务提交的资源判断在Taier中的实践
Taier 介绍
Taier 是袋鼠云开源项目之一,是一个分布式可视化的DAG任务调度系统。
旨在降低ETL开发成本、提高大数据平台稳定性,大数据开发人员可以在 Taier 直接进行业务逻辑的开发,而不用关心任务错综复杂的依赖关系与底层的大数据平台的架构实现,将工作的重心更多地聚焦在业务之中。
项目地址:https://github.com/DTStack/Taier
Taier 资源判断
Taier 基于插件式架构设计,用户在界面开发任务并提交运行。提交运行插件又划分为worker-plugins、datasource-plugins双插件类型。
在任务提交的时候,Taier需要判断是否有足够的资源来执行,否则一股脑地提交任务,最终会拖垮环境,导致服务的不可用。根据环境资源的剩余情况来动态调整提交任务的速率是Taier必不可少的一项功能,那么Taier究竟是怎么来判断资源的呢?
什么是资源?
对一个系统而言,首先要定义出资源的种类,然后将每种资源量化,才能进行管理,这就是资源抽象的过程。那么,想回答上文中「Taier是如何判断资源」的这个问题,就需要先理清楚,在一个分布式、多环境的系统中,什么是资源,又为什么要有“资源”这个概念?
我们通常所说的“资源”都是硬件资源,包括CPU使用/内存使用/磁盘用量/IO/网络流量等等,这是比较粗粒度的。也可以是抽象层次更高的TPS/请求数之类的。
资源可以用来衡量系统的瓶颈。系统能否充分利用资源,什么时候可以持续提交任务,什么时候需要暂停提交任务,比如当总体资源充裕时,可以把对应的任务全部提交上去。
● 以Yarn框架介绍为例
ResourceManager 是一个全局的资源管理器,负责整个系统的资源管理和分配,包括 scheduler 、Application Manager和 Node Manager。
对调度器来说,YARN 提供了多种直接可用的调度器, Fair Scheduler 和 Capacity Scheduler 等。调度器仅根据各个应用程序的资源需求进行资源分配,分配的基本单位是Container,而容器里面是将内存、CPU、网络、磁盘封装到一起。
在Yarn的web 界面,我们可以直观的看到当前Yarn集群剩余的内存、CPU核数、运行的Container数量。对提交到yarn上的任务来说,资源就是:内存、CPU、磁盘等可用信息。
所以在提交到Yarn上执行的任务,我们可以根据ResourceManager 获取Yarn集群当前剩余的内存、CPU核数来进行判断,任务能否满足提交条件等规则。其中,最基本的规则就是:
• Yarn集群剩余的内存 >= 当前任务所需的内存
• Yarn集群剩余的CPU核数 >= 当前任务所需的CPU核数
何时去判断资源?
任务在界面开发完成之后,点击运行的按钮,开始从等待提交的状态切换。在提交运行的时候,任务组装好集群配置信息进入下一个阶段——资源判断。
在这个阶段开始判断资源是否满足任务提交。如果任务满足则进行提交,如果任务不满足,则定时、延时、重试直到资源满足任务执行条件。
怎样去判断资源?
在worker-plugins提交的抽象类中,有一个通用的方法judgeSlots 去判断资源。
judgeSlots 的判断结果分为以下四种:
• OK: 资源判断满足,任务可以提交
• NOT_OK: 不满足任务所需资源,需要延时重试
• LIMIT_ERROR: 任务参数设置错误: CPU核数或内存为0等场景
• EXCEPTION: 任务资源判断异常: ResourceManager连接异常等场景
● 以Spark任务为例
下文我们以Spark任务为例,看看Spark的提交插件是如何获取对应的ResourceManager信息并进行资源判断的。
可以看到根据Yarn集群信息获取了以下信息:
• 根据Yarn集群信息初始化YarnClient
• 获取Yarn集群队列下的ACCEPTED状态任务,是否大于控制台yarnAccepterTaskNumber 参数设置
• 获取Yarn集群队列的剩余CPU核数和内存信息
然后根据JobClient所携带的任务参数信息,获取了Driver、Executor 的相关内存和CPU信息并进行计算。
最后将获取到的Yarn集群信息和任务所需的资源信息按照固定规则进行比对,返回对应的资源判断结果。资源判断的结果将会实时在 Taier 的界面上展示,所以在任务处于等待提交状态的时候,可以去控制台->队列,管理并查看该任务资源判断信息。
Taier 未来规划
展望未来,为进一步提升Taier的使用场景,同时也为了减少Hadoop生态在Taier中的依赖,Taier后续会扩展更多的任务类型。除了支持对接Hadoop集群外,Taier也会陆续支持相关类型的local模式运行,完善更多的场景使用。
Taier团队非常期待得到每一个人的反馈,能够和其他优秀开发者共同合作,进一步推动Taier的技术发展。
如果您对Taier有兴趣,希望可以参与到我们的建设中来,一起交流,一起进步,为 Taier变得更好贡献一点你的代码和意见,这将是我们,同时也是 Taier莫大的荣幸。
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szkyzg
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
全球首个面向遥感任务设计的亿级视觉Transformer大模型
作者:京东探索研究院 深度学习在很大程度上影响了遥感影像分析领域的研究。然而,大多数现有的遥感深度模型都是用ImageNet预训练权重初始化的,其中自然图像不可避免地与航拍图像相比存在较大的域差距,这可能会限制下游遥感场景任务上的微调性能。 为此,京东探索研究院联合武汉大学、悉尼大学借助迄今为止最大的遥感场景标注数据集MillionAID,从头开始训练包括卷积神经网络(CNN)和已经在自然图像计算机视觉任务中表现出了良好性能的视觉Transformer(Vision Transformer)网络,首次获得了一系列基于监督学习的遥感预训练基础骨干模型。并进一步研究了ImageNet预训练(IMP)和遥感预训练(RSP)对包括语义分割、目标检测在内的一系列下游任务的影响。 实验结果证实了探索研究院先前提出的先进Vision Transformer系列模型ViTAE在遥感任务上的优越性,并发现RSP在遥感任务上的有效性以及感知相关语义方面具有的独特性。实验结果进一步表明RSP会受到上下游任务差异的影响,这些发现对遥感大规模数据集和预训练方法提出了新的要求。 01 研究背景 近年来,深度...
- 下一篇
解读 ChatGPT 背后的技术重点:RLHF、IFT、CoT、红蓝对抗
近段时间,ChatGPT 横空出世并获得巨大成功,使得 RLHF、SFT、IFT、CoT 等这些晦涩的缩写开始出现在普罗大众的讨论中。这些晦涩的首字母缩略词究竟是什么意思?为什么它们如此重要?我们调查了相关的所有重要论文,以对这些工作进行分类,总结迄今为止的工作,并对后续工作进行展望。 我们先来看看基于语言模型的会话代理的全景。ChatGPT 并非首创,事实上很多组织在 OpenAI 之前就发布了自己的语言模型对话代理 (dialog agents),包括 Meta 的 BlenderBot,Google 的 LaMDA,DeepMind 的 Sparrow,以及 Anthropic 的 Assistant (Anthropic 的 Claude 就是部分基于 Assistant 继续开发而得的)。 其中一些团队还公布了他们构建开源聊天机器人的计划,并公开分享了路线图 (比如 LAION 团队的 Open Assistant),其他团队肯定也有类似的内容,但尚未宣布。 下表根据是否能公开访问、训练数据、模型架构和评估方向的详细信息对这些 AI 聊天机器人进行了比较。 ChatGPT 没...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块