[关闭]
@zhangyy 2019-02-19T13:24:18.000000Z 字数 7798 阅读 95

如何编译安装Azkaban服务

协作框架


  • 一:Azkaban的介绍
  • 二:编译环境准备
  • 三:测试服务

一: Azkaban的介绍

  1. Azkaban是一套简单的任务调度服务,是Hadoop工作流引擎调度器之一,整体包括三部分Web ServerDB ServerExecutor Server。是LinkedIn的开源项目,开发语言为Java。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

  1. Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
  2. 它有如下功能特点:
  3. Web用户界面
  4. 方便上传工作流
  5. 方便设置任务之间的关系
  6. 调度工作流
  7. 认证/授权(权限的工作)
  8. 能够杀死并重新启动工作流
  9. 模块化和可插拔的插件机制
  10. 项目工作区
  11. 工作流和任务的日志记录和审计

image_1ckohvl401tt1fp1a8u9nmc1r9.png-175.2kB

  1. Azkaban的部署方式有三种:
  2. 1.solo server mode 即独立部署模块,数据库被嵌入H2web服务器和执行服务器运行在同一个进程中,适用于小规模用例。
  3. 2.two server mode 即两个服务器模式,数据库由主从设置的MySQL实例提供支持,Web服务器和执行服务器运行在不同的进程中,以便升级和维护不影响用户,适用于生成环境。
  4. 3.multiple executor mode: 即多个执行器模式,Web服务器和执行器理想情况下运行在不同的主机上,这种多主机设置为Azkaban带来了强大且可扩展性。

二:编译环境准备

2.1: 系统环境

  1. 系统: CentOS7.5x64
  2. jdk: jdk1.8.0_162
  3. CDH版本:CDH5.15
  4. Azkaban: 3.43.0

2.2:编译Azkaban

2.2.1: 下载3.43.0 的包解压配置

  1. wget https://codeload.github.com/azkaban/azkaban/tar.gz/3.43.0
  2. tar -zxvf 3.43.0
  3. cd azkaban-3.43.0/
  4. ./gradlew build

