@zhangyy
2019-02-19T05:24:18.000000Z
字数 7798
阅读 255
协作框架
- 一:Azkaban的介绍
- 二:编译环境准备
- 三:测试服务
Azkaban是一套简单的任务调度服务,是Hadoop工作流引擎调度器之一,整体包括三部分Web Server、DB Server、Executor Server。是LinkedIn的开源项目,开发语言为Java。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。它有如下功能特点:Web用户界面方便上传工作流方便设置任务之间的关系调度工作流认证/授权(权限的工作)能够杀死并重新启动工作流模块化和可插拔的插件机制项目工作区工作流和任务的日志记录和审计

Azkaban的部署方式有三种:1.solo server mode: 即独立部署模块,数据库被嵌入H2,web服务器和执行服务器运行在同一个进程中,适用于小规模用例。2.two server mode: 即两个服务器模式,数据库由主从设置的MySQL实例提供支持,Web服务器和执行服务器运行在不同的进程中,以便升级和维护不影响用户,适用于生成环境。3.multiple executor mode: 即多个执行器模式,Web服务器和执行器理想情况下运行在不同的主机上,这种多主机设置为Azkaban带来了强大且可扩展性。
系统: CentOS7.5x64jdk: jdk1.8.0_162CDH版本:CDH5.15Azkaban: 3.43.0
wget https://codeload.github.com/azkaban/azkaban/tar.gz/3.43.0tar -zxvf 3.43.0cd azkaban-3.43.0/./gradlew build

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

