Hadoop - 任务调度系统比较

1.概述

  在Hadoop应用,随着业务指标的迭代,而使其日趋复杂化的时候,管理Hadoop的相关应用会变成一件头疼的事情,如:作业的依赖调度,任务的运行情况的监控,异常问题的排查等,这些问题会是的我们日常的工作变得复杂。那么,在没有条件和精力去开发一套调度系统的情况下,我们去选择一款第三方开源的调度系统,来尽量减轻和降低我们日常工作的复杂度,也是极好的。今天,笔者给大家比较几种常见的调度系统,供大家去选择。

2.内容

2.1 Oozie

  Oozie目前是托管在Apache基金会的,开源。在之前的博客《Oozie调度》一文当中,介绍相关Oozie的调度,如何去调度Hadoop的相关,大家可以从博客的文中所描述的内容看出,配置的过程略显繁琐和复杂,配置相关的调度任务比较麻烦,然其可视化界面也不是那么的直观,另外,对UI界面要求较高的同学,此调度系统估计会让你失望。若是对改调度系统感兴趣的同学可以到《Oozie调度》一文中做相关细节的了解。这里就不多做赘述了。

2.2 Zeus

  它是一个Hadoop的作业平台,从Hadoop任务的调试运行到生产任务的周期调度,它支持任务的整个生命周期。从其功能来看,它支持以下任务:

  • Hadoop的MapReduce任务调度运行
  • Hive任务的调度运行
  • Shell任务的运行
  • Hive元数据的可视化展示查询及数据预览
  • Hadoop任务的自动调度

  其开源地址在Github上面,可在Github搜索Zeus,即可找到相关工程。Zeus是由阿里巴巴开源出来的,文档在Github上描述的也比较详细,其相关安装步骤及使用方法可参考Github上的官方文档,这里就不多做赘述了。

2.3 Azkaban

  这是由LinkedIn创建的一个批处理工作流,用于跑Hadoop的Jobs。Azkaban提供了一个易于使用的用户界面来维护和跟踪你的工作流程。其可视化界面如下所示:

  另外,Github上贡献的Azkaban调度系统的源码量不大,做二次开发难度不大。其功能点涉及以下内容:

  • 兼容Hadoop版本
  • 易用的Web UI
  • 简单的Web和Http工作流的上传
  • 项目工作区
  • 工作流调度
  • 模块化和插件化
  • 认证和授权
  • 用户行为跟踪
  • 邮件告警失败和成功
  • SLA告警
  • 重启失败的Jobs

  Azkaban的设计之初主要是基于可用性的考虑。在LinkedIn运行的有些年头了,一直驱动着它们的Hadoop和数据仓库。

  它由3个关键部分组成,分别是:

  • 关系行数据库(MySQL):Azkaban使用MySQL去做一些状态的存储。AzkabanWebServer和AzkabanExecutorServer这两个服务都需要接入到DB库当中。
  • AzkabanWebServer:WebServer使用DB的原因如下:
    • 项目管理:对项目权限和上传文件的管理。
    • 执行流程状态:对正在执行的程序进行跟踪。
    • 之前的流程或Jobs:通过搜索先前的工作和流程,去访问它们的日志文件。
    • 调度程序:保持预定的工作状态。
    • SLA:保持所有的SLA规则。
  • AzkabanExecutorServer:另外,ExecutorServer使用DB的原因如下所示:
    • 获取项目:从数据库中检索项目文件。
    • 执行工作流或Jobs:检索和更新流的数据,并执行。
    • Logs:存储作业的输出日志,并将其流入数据库。
    • 不同的依赖进行交流:如果一个流在不同的执行器上运行,它将从数据库中取取状态。

  三者的关系图,如下所示:

  关于其相关配置和使用,官方给出的文档比较详细,这里就不多赘述了。大家可以到Github去阅读官方给出的文档。

3.总结

  关于调度系统的选择,这里就比较了这3种,大家可以适情况而定,另外,若是条件允许或是有精力也可以参考这些调度系统的原理,开发一套满足自己当前业务的调度系统,也不失为一种选择。

4.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

时间: 2024-11-03 01:58:15

Hadoop - 任务调度系统比较的相关文章

linux 任务调度 系统任务调度

