Apache Oozie一实战操作一调度 shell 脚本|学习笔记

简介: 快速学习 Apache Oozie一 实战操作一调度 shell 脚本

开发者学堂课程【Oozie 知识精讲与实战演练Apache Oozie一实战操作一调度 shell 脚本】学习笔记,与课程紧密联系,让用户快速学习知识。  

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


Apache Oozie一实战操作一调度 shell 脚本


内容介绍

一、Oozie 调度 shell 脚本


一、Oozie 调度 shell 脚本

1、根据官方自带示例准备配置模板,根据配置模板和情况做一些相关修改。比如具体参数具体路径在哪里。把配置文件连同 shell 脚本一起上传到指定的工作路径下。

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

cp -r examples/apps/shell/ oozie_works/ 把文件夹及所有同时拷贝到这个文件当中。

把shell的任务模板拷贝到 oozie 指定的工作目录当中去,涉及到配置文件的修改,所以一定要细心。

首先准备一下配置模板,在官方自带的 examples 当中有 shell 脚本调用的相关示例。

[root@node-1oozie-4.1.0-cdh5.14.0]#11oozie_works/she11/

total 8

-rw-r--r--. 1 root root 971 Jun 8 20:30 job.properties

-rw-r--r--. 1 root root 2075 Jun 820:30workf1ow.xm]

[root@node-1oozie-4.1.0-cdh5.14.0]#

workf1ow.xm 是工作流的核心配置文件,里面有相关的流程和节点信息,另外一个就是任务的相关属性信息,提交程序的地点和路径等。

2.准备待调度的 shell 脚本文件

针对 oozie 来说,只关心 shell 能不能执行,如果不能执行,那就是 shell 程序书写问题。

注意:这个脚本一定要是在 oozie 工作路径下的shell 路径下的位置,也就是说和workf1ow.xm 和 job.properties 属于同一级数据。

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

vim oozie_works/shell/hello.sh

直接输出 helloworld,追踪到 export/servers/hello oozietxt

#!/bin/bash

echo"helloworld">>/export/servers/hello oozietxt

将以上步骤复制并执行,保存后CD到 oozie works 当中对两个配置文件进行相关的编写,一个是在 oozie_works/she11/

[root@node-1 she11]# 11 total 12

-rw-r--r--. 1 root root 66 Jun 8 20:32 he1lo.sh

-rw-r--r--. 1 root root 971 Jun 8 20:30 job.properties

-rw-r--r--. 1 root root 2075 Jun 8 20:30 workf1ow.xm]

[root@node-1 she11]#

3.修改配置模板

这里只要去指定 oozie 任务节点相关信息,属性,路径等,通过对 oozie 的学习知道,首先启动时会有一个 m 码程序,通过 m 码程序再去提交各种后续任务。

修改 job.properties

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

vim job.properties

nameNode=hdfs://node-1:8020(这里要保持一致)

jobTracker=node-1:8032

queueName=default

examplesRoot=oozie works

ooziewfapplicationpath=${nameNode}/user/${username)/${examplesRoot}/shell

EXEC=hello.sh

指定 NameNode,端口是8020,

Job Tracker: 在hadoop2 当中,jobTracker 这种角色已经没有了,只有 Resource Manager,这里给定                                                                                                                 resourceManager 的 IP 及端口即可,端口默认8032。

queueName: 提交 mr 任务的队列名;

examplesRoot: 指定 oozie 的工作目录;

oozie.wf.application.path:工 作流应用的路径,oozies 首先执行 mr 程序,mr 执行任务资源在此路径下,需要把本地的文件上传到这个路径当中。使用变量引用方式获取很多值。nameNode                                            是访问的地址,根目录下是 user/${username),参数为 oozies works 保持一致。

EXEC: 指定执行任务的名称。

以上是外围的相关信息并不能描绘出 oozie 工作流的流程。以下是整个工作流的核心,在 workflow.xml,当中是各种控制节点和动作节点。

4.修改 workflow.xml

开始节点:

地址:

${jobTracker}

${nameNode}

mapred.job.queue.name

