关于大数据平台上任务管理的思考

本文于2019年7月16日完成,发布在个人博客网站上。
考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。


作业,比如提交一个hive脚本到计算平台上运行,这个脚本宏观上称为一个作业。
任务,比如mapper,reducer等。
资源,比如CPU时间,内存,硬盘IO,网络IO,墙钟等。

期望计算平台提供的信息,比如:

  1. 当前有哪些作业在运行。
  2. 作业占用的资源。
  3. 作业总共使用了哪些运算节点。
  4. 指定的作业使用了哪些节点,分别占用了多少资源。
  5. 每个节点上分配了哪些任务,分别占用了多少资源。
  6. 每个作业有多少stage,分别有多少任务,各占用多少资源。
  7. 各分类的排名。
  8. 各个mapper,reducer读入的数据量,输出的数据量。
  9. 数据表的访问频率,访问数据量。
  10. SQL的执行计划。

监控和通知,比如:

  1. 针对上述信息,例行发送指标值。
  2. 针对上述信息,定义阈值,当超出阈值,发送给指定的群组。
  3. 针对上述信息,提供趋势图,供指定人查看。
  4. 运行时占用资源多的作业,执行计划,输入数据量,输出数据量等。

日常工作中需要回答的问题:

  1. 计算平台的资源使用情况,有什么变化,变化趋势怎么样。
  2. 计算平台的资源使用情况是否合理。
  3. 计算平台是否需要扩容。
  4. 任务的数量,近期是否有什么变化。
  5. 任务处理的数据量,输出的数据量,是否有什么变化,变化的特点是什么,是否合乎业务特点。
  6. 任务占用的资源,是否有什么变化,变化的特点是什么。
  7. 任务运行时,stage,mapper,reducer的数量,使用的资源等,是否有什么变化,变化的特点是什么。
  8. 对于给定的某个作业,占用的资源是否充足或者过多。
  9. 对于给定的某个作业,对应的代码,是否需要优化,优化空间有多大。

分配资源的原则,充分利用资源,比如:

  1. 重点业务,优先保障。
  2. 非重点业务,合理安排调度启动时间,控制等待时间和墙钟时间。
  3. 监测资源瓶颈,避免争用。
  4. 制定扩容计划,及时实施。

有了上述数据,就有了调整资源的依据,减少无效的沟通,提高生活质量。

posted @ 2024-01-08 21:23  jackieathome  阅读(24)  评论(0编辑  收藏  举报