大数据Oozie任务调度

简介: 大数据Oozie任务调度

1 Oozie 概述

Oozie 是一个用来管理 Hadoop 生态圈 job 的工作流调度系统。由 Cloudera公司贡献给 Apache。Oozie 是运行于 Java servlet 容器上的一个 java web 应用。Oozie 的目的是按照 DAG(有向无环图)调度一系列的 Map/Reduce 或者 Hive等任务。Oozie 工作流由 hPDL(Hadoop Process Definition Language)定义(这是一种 XML 流程定义语言)。适用场景包括:

需要按顺序进行一系列任务;

需要并行处理的任务;

需要定时、周期触发的任务;

可视化作业流运行过程;

运行结果或异常的通报。

fe966be7fbf94cd6b1b49b72a9dbb9dc.png


2 Oozie 的架构

Oozie Client:提供命令行、java api、rest 等方式,对 Oozie 的工作流流程的提交、启动、运行等操作;

Oozie WebApp:即 Oozie Server,本质是一个 java 应用。可以使用内置的web 容器,也可以使用外置的 web 容器;Hadoop Cluster:底层执行 Oozie 编排流程的各个 hadoop 生态圈组件;


3 Oozie 基本原理

Oozie 对工作流的编排,是基于 workflow.xml 文件来完成的。用户预先将工作流执行规则定制于 workflow.xml 文件中,并在 job.properties 配置相关的参数,然后由 Oozie Server 向 MR 提交 job 来启动工作流。


3.1 流程节点

工作流由两种类型的节点组成,分别是:Control Flow Nodes:控制工作流执行路径,包括 start,end,kill,decision,fork,join。Action Nodes:决定每个操作执行的任务类型,包括 MapReduce、java、hive、shell 等。

e40dd8072ddd4e0fa389867a6bb05b0a.png


4 Oozie 工作流类型

4.1 WorkFlow

规则相对简单,不涉及定时、批处理的工作流。顺序执行流程节点。Workflow 有个大缺点:没有定时和条件触发功能。

97e8d92ebada4eccbf03142d739ba1f8.png


4.2 Coordinator

Coordinator 将多个工作流 Job 组织起来,称为 Coordinator Job,并指定触发时间和频率,还可以配置数据集、并发数等,类似于在工作流外部增加了一个协调器来管理这些工作流的工作流 Job 的运行。

4800ac718af841ac89d493db49625c18.png

4.3 Bundle

针对 coordinator 的批处理工作流。Bundle 将多个 Coordinator 管理起来,这样我们只需要一个 Bundle 提交即可。


bbf8cf11592b418ba74779edd679b671.png

5 Oozie 和 Hue 整合

个人私心重新写了这里,因为Oozie原生使用太难用了而且坑也不少,集成后图形化界面就很好用



[liboozie]
# The URL where the Oozie service runs on. This is required in order for
# users to submit jobs. Empty value disables the config check.
oozie_url=http://node-1:11000/oozie
# Requires FQDN in oozie_url if enabled
## security_enabled=false
# Location on HDFS where the workflows/coordinator are deployed when submitted.
remote_deployement_dir=/user/root/oozie_works
[oozie]
# Location on local FS where the examples are stored.
# local_data_dir=/export/servers/oozie-4.1.0-cdh5.14.0/examples/apps
# Location on local FS where the data for the examples is stored.
# sample_data_dir=/export/servers/oozie-4.1.0-cdh5.14.0/examples/input-data
# Location on HDFS where the oozie examples and workflows are stored.
# Parameters are $TIME and $USER, e.g. /user/$USER/hue/workspaces/workflow-
$TIME
# remote_data_dir=/user/root/oozie_works/examples/apps
# Maximum of Oozie workflows or coodinators to retrieve in one API call.
oozie_jobs_count=100
# Use Cron format for defining the frequency of a Coordinator instead of the old
frequency number/unit.
enable_cron_scheduling=true
# Flag to enable the saved Editor queries to be dragged and dropped into a workflow.
enable_document_action=true
# Flag to enable Oozie backend filtering instead of doing it at the page level in
Javascript. Requires Oozie 4.3+.
enable_oozie_backend_filtering=true
# Flag to enable the Impala action.
enable_impala_action=true
[filebrowser]
# Location on local filesystem where the uploaded archives are temporary stored.
archive_upload_tempdir=/tmp
# Show Download Button for HDFS file browser.
show_download_button=true
# Show Upload Button for HDFS file browser.
show_upload_button=true
# Flag to enable the extraction of a uploaded archive in HDFS.
enable_extract_uploaded_archive=true

