azkaban与zeppelin的shell脚本调度任务
- Shell脚本
编写Shell脚本实现Azkaban利用用户名、密码、noteID等来调用Zeppelin的代码。
#!/bin/bash #设置参数默认值 zeppelin_server_addr=192.168.128.200 port=8089
# 登录到zeppelin服务器,并且保存本次会话的cookie信息 curl -X POST --data "userName=$1&password=$2" "http://${zeppelin_server_addr}:${port}/api/login" -c cookie.txt
#判断是执行noteId的全部代码还是只执行一段paragraph if [ $4 = 'all' ]; then # 运行执行noteId里面特定的paragraph curl -X POST "http://${zeppelin_server_addr}:${port}/api/notebook/job/$3" -b cookie.txt else curl -X POST "http://${zeppelin_server_addr}:${port}/api/notebook/job/$3/$4" -b cookie.txt fi
# 退出登录 curl -X POST http://${zeppelin_server_addr}:${port}/api/login/logout -c cookie.txt |
Azkaban的调用zip文件。
type=command command=sh /opt/linkZeppelin/Zeppelin_4.sh ${userName} ${password} ${noteID} ${paragraph} |
- 运行操作
- 上传调用zeppelin脚本
在windos上编写“callZeppelin”脚本,然后通过ftp上传到Linux系统。本人上传到/opt/linkZeppelin目录。上传后需要注意两点:
- 需要修改“callZeppelin”脚本权限,命令为“chmod 777 callZeppelin.sh”。
- 由于callZeppelin.sh脚本是在Windos上编写的,所以它的默认格式是dos而不是unix。因此需要使用vi/vim进入Linux的shell脚本,输入“:set fileformat=unix”修改shell脚本的默认格式,然后输入“set ff”检验是否修改成功。
- 上传shAzkaban任务脚本
在Windos上编写好脚本,现在先测试单个任务的运行。代码如代码 18所示。新建工程,上传job.zip的文件,添加动态参数,如图所示。
参数说明:
- userName/password分别对应的是Zeppelin的登录账号和密码。
- noteID是Zeppelin新建笔记的ID。
- paragraph是笔记中的各个分段的ID,如果设置成all就会运行notebook的全部代码段的代码。
设置定时任务,可以通过Azkaban的Schedule来设置。
创建定时
设置本次定时任务的时间,本次测试设置的时间是两分钟(*/2)。
设置定时参数
观察Azkaban的History,定时的时间没问题,状态是“Success”,代表运行成功,或者在Zeppelin上观察代码是否定时运行,如图 所示。
任务成功状态