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

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

相关文章
|
5月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
222 5
|
6月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
112 3
|
8月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
323 0
|
8月前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
554 0
|
10月前
|
弹性计算 应用服务中间件 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天】
891 1
|
9月前
|
分布式计算 Apache Spark
|
4月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
512 33
The Past, Present and Future of Apache Flink
|
1月前
|
SQL 存储 人工智能
Apache Flink 2.0.0: 实时数据处理的新纪元
Apache Flink 2.0.0 正式发布!这是自 Flink 1.0 发布九年以来的首次重大更新,凝聚了社区两年的努力。此版本引入分离式状态管理、物化表、流批统一等创新功能,优化云原生环境下的资源利用与性能表现,并强化了对人工智能工作流的支持。同时,Flink 2.0 对 API 和配置进行了全面清理,移除了过时组件,为未来的发展奠定了坚实基础。感谢 165 位贡献者的辛勤付出,共同推动实时计算进入新纪元!
297 1
Apache Flink 2.0.0: 实时数据处理的新纪元
|
6月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1262 13
Apache Flink 2.0-preview released
|
6月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
227 3

热门文章

最新文章

推荐镜像

更多
下一篇
oss创建bucket