5.2 启动 hue 、oozie

启动 hue 进程

cd /export/servers/hue-3.9.0-cdh5.14.0

build/env/bin/supervisor

启动 oozie 进程

cd /export/servers/oozie-4.1.0-cdh5.14.0

bin/oozied.sh start

页面访问 hue

http://node-1:8888/


5.3 Hue 集成 Oozie

5.3.1 使用 hue 配置 oozie 调度

c031f40f97a845cbb6575bd8ce4163ea.png


5.3.2 利用 hue 调度 shell 脚本

在 HDFS 上创建一个 shell 脚本程序文件。


4925434022fd4f318a7056c451f8906f.png

2fdc98bb733347569837a2a51ab769ed.png

32cd7597a5a947c0a7cb667b36707a7f.png打开工作流调度页面。


a9275d6288404ab186b36e2692197078.png


e2739911494840839bdf237b5165139b.png92038a681a0540c29d838c54e86e2612.png


2fac880803da458cbbcff27165639b53.png

47e238641732452084a3e8275a6b3f08.png

b07e0af1a12e4d5382b422a4ad595919.png5.3.3 利用 hue 调度 hive 脚本

在 HDFS 上创建一个 hive sql 脚本程序文件。

29e4f5177b3145e0acac584230ea93d2.png

打开 workflow 页面,拖拽 hive2 图标到指定位置。

8f2d957da4e44ce5b32a154e6803f9db.png


c50c9261d6a04bd7b39d8a6c34c586b7.png

0fc78a4ed0614a1bb5a609253752c857.png


da1c3dcbfe8248738a8823de4d4f86d3.png

37bf563e83424f71a22c4313d187b77f.png5.3.4 利用 hue 调度 MapReduce 程序

利用 hue 提交 MapReduce 程序

ffb8a00002754c71be271c71ebe77119.png

f38b275b2e1b4a788bd856a0965c188e.png

5dd55a3a43094f639fe17b2683e47021.png



5.3.5 利用 Hue 配置定时调度任务

在 hue 中,也可以针对 workflow 配置定时调度任务,具体操作如下:


7bd04eb8d50642509f4a385d99f2bced.pnge6d30efab41c42d28d19bddb99a9e462.png3151da7267f8439f84b5294087911975.png


06a0658a9a48466c956f21846849af3d.png


一定要注意时区的问题,否则调度就出错了。保存之后就可以提交定时任务。

5c3da6ae919e4ce1a7c9dd47242b1e0b.png

b14944ee72014fd1b58679b2d2d3f5a1.png

点击进去,可以看到定时任务的详细信息。

a8dc8631ebfd4b5e844466d9bd9c5151.png3745094d01fc43b1ac1215a63a8f0aca.png



6 Oozie 任务查看 、 杀死

查看所有普通任务

oozie jobs

查看定时任务

oozie jobs -jobtype coordinator

杀死某个任务 oozie 可以通过 jobid 来杀死某个定时任务

oozie job -kill [id]

oozie job -kill 0000085-180628150519513-oozie-root-C


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
存储 分布式计算 监控
使用Airflow管理大数据工作流:自动化任务调度与依赖
【4月更文挑战第8天】Apache Airflow是一款开源的工作流管理工具,用于高效组织和调度大数据任务。它基于DAG(有向无环图)定义任务依赖,通过Operators(如BashOperator、PythonOperator)执行不同工作,并通过Scheduler和Executor协调任务执行。Web UI提供监控界面,Metadata DB存储元数据。创建DAG涉及定义DAG属性、Task及依赖关系,然后部署到Airflow环境。进阶功能包括Variables和Connections管理、XCom跨Task通信、自定义Operator及Plugin、高级调度与告警设置。
1966 0
|
存储 Kubernetes JavaScript
大数据任务调度工具 Apache DolphinScheduler
大数据任务调度工具 Apache DolphinScheduler
1368 1
|
SQL 分布式计算 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.2.6 数据开发及任务调度(上)
带你读《企业级云原生白皮书项目实战》——5.2.6 数据开发及任务调度(上)
412 0
|
SQL 分布式计算 DataWorks
带你读《企业级云原生白皮书项目实战》——5.2.6 数据开发及任务调度(下)
带你读《企业级云原生白皮书项目实战》——5.2.6 数据开发及任务调度(下)
471 0
|
11月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
656 14
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
432 4
|
12月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
1097 0
|
11月前
|
传感器 人工智能 监控
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
323 14
|
11月前
|
机器学习/深度学习 传感器 监控
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
340 1