使用hue+oozi构建任务调度系统
oozie调度系统调研
1. 关于oozie的简单说明
oozie应用程序目录结构说明:
一个完整的oozie应用程序一般情况下至少包含三个文件及目录:job.properties、workflow.xml、lib(lib表示为用来存放程序运行需要的jar包,非必需)
flow nodes的六种类型:
start, end, decision, fork, join, kill
action-node的部分类型:
Hadoop map-reduce, Hadoop file system, Pig, SSH, HTTP, eMail and Oozie sub-workflow,
Oozie可以自定义扩展任务类型。
2. Oozie简介
WorkFlow:工作流,控制工作流的开始和结束过程,以及工作流Job的执行路径,并提供一种机制来控制工作流执行路径(比如:Decision、Fork以及Join节点等)
Coordinator:调度器,多个WorkFlow可以组成一个Coordinator,可以把前几个WorkFlow的输出作为后一个WorkFlow的输入,当然也可以定义WorkFlow的触发条件,来做定时触发.
Bundle:控制一个或多个Coordinator应用
3. 一个标准的工作流的示例
hPDL流程的定义:
<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
<start to='wordcount'/>
<action name='wordcount'>
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.mapper.class</name>
<value>org.myorg.WordCount.Map</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>org.myorg.WordCount.Reduce</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
</configuration>
</map-reduce>
<ok to='end'/>
<error to='end'/>
</action>
<kill name='kill'>
<message>Something went wrong: ${wf:errorCode('wordcount')}</message>
</kill/>
<end name='end'/>
</workflow-app>
4.在hue中创建一个workflow。
在hue中可以通过拖拽的方式进行workflow.xml的编辑:
hue的任务管理页面:
hue编辑的workflow.xml保存在hdf上的/user/oozie/workspaces/目录下:
/user/oozie/workspaces/hue-oozie-1476263861.83
[fuxin.zhao@db-hadoop-client02 ~]$ hadoop fs -ls /user/oozie/workspaces/hue-oozie-1476263861.83
Found 3 items
-rw-r--r-- 3 hue hadoop 114 2016-10-12 17:33 /user/oozie/workspaces/hue-oozie-1476263861.83/job.properties
drwxr-xr-x - hue hadoop 0 2016-10-12 17:17 /user/oozie/workspaces/hue-oozie-1476263861.83/lib
-rw-r--r-- 3 hue hadoop 1277 2016-10-12 17:33 /user/oozie/workspaces/hue-oozie-1476263861.83/workflow.xml
自动生成的workflow文件内容如下:workflow的大体流程已经自动生成了,自己可以根据需要进行修改。
<workflow-app name="job-test-workflow" xmlns="uri:oozie:workflow:0.5">
<start to="shell-f60d"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shell-f60d">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>/user/hue/aa.sh</exec>
<argument>args1</argument>
<argument>args2</argument>
<argument>args2</argument>
<file>/user/hue/avro-1.7.4.jar#avro-1.7.4.jar</file>
<capture-output/>
</shell>
<ok to="shell-dfe8"/>
<error to="Kill"/>
</action>
<action name="shell-dfe8">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>/user/hue/aa.sh</exec>
<capture-output/>
</shell>
<ok to="kill-ece6"/>
<error to="Kill"/>
</action>
<kill name="kill-ece6">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="End"/>
</workflow-app>
5.提交oozie命令
1 .提交oozie任务
oozie job -oozie http://localhost:11000/oozie/ -config /root/tvreport-workflow/tvreport-daily-wf/job.properties -run
2 .提交kill 任务
oozie job -oozie http://localhost:11000/oozie -kill 0031861-140812111151262-oozie-root-W
3.查看job的日志信息
bin/oozie job -oozie http://hadoop-1:11000/oozie -log 0000001-160702224410648-oozie-beif-W
》》》未完待续。
使用hue+oozi构建任务调度系统的更多相关文章
- 深入浅出聊Taier—大数据分布式可视化DAG任务调度系统
导读: 上周,袋鼠云数栈全新技术开源规划--DTMO(DTstack Meetup Online)的第一场直播圆满完成.袋鼠云数栈大数据开发专家.Taier项目主导人偷天为大家带来了<Taier ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(二)
七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统的符号链接: 1)shell 使用的是 bash. 2)sh ...
- linux 任务调度 系统任务调度
linux at 针对运行一次的任务 crontab 控制计划任务的命令 crond系统服务 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程, 与windows ...
- Spring Boot中使用 Spring Security 构建权限系统
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,为应用系统提供声明式的安全 ...
- slurm-16.05.3任务调度系统部署与测试(1)
1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...
- slurm任务调度系统部署和测试(一)
1.概述 本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统. ...
- 基于nginx+xxl-job+springboot高可用分布式任务调度系统
技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...
- 分布式任务调度系统xxl-job搭建
为解决分布式环境下定时任务的可靠性,稳定性,只执行一次的特性,我找到了个大众点评开源的分布式调度任务解决完整系统,下面我将一步步深入解读该系统,从基本的使用到源码的探究 下载 https://gith ...
- Slurm任务调度系统部署和测试(源码)(1)
1. 概述1.1 节点信息2. 节点准备3. 部署NTP服务器4. 部署LDAP服务器5. 部署Munge认证服务6. 部署Mysql数据库服务7. 部署slurm7.1 创建slurm用户7.2 挂 ...
随机推荐
- 响应式网站通用css
/* core.css v1.1 | MIT License | corecss.io */ html { font-family: sans-serif; font-size: 100%; line ...
- DDoS deflate+iptables防御轻量级ddos攻击
一.查看攻击者ip #netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 二.安装ddos deflate ...
- asp.net如何在前台利用jquery Ajax调用后台方法
一 :最近因为帮同事开发项目使用到了asp.net,而我又想实现Ajax异步请求....从网上查询了一下资料之后,原来在asp.net中利用Ajax调用后台方法同样很简单,为了便于自己以后查看,特将此 ...
- windows的Timer和写文件方式串口注意!
1.Timer要读取并分发消息,才能触发自定义回调函数 SetTimer(NULL, 1, 40, (TIMERPROC)TimerProc); while(GetMessage(&msg, ...
- Jquery使select、radio某项选中
select $("#class").find("option[value='123']").attr("selected",true); ...
- MyBatis(2):config.xml文件
前言 前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句.前者我把它命名为config.xml,config.xml的内容是: 1 ...
- http协议 301和302的原理及实现
一.来看看官方的说法: 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved) ...
- JQuery实现广告效果(滚动切换)
JQuery实现广告效果(滚动切换) Html+css 效果如上图 代码: <!DOCTYPE html> <html> <head lang="en&qu ...
- My roadway of compilers principles.
龙书学习过程代码记录--Python3.5(毕竟第一遍看书,书里面的例子全用python写的) One 将中缀表达式翻译成后缀表达式↓ class Parser(object): def __init ...
- Git Permission denied (publickey).
有可能, jenkins slave service or jenkins service的logon 账户没有设置好