image_1ckokv6d81b7kkju5dphg5kq1m.png-732.2kB


  1. 命令执行完成后,会在各个模块的azkaban*/build/distributions目录下生成编译好的安装包,这里生成了tar.gzzip类型的压缩包

  1. ls */build/distributions/*

image_1ckol3hk31suc1tq113bd7aa1u5k23.png-313.9kB

  1. 将编译成功的azkaban-*.tar.gz压缩包拷贝至/opt/cloudera/azkaban/software目录下

  1. mkdir /opt/cloudera/azkaban/software -p
  2. scp */build/distributions/*.tar.gz /opt/cloudera/azkaban/software
  3. cd /opt/cloudera/azkaban/software
  4. ls -ld *

image_1ckol9t7g17or9op1jk31nrol6e2g.png-364kB


  1. 将/opt/cloudera/azkaban/software目录下的所有压缩包解压到/opt/cloudera/azkaban目录下,并重命名
  2. tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C ../
  3. tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ..
  4. tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../
  5. tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../
  6. tar -zxvf azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz -C ../

  1. 将解压的目录重名
  2. cd ../
  3. mv azkaban-db-0.1.0-SNAPSHOT azkaban-db
  4. mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server
  5. mv azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT azkaban-hadoop-security-plugin
  6. mv azkaban-solo-server-0.1.0-SNAPSHOT azkaban-solo-server
  7. mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server

image_1ckoliqaq66b1airoiq3ca1a2q2t.png-452.9kB

2.2.2: 配置mysql 数据库

  1. 由于Azkaban目前只支持MySQL数据库,需要修改MySQL的/etc/my.cnf文件,增加如下配置:
  2. vim /etc/my.cnf
  3. max_allowed_packet = 20M

image_1ckolp225m5i1o06hb8102h18ij3q.png-262.4kB

  1. 重启mysql数据库
  2. service mariadb restart

image_1ckolrjgk1esp1jemrvt1iu412rl4a.png-131.3kB

  1. create database azkaban default character set utf8;
  2. CREATE USER 'azkaban'@'%' IDENTIFIED BY 'password';
  3. GRANT ALL PRIVILEGES ON azkaban.* TO 'azkaban'@'%';
  4. FLUSH PRIVILEGES;

image_1ckolubc21ci7vhin7mm3c17vq4n.png-352.1kB

  1. 初始化Azkaban表结构,在上一步我们将Azkaban-db部署在/opt/cloudera/azkaban/azkaban-db目录下,在该目录下找到create-all-sql-0.1.0-SNAPSHOT.sql文件
  2. 在命令行执行如下命令导入SQL文件
  3. mysql -uazkaban -p --database=azkaban < /opt/cloudera/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql

image_1ckom2l8hr9m71vuot8l9f3s54.png-102kB

image_1ckom4fbe1pcgt54dd01qmm1g915h.png-284.3kB


2.2.3:配置Azkaban-web-server

  1. 1.将/opt/cloudera/azkaban/azkaban-solo-server目录下的confplugins目录拷贝至/opt/cloudera/azkaban/azkaban-web-server目录下
  2. scp -r azkaban-solo-server/conf/ azkaban-solo-server/plugins/ azkaban-web-server/
  3. cd azkaban-web-server/
  4. ll

image_1ckomb8s4t5d13c41mhelt1r8l6e.png-416kB

  1. 进入azkaban-web-server/conf目录下,修改azkaban.properties文件
  2. 该配置文件主要定义Azkaban-web-server服务的基本信息、数据库信息、监听端口、Executor设置以及插件目录配置等。

  1. cd azkaban-web-server/conf
  2. echo " " > azkaban.properties
  3. vim azkaban.properties
  4. ---
  5. # Azkaban Personalization Settings
  6. azkaban.name=CDH_Azkaban
  7. azkaban.label=My CDH Azkaban
  8. azkaban.color=#FF3601
  9. azkaban.default.servlet.path=/index
  10. web.resource.dir=web/
  11. default.timezone.id=Asia/Shanghai
  12. # Azkaban UserManager class
  13. user.manager.class=azkaban.user.XmlUserManager
  14. user.manager.xml.file=/opt/cloudera/azkaban/azkaban-web-server/conf/azkaban-users.xml
  15. # Loader for projects
  16. executor.global.properties=conf/global.properties
  17. azkaban.project.dir=projects
  18. database.type=mysql
  19. mysql.port=3306
  20. mysql.host=localhost
  21. mysql.database=azkaban
  22. mysql.user=azkaban
  23. mysql.password=password
  24. mysql.numconnections=100
  25. # Velocity dev mode
  26. velocity.dev.mode=false
  27. # Azkaban Jetty server properties.
  28. jetty.use.ssl=false
  29. jetty.maxThreads=25
  30. jetty.port=8081
  31. # Azkaban Executor settings
  32. executor.port=12321
  33. # mail settings
  34. mail.sender=
  35. mail.host=
  36. # User facing web server configurations used to construct the user facing server URLs. They are useful when there
  37. is a reverse proxy between Azkaban web servers and users.
  38. # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
  39. # when this parameters set then these parameters are used to generate email links.
  40. # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
  41. # azkaban.webserver.external_hostname=myazkabanhost.com
  42. # azkaban.webserver.external_ssl_port=443
  43. # azkaban.webserver.external_port=8081
  44. job.failure.email=
  45. job.success.email=
  46. lockdown.create.projects=false
  47. cache.directory=cache
  48. # JMX stats
  49. jetty.connector.stats=true
  50. executor.connector.stats=true
  51. # Azkaban plugin settings
  52. viewer.plugin.dir=plugins/viewer
  53. ---
  1. azkaban-web-server/conf目录下的azkaban-users.xml文件主要定义登录用户账号密码及权限,这里我们使用默认的配置信息

  1. cd azkaban-web-server/conf
  2. vim azkaban-users.xml
  3. <azkaban-users>
  4. <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  5. <user password="metrics" roles="metrics" username="metrics"/>
  6. <role name="admin" permissions="ADMIN"/>
  7. <role name="metrics" permissions="METRICS"/>
  8. </azkaban-users>

image_1ckomnfsqfur11vn1tjpiipaq6r.png-154.7kB


  1. azkaban-web-server/conf目录下新增log4j.properties文件,内容如下:
  2. vim log4j.properties
  3. ---
  4. log4j.rootLogger=INFO,C
  5. log4j.appender.C=org.apache.log4j.ConsoleAppender
  6. log4j.appender.C.Target=System.err
  7. log4j.appender.C.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  9. ---

image_1ckomvt911q69lt9859lls1de38b.png-148.1kB

  1. azkaban-web-server目录下执行如下命令创建目录
  2. 创建第三方依赖包部署目录extlib
  3. mkdir -p /opt/cloudera/azkaban/azkaban-web-server/extlib
  4. 创建服务日志存放目录logs
  5. mkdir /opt/cloudera/azkaban/azkaban-web-server/logs

image_1ckon2fnf1jbj45g1115c7bqqlao.png-259.1kB

  1. 创建azkaban-web-server服务的第三方插件视图目录与azkaban.properties配置文件中的viewer.plugin.dir配置路径一致
  2. mkdir /opt/cloudera/azkaban/azkaban-web-server/plugins/viewer

image_1ckon4a4lieo1q2deej481192mb5.png-72.6kB

2.2.4: 配置Azkaban-executor-server

  1. 将/opt/cloudera/azkaban/azkaban-solo-server目录下的confplugins目录拷贝至/opt/cloudera/azkaban/azkaban-exec-server目录下
  2. cd /opt/cloudera/azkaban
  3. cd azkaban-solo-server/
  4. scp -r conf/ plugins/ /opt/cloudera/azkaban/azkaban-exec-server/

image_1ckp2tjoe8fl167c139c8b81sc69.png-473.1kB

  1. azkaban-exec-server/conf目录下修改azkaban.properties文件,内容如下:
  2. 该配置文件主要定义Azkaban-exec-server服务的基本信息、数据库信息、监听端口及插件目录配置等。
  3. cd azkaban-exec-server/conf
  4. echo " " > azkaban.properties
  5. vim azkaban.properties
  6. ----
  7. # Azkaban Personalization Settings
  8. default.timezone.id=Asia/Shanghai
  9. # Loader for projects
  10. executor.global.properties=conf/global.properties
  11. azkaban.project.dir=projects
  12. database.type=mysql
  13. mysql.port=3306
  14. mysql.host=localhost
  15. mysql.database=azkaban
  16. mysql.user=azkaban
  17. mysql.password=password
  18. mysql.numconnections=100
  19. # Azkaban Executor settings
  20. executor.maxThreads=50
  21. executor.port=12321
  22. executor.flow.threads=30
  23. # JMX stats
  24. jetty.connector.stats=true
  25. executor.connector.stats=true
  26. # Azkaban plugin settings
  27. azkaban.jobtype.plugin.dir=plugins/jobtypes
  28. ---

image_1ckp334jd10v45n8qvp10aabfem.png-430.9kB


  1. conf目录下新增log4j.properties配置文件内容如下
  2. vim log4j.properties
  3. ----
  4. log4j.rootLogger=INFO,C
  5. log4j.appender.C=org.apache.log4j.ConsoleAppender
  6. log4j.appender.C.Target=System.err
  7. log4j.appender.C.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  9. ----

1.png-250.3kB

  1. azkaban-exec-server目录下执行如下命令创建目录
  2. 创建第三方依赖包部署目录extlib
  3. mkdir /opt/cloudera/azkaban/azkaban-exec-server/extlib
  4. 创建服务日志存放目录logs
  5. mkdir /opt/cloudera/azkaban/azkaban-exec-server/logs

1.png-266.3kB


  1. 创建azkaban-exec-server服务的第三方插件目录与azkaban.properties配置文件中的azkaban.jobtype.plugin.dir配置路径一致
  2. cd /opt/cloudera/azkaban/azkaban-exec-server/plugins
  3. mkdir -p jobtype

4.png-162.5kB


2.2.5 启停Azkaban的Executor和Web服务

  1. 这里在启停服务的时候需要注意,如果直接进入到相应服务的bin目录下启动会导致服务启动时找不到相应的配置文件,所以我们需要在相应服务的HOME目录执行命令启停服务。

  1. 启停Azkaban-executor服务执行如下命令
  2. cd /opt/cloudera/azkaban/azkaban-exec-server/
  3. bin/azkaban-executor-shutdown.sh #停止azkaban-executor服务
  4. bin/start-exec.sh #启动azkaban-executor服务并输出日志到logs目录
  5. bin/azkaban-executor-start.sh

image_1ckp4tai917vj1bkehrjlbgqe76v.png-1014.2kB

image_1ckp4ufshdri9121oes1176f7n89.png-951.8kB

  1. 出现:
  2. log:67 - Started SocketConnector@0.0.0.0:12321 表示启动成功

2.2.6:启停Azkaban-web服务执行如下命令

  1. cd /opt/cloudera/azkaban/azkaban-web-server/
  2. bin/azkaban-web-shutdown.sh #停止Azkaban-web服务
  3. bin/start-web.sh #启动Azkaban-web服务并输出日志到./logs目录

image_1ckp5nebruo5166b14bv1bo81kv48m.png-624.5kB

  1. log:67 - Started SocketConnector@0.0.0.0:8081
  2. 看到 8081 表示启动成功

三:测试服务

3.1:azkaban 页面登录

  1. 在浏览器输入http://${hostname}:8081访问web界面,输入用户名和密码,在Azkaban-web-server/conf目录的azkaban-users.xml配置文件中,默认为azkaban/azkaban
  1. http://172.17.100.11:8081
  2. 用户名: azkaban 密码: azkaban

2.png-89.7kB

3.png-109kB

3.2 azkaban 的job测试

  1. 创建一个test-azkaban工程

4.png-187.9kB

  1. 在本地创建foo.job文件,内容如下:
  2. # foo.job
  3. type=command
  4. command=echo foo
  5. 在本地创建bar.job文件,内容如下:
  6. # bar.job
  7. type=command
  8. dependencies=foo
  9. command=echo bar

  1. bar.job作业依赖foo.job作业,将两个文件压缩为zip

image_1ckr9234k11eiovv76h18qhmlr2c.png-175.2kB

image_1ckr92ostd81fmssb91r0do9n2p.png-148.4kB

image_1ckr942ov1hjos8q1qu514hhtva36.png-274.3kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注