原文地址:https://www.cnblogs.com/heml/p/6552818.html#_label2?tdsourcetag=s_pctim_aiomsg
目录
回到顶部

MySQL
Azkaban使用mysql存储很多状态,AzkabanWebServer和AzkabanExecutorServer都会使用mysql数据库
AzkabanWebServer使用mysql主要有一下用途:
1、Project Management - 管理项目和项目上传文件
2、Executing Flow State - 跟踪执行流程和运行他们的Executor
3、Previous Flow/Jobs:搜索之前的job执行以及访问他们的日志
4、Scheduler - 保存调度任务的状态
5、SLA(服务等级协议) - 保存sla规则
AzkabanExecutorServer使用mysql主要有一下用途:
1、Access the project - 从数据库中查找项目文件
2、Executing Flows/Jobs - 查找和更新正在执行的流的数据
3、Logs - 记录job和flow输出的日志
4、dependency(交流) - 如果一个flow运行在不同的executor,那么他会把状态存储在数据库中
AzkabanWebServer是azkaban中最主要的管理者,他主要处理项目管理、认证、调度、监控执行器,它提供了一个web UI界面
回到顶部
下载源码
1、如果是下面那么下载,则下载的需要jdk1.8或者更高,此处不使用这种下载方式
git clone https://github.com/azkaban/azkaban.git
2、下载指定版本的azkaban
git clone --branch 3.0.0 https://github.com/azkaban/azkaban.git
下载完成后会有如下警告:
warning: Remote branch 3.0.0 not found in upstream origin, using HEAD instead
解决方法:
进入到下载目录,执行:git checkout 3.0.0
安装gradle,配置好环境变量
gradle 编译防止网络下载gradle包
第一种方式使用gradlew编译:修改下图中红色的部分为本地已经下载好的gradle安装包路径

