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=szcsdn

同时,欢迎对大数据开源项目有兴趣的同学加入我们,一起交流最新开源技术信息,号码:30537511,项目地址:https://github.com/DTStack

一看就懂!任务提交的资源判断在Taier中的实践相关推荐

  1. 25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

    存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源.虚拟化掩盖了管理内存.网络.服务器和存储中资源的复杂性. 存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池. ...

  2. 设计模式也可以这么简单,一看就懂

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 作者:javadoop 来源:https://javadoop.com/post/design-pattern 序 一 ...

  3. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  4. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用

    学习目标 了解什么是开发环境 了解python语言的环境安装 了解python语言编程的编辑器工具 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然你选 ...

  5. stm32f4 hs 电路_电动机控制电路识图一看就懂

    点击上方电工电气学习,关注并星标 专业的电工电气领域自媒体,不容错过 欢迎转发朋友圈,欢迎文末留言 本书采用原理图与实物接线图一一对照的形式,讲述了常用机械设备.液位控制的水泵.小型机械设备.供排循环 ...

  6. 一层循环时间复杂度_算法的时间与空间复杂度(一看就懂)

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去衡量不同 ...

  7. git指令如何葱master转到dev_小姐姐用动画图解Git命令,一看就懂!

    「 点击图片获取最近两年爆款好文 」 无论是开发.运维,还是测试,大家都知道Git在日常工作中的地位.所以,也是大家的必学.必备技能之一.之前公众号也发过很多git相关的文章: Git这些高级用法,喜 ...

  8. goip技术原理图解_图解电工识图一看就懂

    点击"电工电气学习"关注即可免费订阅! 图解电工识图一看就懂 出版时间:2015内容简介<图解电工识图一看就懂>采用图解的形式,系统介绍了电工识图基础知识.低压电器与电 ...

  9. php 设计模式系列,一看就懂系列之 php设计模式(一)-Go语言中文社区

    前言 一提到设计模式,很多人都是敬而远之,一方面由于设计模式有一点忽悠太理论的感觉,另一方面也会觉得设计模式有点难懂不知道该在什么场景下使用.一看就懂系列之php设计模式,主要解决两个问题: 1.用最 ...

最新文章

  1. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!
  2. 没中、美这么大的统一市场,欧盟人工智能发展面临双重挑战
  3. 类型参数的约束(C# 编程指南)
  4. 为什么微信内无法分享转发网址,详谈微信网址防屏蔽的办法
  5. 启明云端分享 | 小明带你用一组图查看ESP32-S3 \ESP32-S2\ ESP32的区别
  6. 金铲铲之战:新版本上线3活动,有实物奖励,小学生被限制游戏
  7. 搭建基础架构-ResultMsg
  8. Oracle启动操作
  9. Django(二) 路由和视图
  10. win7 32 php+mysql+apache环境_win7 搭建PHP环境(php+mysql+apache)
  11. 入侵检测技术目的-发现黑客
  12. Pandas模块,我觉得掌握这些就够用了!
  13. 使用Lucifer实现自动化渗透测试任务
  14. Qt FlowLayout升级版
  15. nmap架构图_Nmap扫描教程之Nmap基础知识
  16. 什么是云?什么是云服务?什么是云计算?
  17. ios审核提示:您的 Apple Developer Program 帐户已被标记为删除
  18. 7.腾讯微博Android客户端开发——自动获取验证码(1)
  19. 移动支付探索海外,将普及全球
  20. 《人性的弱点》良句收录和读后感想

热门文章

  1. 密度聚类:OPTICS算法简单易懂版
  2. 低代码编程核心技术概念
  3. 这 7 个牛逼项目,不来看看~~
  4. 【观察】甲骨文:以创新为本,以生态为核,加速中国企业数字化进程
  5. 苹果电容笔和普通电容笔有什么区别?实用平板电脑电容笔推荐
  6. Windows 10, version 22H2 (updated March 2023) 简体中文版、英文版下载
  7. opencv学习笔记三十六:AKAZE特征点检测与匹配
  8. OpenCV + CPP 系列(卌二)图像特征匹配( KAZE/AKAZE)
  9. C语言-解释复杂声明
  10. selenium+python自动抢购源码