将编译成功的azkaban-*.tar.gz压缩包拷贝至/opt/cloudera/azkaban/software目录下
mkdir /opt/cloudera/azkaban/software -pscp */build/distributions/*.tar.gz /opt/cloudera/azkaban/softwarecd /opt/cloudera/azkaban/softwarels -ld *

将/opt/cloudera/azkaban/software目录下的所有压缩包解压到/opt/cloudera/azkaban目录下,并重命名tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C ../tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ..tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../tar -zxvf azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz -C ../
将解压的目录重名cd ../mv azkaban-db-0.1.0-SNAPSHOT azkaban-dbmv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-servermv azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT azkaban-hadoop-security-pluginmv azkaban-solo-server-0.1.0-SNAPSHOT azkaban-solo-servermv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server

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

重启mysql数据库service mariadb restart

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

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


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

进入azkaban-web-server/conf目录下,修改azkaban.properties文件该配置文件主要定义Azkaban-web-server服务的基本信息、数据库信息、监听端口、Executor设置以及插件目录配置等。
cd azkaban-web-server/confecho " " > azkaban.propertiesvim azkaban.properties---# Azkaban Personalization Settingsazkaban.name=CDH_Azkabanazkaban.label=My CDH Azkabanazkaban.color=#FF3601azkaban.default.servlet.path=/indexweb.resource.dir=web/default.timezone.id=Asia/Shanghai# Azkaban UserManager classuser.manager.class=azkaban.user.XmlUserManageruser.manager.xml.file=/opt/cloudera/azkaban/azkaban-web-server/conf/azkaban-users.xml# Loader for projectsexecutor.global.properties=conf/global.propertiesazkaban.project.dir=projectsdatabase.type=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkabanmysql.user=azkabanmysql.password=passwordmysql.numconnections=100# Velocity dev modevelocity.dev.mode=false# Azkaban Jetty server properties.jetty.use.ssl=falsejetty.maxThreads=25jetty.port=8081# Azkaban Executor settingsexecutor.port=12321# mail settingsmail.sender=mail.host=# User facing web server configurations used to construct the user facing server URLs. They are useful when thereis a reverse proxy between Azkaban web servers and users.# enduser -> myazkabanhost:443 -> proxy -> localhost:8081# when this parameters set then these parameters are used to generate email links.# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.# azkaban.webserver.external_hostname=myazkabanhost.com# azkaban.webserver.external_ssl_port=443# azkaban.webserver.external_port=8081job.failure.email=job.success.email=lockdown.create.projects=falsecache.directory=cache# JMX statsjetty.connector.stats=trueexecutor.connector.stats=true# Azkaban plugin settingsviewer.plugin.dir=plugins/viewer---
azkaban-web-server/conf目录下的azkaban-users.xml文件主要定义登录用户账号密码及权限,这里我们使用默认的配置信息
cd azkaban-web-server/confvim azkaban-users.xml<azkaban-users><user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/><user password="metrics" roles="metrics" username="metrics"/><role name="admin" permissions="ADMIN"/><role name="metrics" permissions="METRICS"/></azkaban-users>

在azkaban-web-server/conf目录下新增log4j.properties文件,内容如下:vim log4j.properties---log4j.rootLogger=INFO,Clog4j.appender.C=org.apache.log4j.ConsoleAppenderlog4j.appender.C.Target=System.errlog4j.appender.C.layout=org.apache.log4j.PatternLayoutlog4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n---

在azkaban-web-server目录下执行如下命令创建目录创建第三方依赖包部署目录extlibmkdir -p /opt/cloudera/azkaban/azkaban-web-server/extlib创建服务日志存放目录logsmkdir /opt/cloudera/azkaban/azkaban-web-server/logs

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

将/opt/cloudera/azkaban/azkaban-solo-server目录下的conf、plugins目录拷贝至/opt/cloudera/azkaban/azkaban-exec-server目录下cd /opt/cloudera/azkabancd azkaban-solo-server/scp -r conf/ plugins/ /opt/cloudera/azkaban/azkaban-exec-server/

在azkaban-exec-server/conf目录下修改azkaban.properties文件,内容如下:该配置文件主要定义Azkaban-exec-server服务的基本信息、数据库信息、监听端口及插件目录配置等。cd azkaban-exec-server/confecho " " > azkaban.propertiesvim azkaban.properties----# Azkaban Personalization Settingsdefault.timezone.id=Asia/Shanghai# Loader for projectsexecutor.global.properties=conf/global.propertiesazkaban.project.dir=projectsdatabase.type=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkabanmysql.user=azkabanmysql.password=passwordmysql.numconnections=100# Azkaban Executor settingsexecutor.maxThreads=50executor.port=12321executor.flow.threads=30# JMX statsjetty.connector.stats=trueexecutor.connector.stats=true# Azkaban plugin settingsazkaban.jobtype.plugin.dir=plugins/jobtypes---

在conf目录下新增log4j.properties配置文件内容如下vim log4j.properties----log4j.rootLogger=INFO,Clog4j.appender.C=org.apache.log4j.ConsoleAppenderlog4j.appender.C.Target=System.errlog4j.appender.C.layout=org.apache.log4j.PatternLayoutlog4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n----

在azkaban-exec-server目录下执行如下命令创建目录创建第三方依赖包部署目录extlibmkdir /opt/cloudera/azkaban/azkaban-exec-server/extlib创建服务日志存放目录logsmkdir /opt/cloudera/azkaban/azkaban-exec-server/logs

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

这里在启停服务的时候需要注意,如果直接进入到相应服务的bin目录下启动会导致服务启动时找不到相应的配置文件,所以我们需要在相应服务的HOME目录执行命令启停服务。
启停Azkaban-executor服务执行如下命令cd /opt/cloudera/azkaban/azkaban-exec-server/bin/azkaban-executor-shutdown.sh #停止azkaban-executor服务bin/start-exec.sh #启动azkaban-executor服务并输出日志到logs目录bin/azkaban-executor-start.sh


出现:log:67 - Started SocketConnector@0.0.0.0:12321 表示启动成功
cd /opt/cloudera/azkaban/azkaban-web-server/bin/azkaban-web-shutdown.sh #停止Azkaban-web服务bin/start-web.sh #启动Azkaban-web服务并输出日志到./logs目录

log:67 - Started SocketConnector@0.0.0.0:8081看到 8081 表示启动成功
在浏览器输入http://${hostname}:8081访问web界面,输入用户名和密码,在Azkaban-web-server/conf目录的azkaban-users.xml配置文件中,默认为azkaban/azkaban
http://172.17.100.11:8081用户名: azkaban 密码: azkaban


创建一个test-azkaban工程

在本地创建foo.job文件,内容如下:# foo.jobtype=commandcommand=echo foo在本地创建bar.job文件,内容如下:# bar.jobtype=commanddependencies=foocommand=echo bar
bar.job作业依赖foo.job作业,将两个文件压缩为zip包


