您的位置:首页 > 大数据

大数据集群工作流及任务管理组件对比

2016-04-28 11:25 309 查看
1、传统crontab管理任务
crontab -e
注意日志的重定向,方便排错
*/5 * * * * /opt/bin/hive_opt/synclog_5min.sh > /cronlog/syn_by_5min/synclog_5min.log 2>&1


2、 开源工作流Azkaban与Oozie对比

功能

二者都可以调度mapreduce,pig,java,脚本工作流任务

二者都可以定时履行工作流任务

工作流定义

Azkaban使用Properties文件定义工作流

Oozie使用XML文件定义工作流

工作流传参

Azkaban支持直接传参,例如${input}

Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}

定时履行

Azkaban的定时履行任务是基于时间的

Oozie的定时履行任务基于时间和输入数据

资源管理

Azkaban有较严格的权限控制,如用户对工作流进行读/写/履行等操作

Oozie暂无严格的权限控制

工作流履行

Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同1台节点)和multi server mode(executor server和web server可以部署在不同节点)

Oozie作为工作流服务器运行,支持多用户和多工作流

工作流管理

Azkaban支持阅读器和ajax方式操作工作流

Oozie支持命令行、HTTP REST、Java API、阅读器操作工作流

3、 rundeck自动化发布

RunDeck介绍

RunDeck是用Java/Grails写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。RunDeck提供如下功能:

1). 提供web界面和命令行来执行shell命令和job

2). 自定义job步骤

3). 设置shell命令/job运行周期(类似cron table的功能)

4). 用户权限控制,支持LDAP/ActiveDirectory

5). 保存历史日志

6). 提供web API

通过以上功能,RunDeck可以在任意数量的服务器上批量执行不同的任务,降低对自动化的部署、执行、维护的工作。

RunDeck架构

RunDeck是基于Java的webapp服务,运行在Servlet容器里。用户登陆RunDeck,在web界面进行操作,请求对远程服务器进行操作。web通过HTTP(s)与RunDeck服务进行通信,RunDeck服务接受服务请求后,从配置文件里面读取用户权限,以及服务器资源的一些信息。结合权限以及资源信息,RunDeck服务通过ssh对远程的服务器进行操作,并将操作结果存放在数据库中。

RunDeck的应用

为了更好的利用RunDeck,我们主要从以下2个方面来配置,规划,管理我们的服务器资源和脚本资源。

a. 用project和tag对服务器进行分类

根据服务器资源的不同作用,可以将服务器组分成不同的项目类别,方便不同用户操作。比如我们就有一个专门的project是管理push功能的服务器。通过配置文件,可以赋予用户不同的权限,有些用户只能查看push组的服务器资源,有些用户可以操作。

虽然用project可以对不同服务器进行分组,但是同一个project的服务器有不同的作用。比如在push组的服务器项目中,又可以分数据库服务器,下载服务器,日志服务器等等。对于这种情况,通过给服务器打不同tag,这样需要对一批服务器执行相同操作,就非常方便。

b. 通过job来管理任务

RunDeck提供一个非常强大的功能,就是可以自己定义job。job由命令、脚本、其它的job组成。比如对于服务器上的各种web server,可以定义不同的job,执行不同的操作。实际配置中,我们就对apache服务器定义了三个job,分别对应启动、停止、重启apache服务。对于nginx服务器,定义job来配置nginx的端口号。通过job机制,用户可以定义、管理、维护各种脚本、操作,极大的提高自动化效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: