基于Hue和Oozie的自动化调度

Posted 杀智勇双全杀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Hue和Oozie的自动化调度相关的知识,希望对你有一定的参考价值。

大数据离线业务场景中的增量技术

任务流调度需求

整体需求

相同的业务线,有不同的需求时,会用多个程序来实现。这些程序组合在一起,基于工作流(按照执行顺序)来实现任务流(单个某种功能的脚本)的自动化运行来实现需求。

基于时间的任务运行

单个/多个任务在某些固定时间(例如:每天)执行。

基于运行依赖关系的任务运行

某个/某些Job必须等待某个/某些Job完成才能运行。

调度类型

定时调度

基于某种时间的规律进行调度运行。

依赖调度

基于某种依赖关系进行调度运行。

任务流调度工具

Linux Crontab

Linux中自带了这个可以定时执行任务的工具(也能实现定时执行)。。。crontab -e可以编辑。。。

*			*			*			*			*			command
分钟		小时			日			月		周几

如果不是定时任务,这货就无能为力了。

Oozie

Cloudera的Hadoop生态圈调度工具。功能很强大,能满足几乎所有常规的任务流调度的需求,也支持 DAG(Direct Acyclic Graph)单向无环流程调度。其本身并不是分布式的,而是依赖于MapReduce实现分布式,在11000端口打开后可以看到原生交互对新手极不友好,监控不完善,难学难用:
在这里插入图片描述
Oozie官网

Oozie基于DAG实现依赖调度使用WorkFlow,基于定时器实现定时调度使用Coordinator。功能全面且强大,但是这货是基于Hadoop平台的分布式离线任务流调度(底层依赖MapReduce,将工作流变成MapReduce程序并提交给YARN运行,由YARN来将不同的工作流分配到不同的机器上运行,由此构建分布式调度系统),原生是手写XML配置文件:

<start to="first">
<action name="first">
	<shell>
		<path>xxx.sh</path>
		<args></args>
	</shell>
	<ok to="second"> </ok>
	<error to="kill"></error>
</action>
<action name ="second">
	<spark>
		<jar></jar>
		<class></class>
		……
	</spark>
	<ok to="third"> </ok>
<error to="kill"></error>
<action>
    <action name ="forth">
	<hive>
		<scprit></scprit>
		<path></path>
		……
	</hive>
	<ok to="end"> </ok>
	<error to="kill"></error>
<action>
<kill name="kill"> 
	kill 
</kill>
    <end name="end"> 
	end 
</end>

想开发个顺序执行的串行流程还挺费劲。。。其中:
控制节点:start、end、kill用于控制程序运行的流程。
start:开始节点。
end:终止节点。
kill:强制退出节点。
fork:开始分支(多任务并行)。
join:结束分支。
程序节点:action。

Zeus

阿里基于Hadoop1老版本开发,后放弃了这货,不支持Hadoop。后续携程更新。

Azkaban

LinkedIn开发。Azkaban官网
在这里插入图片描述
在3.x之后支持完全分布式,自身也是分布式调度系统,UI对新手很友好。有很多插件可以协助完成调度功能。

Hues中使用Oozie

原生方式太难用。在8888端口打开Hue的Browser界面:
在这里插入图片描述
对新手很友好。
在这里插入图片描述
改一下模式:
在这里插入图片描述
拖拽即可搞定流程。。。太方便了!!!

构建工作流

先准备一些脚本:

mkdir /export/data/flow

使用VIM写4个脚本(脚本名称为test01.sh、test02.sh、test03.sh、test04.sh,内容当然也要改!!!):

#!/bin/bash
echo "this is test01"

上传到HDFS(∵不确定会被哪个节点的MapReduce执行,放到HDFS可以实现分布式):

hdfs dfs -put /export/data/flow /user/oozie/

在这里插入图片描述

在这里插入图片描述
这个图标就是Shell,拖到下边,缩放可能影响UI,鼠标变色即可。
在这里插入图片描述
在这里插入图片描述
还没完!!!需要再添加一次Files。。。

WorkFlow

先构建个串行的:
在这里插入图片描述
在这里插入图片描述
右上角点保存。然后就可以Submit执行:
在这里插入图片描述
这种报警不用管。
在这里插入图片描述
可以看进度,由于走MapReduce,会很慢。

Fork && Join

把test03拖到test02左边或右边即可出现分叉选择。。。很简单,不解释。

在这里插入图片描述
这个图标拖下来会出现子流。也不难。。。

定时调度

在这里插入图片描述
在这里插入图片描述
有GUI还是很方便的。。。

自动化调度

按照需求,先把Sqoop、Shell、SQL等脚本写好,再提交给Oozie简单拖拽即可配置工作流程与调度时机。

以上是关于基于Hue和Oozie的自动化调度的主要内容,如果未能解决你的问题,请参考以下文章

问题记录CDH版Hue提交Oozie Coordinator调度报500异常

数据采集+调度:cdh5.8.0+mysql5.7.17+hadoop+sqoop+hbase+oozie+hue

hue/ oozie/ sqoop/ kafka/ zookeeper/ flume 简介及cdh安装简介

oozie说明(本文参考多处,自己留看)

Hue使用

Oozie-coordinator调度