大数据任务调度(Azkaban,Oozie)

文章目录

  • 常见调度工具
  • Oozie
    • Oozie架构
    • Oozie运行原理
    • Oozie 工作三大核心
    • Oozie 元数据库
    • Oozie Action 节点类型
    • Oozie Job 创建方式
      • Hue 创建 Oozie job 步骤及演示
      • Oozie Web 界面
      • 查看workflow,coord,bundle
    • Oozie的Action
      • Oozie Workflow 之 Hive Action
      • Oozie W W orkflow 之 Shell Action
      • Oozie W W orkflow 之 Sqoop Action
    • Oozie DAG 图
    • Oozie 命令行工具
    • Workflow 案例 --forkjoin
    • Oozie Job 状态
    • Coordinator
    • Coordinator 相关概念
    • Coordinator Job 状态
    • Coordinator Action 状态
    • 常见 EL函数
    • Coordinator 案例 -- 时间触发
    • Bundle,Coordinator,Workflow 的关系
  • Azkaban
    • Azkaban运行模式及架构
    • Azkaban Web Server
    • Azkaban Executor
    • Azkaban 元数据库重要表介绍
    • Azkaban编译安装
    • Azkaban启动停止
    • Azkaban Web 界面菜单 介绍
    • Azkaban 用户管理
    • Azkaban 用户管理
    • Azkaban 新建项目
    • Azkaban 新建项目
    • Azkaban 上传、执行、调度
    • Azkaban 调度(schedul)策略
    • Azkaban 其他操作
    • Azkaban 常见任务类型
    • Azkaban 一个 Job 内运行多个任务
    • Azkaban job 常用属性 配置
    • Azkaban 网状依赖
    • Azkaban 案例实战
    • Oozie 与 Azkaban
    • Azkaban 常见问题

大数据任务调度(Azkaban,Oozie)_第1张图片

常见调度工具

  • CRONTAB (最简单的方式,适合不是非常复杂的场景,比如只按照时间来调度)
  • OOZIE(Hadoop自带的)
  • AZKABAN(开源的一个调度工具)
  • 定制开发

Oozie

Oozie是一个基于工作流的调度系统,用来管理Hadoop中的的各种操作。
它是运行在Java Servlet容器中的Web应用,并用数据库存储工作流定
义及状态等元数据。

  • Hadoop生态自带调度系统
  • 工作流通过DAG(有向无环图)来控制
  • 调度可以基于时间和数据驱动
  • 工作流通过hPDL定义(一种XML流程定义语言)
  • 资源文件(脚本、Jar包等)存放在HDFS

Oozie架构

大数据任务调度(Azkaban,Oozie)_第2张图片
中间块Oozie Server是一个web服务

Oozie运行原理

原理:通过DAG有向无环图控制workflow.xml中定义好的工作流节点,Oozie Server向Hadoop集群提交map-only的Oozie Launcher作业,Launcher启动工作流中要执行的操作

节点(Node):

  • 控制节点(CONTROL NODE):工作流的流程控制,start,end,fork,join,kill
  • 动作节点(ACTION NODE) : hive,shell,sqoop,pig,mr

Oozie 工作三大核心

  • Workflow
    控制流程及动作节点定义,依赖关系配置,都是在这里实现。
  • Coordinator
    按照时间或者数据驱动调度workflow。
  • Bundle
    Coordinator的集合

Oozie 元数据库

主要关注红色的表
大数据任务调度(Azkaban,Oozie)_第3张图片

Oozie Action 节点类型

大数据任务调度(Azkaban,Oozie)_第4张图片

Oozie Job 创建方式

  • HUE
    大数据任务调度(Azkaban,Oozie)_第5张图片
  • OOZIE命令行

Hue 创建 Oozie job 步骤及演示

  • 登陆CMF
    大数据任务调度(Azkaban,Oozie)_第6张图片
  • 进入HUE WEB页面
    大数据任务调度(Azkaban,Oozie)_第7张图片
  • 打开Workflows菜单=>Editors => Workflows
    大数据任务调度(Azkaban,Oozie)_第8张图片
    大数据任务调度(Azkaban,Oozie)_第9张图片
  • 创建,选择Action类型,配置相关信息,保存(红框里是action类型比如hive,spark,shell等等)
    大数据任务调度(Azkaban,Oozie)_第10张图片
    拖拽shell的action
    大数据任务调度(Azkaban,Oozie)_第11张图片
    大数据任务调度(Azkaban,Oozie)_第12张图片
  • 提交运行
    选择后点击Add即可
    同时添加files
    大数据任务调度(Azkaban,Oozie)_第13张图片

Oozie Web 界面

浏览器中输入 oozie_server:11000/oozie
大数据任务调度(Azkaban,Oozie)_第14张图片

查看workflow,coord,bundle

大数据任务调度(Azkaban,Oozie)_第15张图片

Oozie的Action

Oozie Workflow 之 Hive Action


	
		${jobTracker}
		${nameNode}
		
			
				mapred.job.queue.name
				root.users.root
			
		
		jdbc:hive2://gp-bd-master01:10000/default
		
	
	
	

