Apache Ooie--实战操作-定时调度任务|学习笔记

简介: 快速学习 Apache Ooie--实战操作-定时调度任务

开发者学堂课程【Oozie 知识精讲与实战演练Apache Ooie--实战操作-定时调度任务】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/716/detail/12791


Apache Oozie--实战操作--定时调度任务


内容介绍

一、Oozie 定时任务调度

二、基于时间的调度任务如何配置

三、具体的相关配置

四、修改 coordinator.xml

五、修改 workflow.xml

六、把配置的文件夹上传到 hdfs 指定的路径当中


一、Oozie 定时任务调度

1.Oozie  本身的 workflow 并不能满足于定时周期性的执行,因此需要一个协调者来支撑,这个协调者被称为 Coordinator。Coordinator 模块主要通过 xml 文件来进行相关配置。通过它里面配置的属性,就可以控制工作流程、方式和周期重复的执行。

2.在 Oozie 中,Coordinator 的调度主要有两种实现方式。

(1)第一种是基于时间的定时任务调度。即指定三个参数,第一个是起始时间,第二个是结束时间,第三个是调度频率,那么它会在时间范围内按照指定的频率,周期性地重复地去执行工作流程。这种方式使用率最高;

(2)第二种是基于数据的任务调度,即检测输入数据是否已准备好,只有准备好,有了数据,才会触发任务的执行。


二、基于时间的调度任务如何配置

1.使用官方自带的模板,在它的安装包下有个 examples 文件夹,里面有个 cron 文件,这里面有定时调度的各种配置的模板,下面以

cd /export/servers/oozie-4.1.θ-cdh5.14.θ

cp -r expmples/apps/cron oozie_works/cron-job

为例来做相关的修改。

首先,先定到安装包的根目录图片,然后把例子中的 cron 文件夹完整地拷贝到工作路径,重命名为 cron-job 并直接复制。

图片1.png

(2)第二步:拷贝 hello.sh 脚本

以调度 shell 周期性地执行为例,

cd /export/servers/oozie-4.1.θ-cdh5. 14.θ/oozie_ works

cp shell/hello. sh cron-job/

把它进行复制。

图片2.png

复制完成之后,打开定时任务的文件夹。这里面除了第一个没有文件,其他的正好跟之前调度的 shell 脚本完全一致。一个是 job 任务的时间配置,还有一个是工作流程的 xml 文件。如果没有上面的 coordinator .xml,那么下面的三个就是普通的 oozie 工作流程。但是它们三个并不能满足于周期性地触发执行。这时就需要协调者 xml 文件来控制他们如何进行周期性地执行。


三、具体的相关配置

使用 vi 编辑器,建议大家使用远程配置,或者把这些配置文件下载到本地,然后再把它上传过来。使用 Notepad++ 远程编辑。打开 Notepad++ ,选择刷新。在 oozie_works 下有个刚才创建的 cron-job。首先,编辑 job.properties 的属性信息。双击 job.properties 文件夹,这里面主要是一些提交任务当中的相关属性。

oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/cron-job/coordinator.xml

这个参数叫做 coord.application.path,这个参数指定的是 coordinator.xml 文件的路径。这个路径必须要指定正确。

#start:必须设置为未来时间,否则任务失败

start=2019-05-22T19:20+0800

end=2019-08-22T19:20+0800

EXEC= hello.sh

workflowAppUri=${nameNode}/user/${user.name}/${examplesRoot}/cron-job/workflow.xml

上面是设置定时的起始和结束时间。针对时间设置,有两点需要特别强调,第一是时间的格式,之前已经修改了工作的时区为东八区,所以时间格式必须按照这种方式去写,后面有+800,而且周边没有空格。第二点是开始的时间必须是未来的时间,不可能从过去的时间开始调度,因为此时会出现任务出错。然后配置的脚本名称是 shell 脚本名称,跟上面拷贝的保持一致。


四、修改 coordinator.xml

首先,回到编辑当中。第一个是 nameNode 的地址,进行修改。第二个 jobTracker 的地址也进行修改。第三个 queueName 默认为  default 不需要修改。文件夹 exampleRoot 叫 oozie_works,需要修改。接下来是 cordinator 的路径,它位于 userRoot 下的 oozie works 下的 cron-job 下的 coordinator.xml,对其进行修改。再复制上两个时间格式并粘贴,修改时间为将来的时间,比如

start=2019-06-09T13:00+0800

end=2019-06-09T19:20+0800

因此它会从2019年6月9日13:00开始,到2019年6月9日19:20结束,并在这个时间范围内周期性地执行。但是此时并没有配置合种方式进行周期性。修改好之后指定任务名称为 hello.sh。 最后修改 workflow.xml 文件的路径,直接复制粘贴,并检查是否粘贴错误。

修改 coordinator.xml 文件即协调者文件的属性信息。需要修改名字为 cron-job 或者自己重新取个名字,但后面使用时需要保持一致。然后修改周期的频率 frequency。有两种表达频率的方式,第一种是 frequency="${coord:minutes(1)}"。minutes 可以换成 hours, days 等。第二种方式为frequency="10 9* * *" 每天上午的09:10:00开始执行任务

frequency="01 * * *" 每天凌晨的01:00开始执行任务

还需要修改起始时间和结束时间。


五、修改 workflow.xml

以调度一个 shell 脚本为例。需要在 xmlns 指定文件执行的名字和路径。

${jobTracker}

${nameNode}

mapred.job.queue.name

${queueName}

${EXEC}

/user/root/oozie_ works/cron-job/${EXEC}#${EXEC}

把上面复制这段程编码复制过去。


六、把配置的文件夹上传到 hdfs 指定的路径当中

先回到上一级目录当中,

图片3.png

然后使用 put 操作就完成了。

图片4.png

上传过去后可以通过浏览器进行查看。

图片5.png

使用 oozie 自带的进行提交,提交后不会立即执行,必须满足调度。检查一下调度的解析配置是否正确:选择 Coordinator Jobs

图片6.png

点击刷新按钮,等他加载。点击工作流程,弹出一个对话框。

图片7.png

对话框里有定时调度的相关的编号、名字、状态时间。下面有执行的计划,可以看到每分钟执行一次。计划的状态那一栏由 Wating 变成 Running 再变成 Suceed。

图片8.png

提交完后,检查是否能执行。其中有一些细节需要注意,比如-这个符号很有可能中英文符号混用。

相关文章
|
10天前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
50 5
|
29天前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
36 3
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
194 0
|
3月前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
312 0
|
5月前
|
弹性计算 应用服务中间件 Linux
双剑合璧:在同一ECS服务器上共存Apache与Nginx的实战攻略
在ECS服务器上同时部署Apache和Nginx的实战:安装更新系统,Ubuntu用`sudo apt install apache2 nginx`,CentOS用`sudo yum install httpd nginx`。配置Nginx作为反向代理,处理静态内容及转发动态请求到Apache(监听8080端口)。调整Apache的`ports.conf`监听8080。重启服务测试,实现两者高效协同,提升Web服务性能。记得根据流量和需求优化配置。【6月更文挑战第21天】
499 1
|
4月前
|
分布式计算 Apache Spark
|
3月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
44 1
|
20天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
491 13
Apache Flink 2.0-preview released
|
24天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
54 3
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

推荐镜像

更多