Hadoop - 任务调度系统比较

1.概述

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

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上的官方文档,这里就很少作赘述了。oop

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去阅读官方给出的文档。htm

3.总结

  关于调度系统的选择,这里就比较了这3种,你们能够适状况而定,另外,如果条件容许或是有精力也能够参考这些调度系统的原理,开发一套知足本身当前业务的调度系统,也不失为一种选择。

4.结束语

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

相关文章
相关标签/搜索