Oozie W W orkflow 之 Shell Action


	
		${jobTracker}
		${nameNode}
		/user/root/vingo/oozie/shell/echo.sh
		/user/root/vingo/oozie/shell/echo.sh#echo.sh
			
	
	
	

#echo.sh加#的意思是把这个文件添加到临时目录里;因为在集群中,运行此action的节点可能没有这个文件。

Oozie W W orkflow 之 Sqoop Action


	
		${jobTracker}
		${nameNode}
		list-databases --connect jdbc:mysql://gp-bd-slave01:3306/
		--username root --password root
	
	
	

Oozie DAG 图

大数据任务调度(Azkaban,Oozie)_第16张图片
复杂的DAG可能无法直接显示,可以通过如下链接获取:
http://oozie master ip:11000/oozie/v2/job/ 0000008-180418034504230-oozie-oozi-W ?show=graph

Oozie 命令行工具

(1)启动/ /停止

  • 后台运行命令:
    bin/oozied.sh start
  • 前台运行命令:
    bin/oozied.sh run
  • 停止运行命令:
    bin/oozied.sh stop
  • 查看状态
    oozie admin -oozie http://localhost:11000/oozie -status

(2)作业提交

  • 提交
    oozie job -oozie http://localhost:11000/oozie -config job.properties -
    submit
    注: 设置OOZIE_URL 可以不用每次都写-oozie http://localhost:11000/oozie
    export OOZIE_URL=http://localhost:11000/oozie
  • 开始
    oozie job -start 0000002-180418034504230-oozie-oozi-W
  • 运行,其效果等于 提交 + 开始
    oozie job -config job.properties -run
  • 挂起
    oozie job -suspend 0000002-180418034504230-oozie-oozi-W
    作业被挂起后,正在运行的action会继续运行,未运行的则不会继续运行
    大数据任务调度(Azkaban,Oozie)_第17张图片
  • 恢复
    oozie job -resume 0000002-180418034504230-oozie-oozi-W
    大数据任务调度(Azkaban,Oozie)_第18张图片
  • 杀死
    oozie job -kill 0000002-180418034504230-oozie-oozi-W

(3)作业信息查看

  • 查看所有job
    oozie jobs
  • 查看某个job(workflow/coord/bundle)的信息
    oozie job -info 0000002-180418034504230-oozie-oozi-W
  • 查看更详细信息
    oozie job -info 0000002-180418034504230-oozie-oozi-W -verbose
  • 过滤指定状态job
    oozie jobs -filter status=SUCCEEDED
    oozie jobs -filter status=RUNNING

Workflow 案例 --forkjoin

从fork节点开始并行多个分支,各分支结束后汇聚回Join节点,fork和join必须成对出现,可以嵌套
大数据任务调度(Azkaban,Oozie)_第19张图片

job.properties
--------------------------------------------------------------
oozie.use.system.libpath=True
security_enabled=False
dryrun=False
jobTracker=gp-bd-master01:8032
nameNode=hdfs://gp-bd-master01:8020

workflow.xml
大数据任务调度(Azkaban,Oozie)_第20张图片

Oozie Job 状态

大数据任务调度(Azkaban,Oozie)_第21张图片

Coordinator

Coordinator是workflow的定时触发器,可基于时间条件或者数据生成触发。若条件满足,则触发workflow任务,否则等待数据生成或时间条件满足

  • 时间触发
    ① EL表达式
    ② CRONTAB 表达式
  • 数据文件触发

Coordinator 相关概念

  • Coordinator Application: Coordinator 应用
  • Coordinator Job: 是Coordinator 应用实例,任务实例根据生成的条件已经将参数具体化,并执行Coordinator Action
  • Coordinator Action: 代表满足了启动了的任务流
  • Frequency: 调度频率,CRONTAB或者EL表达式
  • Concurrency: 并行度,可以同时执行的action的数量
  • EL 表达式:
  • Actual time: 任务流实际执行的时间点
  • Nominal time: 通过逻辑计算,任务流理论上应该执行的时间点
  • Dataset: 数据集,数据集中会有一个url代表

Coordinator Job 状态

  • PREP
  • RUNNING
  • RUNNINGWITHERROR
  • PREPSUSPENDED
  • SUSPENDED
  • SUSPENDEDWITHERROR
  • PREPPAUSED
  • PAUSED
  • PAUSEDWITHERROR
  • SUCCEEDED
  • DONEWITHERROR
  • KILLED
  • FAILED

Coordinator Action 状态

调用workflow,其状态与workflow类似

  • WAITING
  • READY
  • SUBMITTED
  • TIMEDOUT
  • RUNNING
  • KILLED
  • SUCCEEDED
  • FAILED

常见 EL函数

大数据任务调度(Azkaban,Oozie)_第22张图片

Coordinator 案例 – 时间触发

coord_demo_daily/coordinator.xml

<coordinator-app name="coord_demo_daily"
 frequency="*/5 * * * *" 
                    

你可能感兴趣的:(大数据项目)