一、Azkaban3X的编译及安装使用(我这里配置的是two servermode模式,exec-server与web-server在不同进程中,在同一台server中)
1.先检查下网络是否畅通:ping www.baidu.com 测试一下,mysql是否已经安装好并启动了,并在mysql中为
azkaban创建一个数据库,就叫azkaban好了。
2.安装git工具 : yum install git (一般系统中都有内置的git)
3.从github上下载Azkaban的源代码:git clone https://github.com/azkaban/azkaban.git
4.下载完成后,当前目录下可以看到azkaban:cd azkaban
5.检查下版本号 : git checkout 版本号
6.补充说明:在进行下一步之前请注意你的jdk是否是1.8及以上的版本,如果不是请更新,3X要求jdk的版本为1.8及以上。
,并且还需要配置jre,分别输入命令java -version,和命令javac 产看java和jre是否符合要求。
7.build:可以选择压缩为tar包:./gradlew distTar
也可以压缩为zip包: ./gradlew distZip
如果以前building过,最好先清理一下: ./gradlew clean,如果一次不成功,可以根据错误提示多试几次。
在编译过程中可能会碰到警告:有些API已过时,不用管它,只要最后显示build success即可。
8.build成功后,分别进入如下三个个目录:
cd /home/hadoop/apps/azkaban/azkaban-exec-server/build/distributions
cd /home/hadoop/apps/azkaban/azkaban-web-server/build/distributions
/home/hadoop/apps/azkaban/azkaban-db/build/distributions
将distributions下的azkaban-exec-server-3.41.0-9-geae1f9d.tar.gz 和,azkaban-web-server-3.41.0-9-geae1f9d.tar.gz,
azkaban-db-3.41.0-9-geae1f9d.tar.gz
分别解压并拷贝到一个单独的文件夹azkabantool下:
mkdir /home/hadoop/apps/azkabantool/
tar -zxvf azkaban-exec-server-3.41.0-9-geae1f9d.tar.gz -C /home/hadoop/apps/azkabantool/
tar -zxvf azkaban-web-server-3.41.0-9-geae1f9d.tar.gz -C /home/hadoop/apps/azkabantool/
tar -zxvf azkaban-db-3.41.0-9-geae1f9d.tar.gz -C /home/hadoop/apps/azkabantool/
9将azkaban sql表结构导入mysql
mysql> use azkaban;
mysql> source /opt/azkaban-sql-3.1.0/create-all-sql-3.1.0.sql
10 配置keystore
azkaban-web-server-3.1.0$ keytool -keystore keystore-alias jetty -genkey -keyalg RSA
输入密钥库口令:
密钥库口令太短 - 至少必须为 6 个字符
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN= firstName, OU= companyName, O= groupName,L=beijing, ST=beijing, C=CN是否正确?[否]: Y
以上配置完成之后会在当前目录生成一个keystore文件。以下配置会用到。
11 配置conf/azkaban.properties:
如果Azkaban WebServer下面没有conf目录,将azkaban-solo-web 下的conf目录拷贝过来,并作以下配置:
cat conf/azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=America/Los_Angeles
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# 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=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
# jetty.use.ssl=false
jetty.port=8081
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=keystore
jetty.trustpassword=azkaban
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=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
注意:
配置的默认时区是:default.timezone.id=America/Los_Angeles 修改为:default.timezone.id=Asia/Shanghai
12 用户设置
进入 azkaban web 服务器 conf 目录,修改 azkaban-users.xml,增加管理员用户:
<azkaban-users><userusername="azkaban"password="azkaban"roles="admin"groups="azkaban" /><userusername="metrics"password="metrics"roles="metrics"/><userusername="admin"password="admin"roles="admin,metrics" /><rolename="admin"permissions="ADMIN" /><rolename="metrics"permissions="METRICS"/></azkaban-users>
13 启动azkabanweb服务器
cd /opt/azkaban-web-server-3.1.0/
bin/azkaban-web-start.sh
报错:Exception:java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread"main"
解决方式:在Azkaban-web-server 的conf目录下创建文件夹conf/log4j.properties:
log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %-5p %c{1}:%L - %m%n
14 访问验证https://centos01:8443/ (如果没有配置hosts也可以写ip)
15Azkaban Executor Server 安装和配置
进入azkaban-executor-server目录,将azkaban-web-server下的conf目录拷贝到
该目录下
1) 配置executor端的azkaban.properties
# Azkaban
default.timezone.id=America/Los_Angeles
# Azkaban JobTypes Plugins
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=azkaban
mysql.password=azkaban
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
16 启动执行服务器:
bin/azkaban-executor-start.sh
17两个问题:
1. Failed to build job executorfor job commandnull Failed to build job type
错误原因:是executor配置的插件目录(azkaban.jobtype.plugin.dir=plugins/jobtypes)不存在,创建这个目录就好了
错误:
2. Cannot request memory (Xms 0kb, Xmx 0 kb) from system for job hello
错误原因:azkaban默认运行的系统内存是3G,如果你的系统内存没有达到就会宝这个错误,并且job提交后一直无法运行,阻塞在那里。
解决办法:在executor的plugins/jobtypes目录下创建文件commonprivate.properties,文件的内容为memCheck.enabled=false,最后重新启动就好了
再补充一句,在执行命令之前,要确定hdfs和yarn是否已经启动。