${queueName

地址是通过$引用变量的形式提取到配置的值,很重要

执行脚本:${EXEC}

文件路径:/user/root/oozie_works/ shell/${EXEC}#${EXEC}

成功:

失败:

${wf:actionData(shell-node)[my_output']eqHello Oozie'}

信息:Shell action failed, error

message[${wf:errorMessage(wf:lastErrorNode())}]

Incorrect output,expected [Hello Oozie]but was[${wfactionData(shell node')[my_output']}]

当中的任何细节执行出错的话都会导致执行失败。

Shell action failed 提示失败。

这样就完成了工作流的核心与配置,将以上代码进行核对并修改。第一种可以回到node 中使用编辑器进行修改,第二种可以进行 notepad 远程修改文件。

打开 notepad++,使用 NPPFTP 方式连接到机器上,然后点击刷新,在刷新下有一个叫做 Ooziework,点进去是刚才拷贝的文件,首先修改这个叫job.properties。

nameNode=hdfs://node-1:9000(要跟你的机型保持一致)

查看配置是可以去查看hdoop.pwd来查看,在hdoop文件当中有个core-site.xm1,这里面就指定了机器的属性

jobTracker=node-1:8032

queueName=default

examplesRoot=oozie_worksoozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell

EXEC=hello.sh

这样就完成了第一个配置文件的编写。

同样使用远程编辑形式修改workflow.xml,主要修改一下部分,其他地方不用动

任务名称:echo

路径:my_output=Hello Oozie

更改成

${EXEC}

/user/root/oozie_works/shell/${EXEC}#${EXEC}

一个是他执行的任务名称,一个是他执行的路径,这两个缺一不可,因为他知道他要干什么,也知道执行的东西在哪里。

执行结束之后直接跳转到end节点,error到失败节点,其他东西如果有需要自己添加,无需要保存即可。

这样就完成了workfollow的流程

5.上传调度任务到hdfs

这个路径刚好是之前配置的路径${nameNode}/user/${username/${examplesRoot}/shell

注意:上传的hdfs目录为/user/root,因为hadoop启动的时候使用的是root

用户,如果hadoop启动的是其他用户,那么就上传到/user/其他用户

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

hdfs dfs -put oozie_works//user/root

复制之后一定要验证文件对不对,上传好后如下图:

图片1.png 

6.执行调度任务

通过oozie的命令来执行调度任务

指定服务器地址,指定配置文件位于的路径

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

bin/oozie I job o-oozie http://node-1:11000/oozie -config oozie_works/shell/job.properties -run

复制后进行简单的修改,就可以完成任务的提交

图片2.png

从监控界面可以看到任务执行成功了。

[root@node-1 oozie-4.1.0-cdh5.14.0]# bin/oozie job -oozie http://node-1:11000/oozie -config oozie_works/she11/job

job:0000000-190608181008722-00zie-root-W

[root@node-oozie-4.1.0-cdh5.14.0]#

图片3.png

这里就会显示出来工作流执行,显示状态是成功的,打开端口node-1.8088

图片4.png

这时候就可以发现有个m码程序,这个m码程序就是oozie执行的m码程序。首先强调一下oozie启动的时候首先会启动没有rdtas的m码程序,通过m码程序去执行任务的调度

打开jobhistory进行刷新,会发现刚才提交的任务程序。

图片5.png

点任务编号进去就可以看到里面执行的相关逻辑,点击map,就可以看到他是在那台机器上运行的了,可以看到最终结果文件是在node-1。

图片6.png

Cd到/export/servers/hello_oozie.txt,会发现多了个文件hello_oozie.txt,文件内容去cat一下,整个就是hello_oozie.txt

7.小记:

oozie调度流程

l 根据官方自带的示例编写配置文件

job.properties workflow.xml

l 把任务配置信息连同依赖的资源一起上传到hdfs指定的路径 这个路径在配置中有

l 利用oozie的命令进行提交

相关文章
|
1月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
88 5
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
2月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
49 3
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
存储 Java Shell
shell学习笔记(详细整理)
这篇文章是一份详细的Shell学习笔记,涵盖了Shell的基础知识、脚本编写、变量、运算符、条件判断、流程控制、函数以及常用Shell工具的使用。
66 1
|
4月前
|
分布式计算 监控 Hadoop
详解 Apache ZooKeeper 和 Apache Oozie
【8月更文挑战第31天】
138 0
|
4月前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
391 0
|
6月前
|
弹性计算 应用服务中间件 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天】
592 1
|
5月前
|
分布式计算 Apache Spark
|
11天前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
290 33
The Past, Present and Future of Apache Flink

推荐镜像

更多