image.png

flow-job成员

flow:工作流,即工作流程
job:每个工作

web server(一台、进程) 对接客户端,调度任务
executorserver(多台、进程) 负责工作流的计算与执行

指令

说明:安装完成之后,每次启动executor-server时,必须在 executor-server家目录启动,因为在配置文件中有大量的相对路径,只有在家目录启动,才能正确匹配相对路径!

executor启动、激活

每台机器上:

  1. bin/start-exec.sh

executor停止

每台机器上:

  1. bin/shutdown-exec.sh

web 启动

安装了web server的服务器上:

  1. bin/start-web.sh

web 关闭

  1. bin/start-web.sh

启动脚本az.sh

参数:start、stop

  1. #!/bin/bash
  2. #azkaban的一键启动脚本,只接收单个start或stop参数
  3. if(($#!=1))
  4. then
  5. echo 请输入单个startstop参数!
  6. exit
  7. fi
  8. #对传入的单个参数进行校验,且执行相应的启动和停止命令
  9. if [ $1 = start ]
  10. then
  11. #启动executor
  12. xcall "cd /opt/module/azkaban/azkaban-exec ; bin/start-exec.sh "
  13. sleep 5s
  14. #激活executor
  15. for i in hadoop102 hadoop103 hadoop104
  16. do
  17. curl -G $i:12321/executor?action=activate && echo
  18. done
  19. #启动web-server
  20. cd /opt/module/azkaban/azkaban-web
  21. bin/start-web.sh
  22. elif [ $1 = stop ]
  23. then
  24. cd /opt/module/azkaban/azkaban-web
  25. bin/shutdown-web.sh
  26. xcall /opt/module/azkaban/azkaban-exec/bin/shutdown-exec.sh
  27. else
  28. echo 请输入单个startstop参数!
  29. fi
  30. xcall jps

xcall

  1. #!/bin/bash
  2. #校验是否传入了命令
  3. if(($#==0))
  4. then
  5. echo 请输入要执行的命令!
  6. exit;
  7. fi
  8. echo "要执行的命令是:$@"
  9. #使用ssh登录到目标机器执行命令
  10. for((i=102;i<=104;i++))
  11. do
  12. echo "--------------------hadoop$i--------------------"
  13. ssh hadoop$i $@
  14. done

流程说明

浏览器可访问webserver(进程),上传数据,通过web server将数据存储在mysql,
之后web server让executor server对mysql中的数据进行查询并计算。
后续executor server执行的一些信息(进度、状态)也会被存储在mysql
浏览器通过webserver可以查询executor server计算后的数据
可构建多个executor server集群,web server会将数据分配给某个executor server去执行
之后用户通过浏览器再通过web server去查询数据库中的信息

注意事项

2.0 azkaban支持 properties配置文件,也支持yml配置文件!
3.0 azkaban默认支持yml配置文件!


安装完成之后,每次启动executor-server时,必须在 executor-server家目录启动,因为在配置文件中有大量的相对路径,只有在家目录启动,才能正确匹配相对路径!


az.sh 放在webserver安装的机器上!


Job的参数可以直接在web界面修改!
Flow的配置,只能在配置文件中修改!无法在web界面修改!


azkaban调度脚本时:
①执行权限
②executor Server找到脚本
配置到PATH ,直接调用脚本

绝对路径
③如果脚步在特定的机器,需要指定特定机器的executor,使用 useExecutor=executorID
④在执行脚本时,如果希望传入参数,可以在命令后,使用${参数名},设置占位符,如果设置了占位符,必须需要传入参数,如果无需传参,只能使用传入空参数的方式。


制作脚本时:
①如果使用了SFTP工具,注意字符集,选择UTF-8无BOM
②将sql中 ` 全部删除
③将 str_to_map, split等函数中,分隔符为 \ \ 的,转换为 \ \ \


配置说明

executor 查看激活状态

image.png


executor选择机制配置

/opt/module/azkaban/**azkaban-web**/conf/azkaban.properties
image.png
azkaban.executorselector.filters: 当有多个Executor同时启动的时候,需要从中选择一个Executor去执行任务,这里设置一组过滤器的种类,不满足要求的Executor就不会被分配任务

StaticRemainingFlowSize:正在排队的任务数,工作流越多,就越不可能被选上;
#CpuStatus:CPU占用情况,cpu占用月多越不可能被选上
#MinimumFreeMemory:最小剩余内存。测试环境,必须将MinimumFreeMemory删除掉,否则它会认为集群资源不够,不执行,**配置了的话,默认最小剩余内存为8个G,我们每个虚拟机内存为4G,不够**。