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

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

相关文章
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
693 5
|
5月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
209 3
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
481 0
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
1000 0
|
1月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
340 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
292 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
3月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
505 9
Apache Flink:从实时数据分析到实时AI
|
3月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
453 0

热门文章

最新文章

推荐镜像

更多