开发者学堂课程【Oozie 知识精讲与实战演练:Apache Oozie-- 实战操作--集成 hue- 定时调度配置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/716/detail/12795
Apache Oozie-- 实战操作--集成 hue- 定时调度配置
内容介绍:
一、利用 Hue 配置定时调度任务的具体操作
二、如何查看配置调度任务的正确性
三、查找任务配置执行的地方
四、利用 Hue 配置定时调度任务的好处
五、Workflow,Schedule,Bundle 之间的关系
一、利用 Hue 配置定时调度任务的具体操作
在 oozie中,普通的 Workflow 并不能满足于周期的定期执行,因此需要一个协调执行者叫做 coordinator。在 Hue 当中与 oozie 整合之后也同样可以配置定时调度任务,操作如下:
1、打开浏览器,点击 Query 下面的 Scheduler ,不再选择 Workflow。原因: Workflow 是一个普通的工作流需要手动提交。
2、选择 Scheduler,打开之后为 Scheduler 的相关编辑页面,首先可以为调度任务命名,单击 My Schedule, 例如选择叫做 hue Schedule,此任务便是通过 hue 来调度的。下边的描述根据自己的需求而定,可写可不写。
3、选择需要调度的工作流,点击选择按钮后显示出当下 Hue,Oozie 中已经保存好的工作流。
4、要想对一个工作流进行调度,必须先将工作流编辑好。以 hue shell 为例,开启一个定时调度任务,定制周期 How often(多久一次)的操作如下 ,点击 How often 下面的选项 Options,点击进去里边有非常重要的 Timezone 时区,当下无论是 Hue 还是 Oozie 的配置中都要选择 Asia/Shangha i东八区,时区一定要正确,涉及到时间定时执行,差几个时区是非常严重的。选择好之后会有两个时间——开始时间和结束时间。开始时间一定要未来时间,不能选择过去时间,比如选择开始时间为14:46,选择好之后下边有结束时间。设置好之后可以选择多长时间进行一次,可以是每一天每一周等,时间可以随便选择,例如可以让任务每小时执行一次,如果选择1那么就是在0,1执行,如果都不选择那么就是all,即每分钟执行一次。这个时候进行相关的选择会非常方便,鼠标点点就可以完成,不需要写相关的表达式。这样就是从下午的2:46开始,每分钟执行一次。如果有参数可以选择参数,修改好时区、开始时间、结束时间以及参数后点击 save 保存,保存之后便可将设好的工作流点击 Submit 提交。
5、提交的时间可以做一个相关的验证,点击 Schedules 可以看到配置的调度任务 hue Schedule,此任务现在的状态为 Running (跑)。当满足时间,任务执行时,点击 jobs ,然后点击刷新,便可以查看任务在 Running 的执行效果。打开 Schedules 里面有相关的信息,包括 Tasks(任务)、Logs(日志)、Properties(配置参数)、XML(文件属性)。其中 Tasks 很重要里面例举出了接下来任务执行需要进行的时间段。
二、如何查看配置调度任务的正确性
1、处于 waiting 状态说明没有执行,没有满足时间。到达时间后,状态立即变成running,即到了时间触发。出现 succeeded,则证明任务成功。
2、如果任务执行错误,点击任务进去之后查看具体的相关执行日志Logs,Properties,XML 查找问题。
三、这样就完成了相关的配置,就会满足通过 hue 和 oozie 整合去提交定时调度任务。
三、验证任务配置执行的结果
来到 node-1服务器上查看并没有输出日志,在这时有一个小技巧来查看执行的程序在哪里,首先在历史日志服务器中输入 node-1:19888 显示出执行完的相关日志的排码情况。随便点进去一个,点击 Map 便可出来相关的日志,运行在 node-3 这台机器上,来到 node-3 服务器上克隆一个新的会画,可以看出多了一个 hellohue.txt,在这里就是相关的时间,就完成了一个相关的执行。这便是所学的利用 hue 和 oozie 整合之后去配置定时调度任务。
四、利用 Hue 配置定时调度任务的好处
极大方便了使用者去编写各种定时频率的时间的表达式。
五、Workflow,Schedule,Bundle 之间的关系
除了可以用 Workflow 调度之外还可以创建 Bundle,即一个批示可以创建多个调度。当点击 Bundle 之后,选择 coordinator,看到这里可以看出 Workflow,Schedule,Bundle 之间的关系。关系如下:
1、workflow 普通的工作流
2、schedule 针对 workflow 做一个定时
3、Bundle 为 schedule 做一个批处理。
例如有两个定时调度任务,一个是1:00执行的,一个是在1:20执行的,需要在一个批示进行处理,那么创立一个 Bundle 绑定两个 schedule 便可以搞定。这样利用 hue 和 oozie 整合之后进行任务调度将会极大的方便,在企业中也很少手动的去编写 oozie 的配置文件,通过 hue 会极大地方便开发。