第二种方式使用gradle编译:配置好gradle环境变量即可,使用gradle命令编译
安装git
编译源码
此处修改gradle-wrapper.properties中distributionUrl为本地gradle
编译中遇见的问题:
1、编译警告影响编译失败
warning: [EqualsHashCode] Classes that override equals should also override hashCode.
public boolean equals(Object obj)
^
(see http://errorprone.info/bugpattern/EqualsHashCode)
解决方法编辑build.gradle添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 | allprojects { repositories { mavenCentral() mavenLocal() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } } |
2、编译错误:
What went wrong:
Execution failed for task ':azkaban-common:compileMainExecutableMainC'.
> Could not find C compiler 'gcc' in system path.
解决方法:
3、编译错误:
Could not find Linker 'g++' in system path
解决方法:
1 2 | sudo yum install g++ sudo yum install -y gcc -c++* |
回到顶部
编译成功后,拷贝azkaban-sql-3.0.0.tar.gz、azkaban-exec-server-3.0.0.tar.gz、azkaban-web-server-3.0.0.tar.gz到/home/hadoop/apps/azkaban目录下
azkaban web服务器安装
1、解压 tar -zxvf azkaban-web-server-3.0.0.tar.gz
2、重命名 mv azkaban-web-server-3.0.0 server
azkaban executor服务器安装
1、解压 tar -zxvf azkaban-exec-server-3.0.0.tar.gz
2、重命名 mv azkaban-exec-server-3.0.0 executor
创建SSL配置
命令:keytool -keystore keystore -alias jetty -genkey -keyalg RSA
执行后会提示填写一些信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | keytool -keystore keystore - alias jetty -genkey -keyalg RSA Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: CN Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct? [no]: y Enter key password for <jetty> (RETURN if same as keystore password): |
执行成功后会在当前目录生成keystore证书文件
此时,只需要拷贝证书文件到azkaban web服务器的根目录下即可
修改配置文件
配置时区
1、使用tzselect 生成时区
2、覆盖系统时区
1 | cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
修改azkaban web服务器配置文件
1、进入到配置文件所在目录conf中
2、编辑azkaban.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | # Azkaban Personalization Settings #服务器UI名称,用于服务器上方显示的名字 azkaban.name=Test #描述 azkaban.label=My Local Azkaban #UI颜色 azkaban.color= #FF3601 azkaban.default.servlet.path= /index #默认根web目录 web.resource. dir =web/ #默认时区,已改为亚洲/上海 默认为美国 default.timezone. id =Asia /Shanghai # Azkaban UserManager class #用户权限管理默认类 user.manager.class=azkaban.user.XmlUserManager #用户配置文件所在的目录 user.manager.xml. file =conf /azkaban-users .xml # Loader for projects # global配置文件所在位置 executor.global.properties=conf /global .properties azkaban.project. dir =projects #数据库类型,目前只支持mysql database. type =mysql #端口号 mysql.port=3306 #数据库连接IP mysql.host=localhost #数据库实例名 mysql.database=azkaban #数据库用户名 mysql.user=root #数据库密码 mysql.password=root #最大连接数 mysql.numconnections=100 # Velocity dev mode velocity.dev.mode= false # Azkaban Jetty server properties. #最大线程数 jetty.maxThreads=25 #Jetty SSL端口 jetty.ssl.port=8443 #Jetty端口 jetty.port=8081 #SSL文件名 jetty.keystore=keystore #SSL文件密码 jetty.password=123456 #Jetty主密码 与 keystore文件相同 jetty.keypassword=123456 #SSL文件名 jetty.truststore=keystore # SSL文件密码 jetty.trustpassword=123456 jetty.excludeCipherSuites=SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA # Azkaban Executor settings #执行服务器端口 executor.port=12321 # mail settings 邮件设置 #发送邮箱 mail.sender=xxx@qq.com #发送邮箱smtp地址 mail.host=smtp.qq.com #发送邮件时显示的名称 mail.user=xxx9@qq.com #发送邮件时的密码 mail.password=************* #任务失败时发送邮件的地址 job.failure.email=xxx@qq.com #任务成功时发送邮件的地址 job.success.email=xxx@qq.com lockdown.create.projects= false #缓存目录 cache.directory=cache # JMX stats jetty.connector.stats= true executor.connector.stats= true |
修改azkaban executor器配置文件
1、进入到配置文件所在目录conf中
2、编辑azkaban.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # Azkaban #时区 default.timezone. id =Asia /Shanghai # Azkaban JobTypes Plugins #jobtype 插件所在位置 azkaban.jobtype.plugin. dir =plugins /jobtypes # Loader for projects executor.global.properties=conf /global .properties azkaban.project. dir =projects #数据库相关配置 database. type =mysql mysql.port=3306 mysql.host=localhost mysql.database=azkaban mysql.user=root mysql.password=root mysql.numconnections=100 # Azkaban Executor settings # 执行服务器配置 executor.maxThreads=50 executor.port=12321 executor.flow.threads=30 # JMX stats jetty.connector.stats= true executor.connector.stats= true # uncomment to enable inmemory stats for azkaban #executor.metric.reports=true #executor.metric.milisecinterval.default=60000 |
用户配置
进入azkaban web服务器conf目录,修改azkaban-users.xml
1 2 3 4 5 6 7 | <azkaban- users > <user username= "azkaban" password= "azkaban" roles= "admin" groups = "azkaban" /> <user username= "metrics" password= "metrics" roles= "metrics" /> <user username= "admin" password= "admin" roles= "admin,metrics" /> <role name= "admin" permissions= "ADMIN" /> <role name= "metrics" permissions= "METRICS" /> < /azkaban-users > |
主要是添加下面一行
1 | <user username= "admin" password= "admin" roles= "admin,metrics" /> |
导入azkaban表结构到mysql中
1、创建数据库azkaban
1 | create database azkaban; |
2、导入表结构
1 | source /home/hadoop/apps/azkaban/azkaban-sql-3 .0.0 /create-all-sql-3 .0.0.sql; |
3、执行针对3.0.0升级的sql
update.execution_flows.3.0.sql
update.active_executing_flows.3.0.sql
启动
1、启动web服务器,进入web服务器(不要进入bin目录,直接在bin目录所在那层执行,原因是有些配置文件写的是相对路径),执行如下命令
1 | nohup . /bin/azkaban-web-start .sh & |
2、启动executor,进入executor,不要进入bin目录(原因和上面一样),执行如下命令
1 | nohup . /bin/azkaban-executor-start .sh |
浏览器访问web服务器:https://服务器IP地址:8443,需要输入的用户名和密码就是在azkaban-users.xml添加的那个用户名和密码
azkaban3.0.0: http://pan.baidu.com/s/1c19b5gk
博客园:http://www.cnblogs.com/heml
个人博客:http://www.hemingliang.site