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}

  • 运行操作
  1. 上传调用zeppelin脚本

在windos上编写“callZeppelin”脚本,然后通过ftp上传到Linux系统。本人上传到/opt/linkZeppelin目录。上传后需要注意两点:

  1. 需要修改“callZeppelin”脚本权限,命令为“chmod 777 callZeppelin.sh”。
  2. 由于callZeppelin.sh脚本是在Windos上编写的,所以它的默认格式是dos而不是unix。因此需要使用vi/vim进入Linux的shell脚本,输入“:set fileformat=unix”修改shell脚本的默认格式,然后输入“set ff”检验是否修改成功。
  1. 上传shAzkaban任务脚本

在Windos上编写好脚本,现在先测试单个任务的运行。代码如代码 18所示。新建工程,上传job.zip的文件,添加动态参数,如图所示。

                                           azkaban与zeppelin的shell脚本调度任务

                                                                   

参数说明:

  1. userName/password分别对应的是Zeppelin的登录账号和密码。
  2. noteID是Zeppelin新建笔记的ID。
  3. paragraph是笔记中的各个分段的ID,如果设置成all就会运行notebook的全部代码段的代码。

设置定时任务,可以通过Azkaban的Schedule来设置。

 

                                                     azkaban与zeppelin的shell脚本调度任务

                                                                                          创建定时

设置本次定时任务的时间,本次测试设置的时间是两分钟(*/2)。

                                                                azkaban与zeppelin的shell脚本调度任务

                                                                                        设置定时参数

观察Azkaban的History,定时的时间没问题,状态是“Success”,代表运行成功,或者在Zeppelin上观察代码是否定时运行,如图 所示。

                                              azkaban与zeppelin的shell脚本调度任务

                                                                                       任务成功状态