linux  at 针对运行一次的任务 crontab   控制计划任务的命令 crond系统服务 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程, 与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具, 并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务, 如果有要执行的任务,则自动执行该任务. 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个crontab文件

spark内核揭秘-04-spark任务调度系统个人理解

spark的任务调度系统如下所示: 从上图中科院看出来由RDDObject产生DAG,然后进入了DAGScheduler阶段,DAGScheduler是面向state的高层次的调度器,DAGScheduler把DAG拆分成很多的tasks,每组的tasks都是一个state,每当遇到shuffle就会产生新的state,可以看出上图一共有三个state:DAGScheduler需要记录那些RDD被存入磁盘等物化动作,同时需勋勋task的最优化调度,例如数据本地性等:DAGScheduler还要监

关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】

一次不经意发现Hadoop的系统态CPU使用率很高,然后百度一下居然是个已知问题. RHEL6优化了内存申请的效率,而且在某些场景下对KVM的性能有明显提升:http://www.Linux-kvm.org/wiki/images/9/9e/2010-forum-thp.pdf. 而Hadoop是个高密集型内存运算系统,这个改动似乎给它带来了副作用.理论上运算型Java程序应该更多的使用用户态CPU才对,Cloudera官方也推荐关闭THP.于是参考一些文章作了调整: # for hadoop

细水长流话Hadoop(1)Hadoop序列化系统

声明:个人原创,转载请注明出处.文中引用了一些网上或书里的资料,如有不妥之处请告之. 本文是我阅读Hadoop 0.20.2第二遍时写的笔记,在阅读过程中碰到很多问题,最终通过各种途径解决了大部分.Hadoop整个系统设计精良,源码值得学习分布式的同学们阅读,以后会将所有笔记一一贴出,希望能方便大家阅读Hadoop源码,少走弯路. 1 序列化核心技术... 1 2 类型对象大小比较... 3 3 Writable类型工厂... 4 4 ObjectWritable类型... 5 5 其它序列化系

slurm-16.05.3任务调度系统部署与测试(1)

1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slurm集群10.总结 1.概述 本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统 配置为4核心CPU,8G内存,20G系统盘,20G数据盘挂载到/opt,10G数据盘挂载

Slurm任务调度系统部署和测试(1)

1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务6. 部署slurm6.1 slurm下载6.2 解压编译安装 1. 概述 slurm任务调度系统,主要应用在HPC集群资源管理和任务调度.具体信息参见slurm官方网站:https://slurm.schedmd.com/ 部署Slurm任务调度系统,需要部署NTP内网时间同步服务器,LDAP全局认证服务器,Mysql数据库服务器 本篇博客主要记录如何

分布式工作流任务调度系统Easy Scheduler正式开源

分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler终于迎来了第一个正式开源发布版本 -- 1.0.0.相信做过数据处理的伙伴们对开源的调度系统如oozie.azkaban.airflow应该都不陌生,在使用这些调度系统中可能会有这样的体验:比如配置工作流任务不能可视化.任务的运行状态不能实时在线查看.任务运行时不能暂停.不能支持参数传递.不能补数.

如何构建延迟任务调度系统

一.需求目标 1.需求描述之前笔者接触过一些营销业务场景,比如说: 用户注册未登录过APP第二天早上10点发一条营销短信促活红包过期前两天短信通知,下午16:00发送等等定时任务处理业务.采用的技术方案是定时任务扫数据汇总表,分页读取一定数量然后处理然而随着业务的发展,业务多元化,遇到了以下场景: 拼团砍价活动过期前半小时提醒订单提交半小时内没有完成支付,订单自动取消,库存退还用户几天内没有操作过系统,发放激活短信以上场景处理时间不是固定的某个点,而是业务发生的时间推迟一段时间,针对以上的业务场

clover分布式任务调度系统

1.clover分布式调度介绍 clover分布式任务调度是完全使用Java技术自主开发 特点如下: 1.防单点故障 2.job可部署多台,但任务调度时,只有一台参执行.如果一台下线, clover选择其他已在zookeeper注册job来执行. 3.可管理监控程序 ,相关负责人的job不可用会发送邮件通知 4.提供管理后台,可手动停止任务,设置任务执行频率.恢复策 略.人工干预指定哪些job来工作,可查看任务执行进度.任务执行失败时会收到报警并记录日志. 5.执行中的任务,但未执行完成,不会再