开发者学堂课程【Azkaban 大数据调度系统课程精讲:Azkaban--使用实战--shell、command 调度】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/721/detail/12879
Azkaban--使用实战--shell、command 调度
shell.command 调度:
下面学习 Azkadan 中 shell.command 调度。Azkadan 之所以功能强大,就在于 shell.command 的执行。任何一个软件,只要都可以通过 shell.command 执行启动的话,都可以转化为 Azkadan 执行。
针对 shell.command 调度,Azkadan 支持两种方式执行。
1. 把要执行的命令直接写死在交互文件中
2. 如果执行命令较多且复杂,可以单独写一个 shell 脚本,与 Azkadan 一起调度这个脚本。
接下来演示具体的操作步骤:
1、打开参考资料——Azkadan——job 配置模板
2、创建 job 描述文件
这个文件内容不会太多,第一行通常都是: type=command,第二行写的是命令执行的内容:command=echo ‘hello’,相当于 Java 里的 system out break,直接输出一句话,可以把这个命令行转成一个 shell 脚本。
接下来打开 job 配置模板——command 文件夹,文件夹下有三个文件,分别是:command1.job 、command2.job 、hello.sh。
(1):在 command1.job 文件中,命令 command=echo ‘hello’ 写死在脚本中,执行的命令与 Azkadan 的配置是耦合在一起的,直接写在它的配置中。
(2):在 command2.job 文件中,命令 command=sh hello.sh 调用了一个 shell 脚本,所以具体做的事情就可以放在这个 hello.sh 脚本当中,相当于脚本与 Azkadan 任务配置进行耦合。
(3):在 hello.sh 这个脚本中
#!/bin/bash //是一个 bash 的显示及路径。
date>/root/hello.txt //当前时间 date 定向输出/root/hello.txt
文件里。
3、将 job 资源文件打包成 zip 文件
zip command.job(必须为 zip 格式,不考虑其他格式)
这里选择第二种 command2.job 文件配置和 hello.sh 脚本为例:
选中两个文件右键选择加到压缩档选项,之后选择 zip 格式。这样就完成了本地配置文件的编写。
4、通过 azkaban 的 web 管理平台创建 project 并上传 job 压缩包
打开浏览器 http://node-2:8443/index.在 Azkadan 强调一个 project 对应一个 zip 的项目描述,因此进行任务调度和依赖配置的时候,都要放在一个压缩包。
(1) :首先创建 project
点击 Azkaban 界面的 Create Project,创建这个工程
(2):上传 zip 包
当前这是一个空工程,点击 Upload 进行执行操作,选择之前编辑的压缩包 zip command.job 上传到工程里,这样就完成了 zip 上传。
在这个工程就出现了 command2工作流的一个描述,即 summary。
点击 summary,可以看到 command2 里面的相关信息以及图结构等等。因为现在只上传了 command2 一个模块,所以不能体现出工作流的概念,如果后面配置很多,就可以连成一个线,形成工作流。
5、工作流的执行
那么配置且上传好文件,接下来就是针对工作流的执行。
点击 Schedule/Execute.Flow
这个工程有两种选择:
1、想要立即手动执行获得效果,选择 Execute。
2、想要配置周期性的任务调度,选择 Schedule。
先点击 Execute,之后点击 Continue,立即执行。观察一下效果:是否能正常执行 shell 脚本以及执行的结果是否正确。
执行之后,报出 SUCCEEDED,如果出错,会报出 FAILED,同时出现红色标识的内容。
成功之后,点击 Flow Log,查看工作日志。
这里面的相关信息观察到:
这个工作流是在 Assigned excutor:node-2:12321 上执行的。如果布置的是多个 excutor 的模式,可以看到相关方式。
点击 Job List 里的 Details,查看执行结果的相关信息
验证执行结果:打开 hello.sh ,这个文件的脚本命令是把当前时间 date 定向输出/root/hello.txt 文件里。通过日志已经判断这个工作流是在 Assigned excutor:node-2:12321 上执行的。接下来打开服务器 node-2,发现 root 目录下有 hello.txt,再输入 Pwd、cat hello.txt 进行验证,这样就把时间打印到这个文件里了。
以上是 Execute 的调度方式
总结针对 shell 命令行的调度方法:
1、一种可以把命令写死在程序里,如 command=echo ‘hello’
2、一种把脚本提取出出来,变成一个单独的 shell 脚本,使用 xx.sh 进行调度。
以上就是 shell-command 的调度配置,整体都是通过页面进行操作。