azkaban安装部署

Azkaban

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

yum -y install git

编译源码

此处修改gradle-wrapper.properties中distributionUrl为本地gradle

 ./gradlew distTar

编译中遇见的问题:

1、编译警告影响编译失败
warning: [EqualsHashCode] Classes that override equals should also override hashCode.
public boolean equals(Object obj)
^
(see http://errorprone.info/bugpattern/EqualsHashCode)

解决方法编辑build.gradle添加如下内容:

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.

解决方法:

sudo yum install gcc

3、编译错误:
Could not find Linker 'g++' in system path

解决方法:

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
执行后会提示填写一些信息

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、覆盖系统时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改azkaban web服务器配置文件
1、进入到配置文件所在目录conf中
2、编辑azkaban.properties

# 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

# 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

<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>

主要是添加下面一行

<user username="admin" password="admin" roles="admin,metrics" />

导入azkaban表结构到mysql中
1、创建数据库azkaban

create database azkaban;

2、导入表结构

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目录所在那层执行,原因是有些配置文件写的是相对路径),执行如下命令

nohup ./bin/azkaban-web-start.sh &

2、启动executor,进入executor,不要进入bin目录(原因和上面一样),执行如下命令

nohup ./bin/azkaban-executor-start.sh

浏览器访问web服务器:https://服务器IP地址:8443,需要输入的用户名和密码就是在azkaban-users.xml添加的那个用户名和密码

 

azkaban3.0.0: http://pan.baidu.com/s/1c19b5gk

posted @ 2017-03-17 10:26  天之涯0204  阅读(1849)  评论(0编辑  收藏  举报