Azkaban3.X的安装(2018年8月19日最新版本)
参考文章:
- 1.http://azkaban.github.io/azkaban/docs/latest/
- 2.http://blog.csdn.net/gaoqida/article/details/72288900
- 3.http://blog.csdn.net/huohuotu/article/details/77487007
- 4.https://zhuanlan.zhihu.com/p/22224805
Step0:
在各个节点建立azkaban用户并配置ssh免密登陆
Step1:
下载jar包并且编译它:
1、在home目录下,下载源码:
cd /home/azkaban;
git clone git@github.com:azkaban/azkaban.git
2、编译进入到下载的azkaban目录中进行编译:
# Build Azkaban
./gradlew build(这一步需要等待的时间略久,需要提前安装git、gcc等软件,否则会报错) # Clean the build
./gradlew clean # Build and install distributions
./gradlew installDist # Run tests
./gradlew test # Build without running tests
./gradlew build -x test
(上面如果报错,执行 ./gradlew distTar)
相关目录介绍如下:
azkaban-common : 常用工具类
azkaban-db : 对应的sql脚本
azkaban-Hadoop-secutity-plugin : hadoop有关kerberos插件
azkaban-solo-server: web和executor运行在同一进程的项目
azkaban-web-server:azkaban的web-server单独模块
azkaban-executor-server: azkaban的executor-server单独模块
azkaban-spi: azkaban存储接口以及exception类
3.将编译好的文件拷贝出来:
# mkdir Azkaban_package
# cp azkaban-master/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
# cp azkaban-master/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
# cp azkaban-master/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
# cp azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
4.解压:
# cd azkaban_package
# tar xvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
# tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
# tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
# tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
Step2:配置mysql数据库
1.安装Mysql
这里就不详细说明了2.创建数据库
创建一个azkaban数据库用户。
创建一个azkaban的数据库:
mysql -uroot -p
CREATE DATABASE azkaban;
授权:
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
flush privileges;
EXIT
3、导入建表语句
mysql -uazkaban -p
use azkaban
SOURCE azkaban_package/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
Step3:配置WebServer(选择一台服务器作为webServr)
1.在webServer中创建文件夹/home/azkaban/azkaban-web-server,将之前解压出来的azkaban-web-server-0.1.0-SNAPSHOT.tar.gz中的三个目录拷贝进来,同时将/azkaban-solo-server-0.1.0-SNAPSHOT中的conf,plugins拷贝进来,在azkaban-web-server手动创建extlib文件夹
bin 启动脚本存放目录
conf 配置文件存放目录(没有的话从solo-server的目录中拷贝过来)
lib 依赖jar包存放目录
extlib 附加jar包存放目录(没有的话手动创建)
plugins 插件安装目录(事实上azkaban的web并不需要这个文件夹,为了安全起见,从solo-server的目录中拷贝)
web web资源文件
2.配置jetty ssl
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: YY
What is the name of your organizational unit?
[Unknown]: YY
What is the name of your organization?
[Unknown]: YY
What is the name of your City or Locality?
[Unknown]: shanghai
What is the name of your State or Province?
[Unknown]: shanghai
What is the two-letter country code for this unit?
[Unknown]: CN
Is CN=YY, OU=YY, O=YY, L=shanghai, ST=shanghai, C=CN correct?
[no]: yes
将生成的keystone文件拷贝到web-server的安装目录下,和conf等目录同级
-3. 修改conf/azkaban.properties配置文件
# Azkaban Personalization Settings
azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index
web.resource.dir=web/ #默认根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
executor.global.properties=conf/global.properties #globa配置文件所在位置
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties. #jetty服务器属性
jetty.maxThreads=25 #最大线程数
jetty.ssl.port=8443 #jetty ssl端口号
jetty.port=8081 #jetty端口
jetty.keystore=keystore #SSL文件名
jetty.password=bigdata@123 #SSL文件密码
jetty.keypassword=bigdata@123 #jetty主密码与keystore文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=bigdata@123 #SSL文件密码
# Azkaban Executor settings
executor.port=12321 #执行服务器端口
# mail settings #邮件配置(暂没有配置)
mail.sender= #发送邮箱
mail.host= #发送邮箱smtp地址
mail.password= #邮箱密码
job.failure.email= #任务失败时发送邮件的地址
job.success.email= #任务成功时发送邮件的地址
lockdown.create.projects=false
cache.directory=cache #缓存目录
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
database.type=mysql #数据库类型
mysql.port=3306 #数据库端口号
mysql.host= #数据库连接地址
mysql.database=azkaban #数据库实例名
mysql.user=azkaban #数据库用户名
mysql.password=azkaban #数据库密码
mysql.numconnections=100 #数据库最大连接数
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
4.上传log4j文件
在conf目录中创建文件 log4j.properties,同时写入
log4j.rootLogger=INFO,File
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=/home/azkaban/azkabna-web-server/logs/azkaban_executor
log4j.appender.File.DatePattern='_'yyyy-MM-dd'.txt'
#log4j.appender.File.MaxFileSize=100KB
#log4j.appender.File.MaxBackupIndex=100
log4j.appender.File.Append=true
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d %t %-5p [%c] %m%n
如果没有log4j文件,将会以下错误:
Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHan
5.用户配置
在conf/azkaban-users.xml中可以添加管理员用户及密码
6.启动web-server
在azkaban-web-server牡蛎下启动:
bash bin/start-web.sh
打开浏览器,访问https://webserverIP:8081,用 账号azkaban 密码azkaban登录。
Step5 Executor服务器安装
1 在executor服务器中创建azkaban用户
2 在/home/azkaban目录中创建azkaban-executor-server,将 azkaban-exec-server-0.1.0-SNAPSHOT中的bin,lib复制到azkaban-executor-server,将azkaban-solo-server-0.1.0-SNAPSHOT中conf,plugins复杂到azkaban-executor-server,创建extlib文件夹
bin 启动脚本存放目录
conf 配置文件存放目录(没有的话从solo-server的目录中拷贝过来)
lib 依赖jar包存放目录
extlib 附加jar包存放目录(没有的话手动创建)
plugins 插件安装目录
3.修改azkaban.properties
# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
#executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes executor.maxThreads=50
executor.port=12321
executor.flow.threads=30 azkaban.native.lib=false//这个属性很奇怪,暂时先设置为false database.type=mysql
mysql.port=3306
mysql.host=192.168.11.201
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
4.修改plugins/jobtepe/commmonprivate.properties
# set execute-as-user
execute.as.user=true
azkaban.native.lib=/home/azkaban/azkaban-native-lib
在conf目录中创建文件 log4j.properties,同时写入
log4j.rootLogger=INFO,File
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=/home/azkaban/azkaban-exec-server/logs/azkaban_executor
log4j.appender.File.DatePattern='_'yyyy-MM-dd'.txt'
log4j.appender.File.MaxFileSize=100KB
log4j.appender.File.MaxBackupIndex=100
log4j.appender.File.Append=true
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d %t %-5p [%c] %m%n
在mysql的azkaban数据库中,将executor服务器的ID加入executors表
insert into executors(host,port) values("EXECUTOR_HOST",EXECUTOR_PORT);
比如insert into executors(host,port) values("196.12.22.123",12321);
同时将active设置为1
启动executor服务器
bash /home/azkaban/azkaban-exec-server/bin/start-exec-*.sh;
-8.添加用户转化功能
我们用azkaban用户登陆azkaban,但是却可以通过user.proxy.user切换到任何用户执行任务,原因是我们进行了plugins配置,配置步骤如下
1.在azkaban-exec-server同一层创建azkaban-native-lib
2.cp azkaban/az-exec-util/src/main/c/execute-as-user.c azkaban-native-lib
3.gcc execute-as-user.c -o execute-as-user
4.chown root execute-as-user (you might need root privilege)
5.chmod 6050 execute-as-user (you might need root privilege)
最新文章
- 相克军_Oracle体系_随堂笔记004-shared pool
- ActiveReports最终报表设计器本地化方法介绍
- volcanol_Linux_ 问题汇总系列_4_Thinkpad_E40_0578MDC_在Fedora 13 Linux(FC13)中如何安装无线网卡驱动
- 像编程一样写文章—Markdown
- 在linux下运行java工程
- codeforces 375D:Tree and Queries
- 【转】google谷歌百度收录网站的技巧方法,如何让百度收录?
- C语言--基本运算符
- Eucalyptus和Openstack最近版本的改动简单对比
- Mysql介绍和实践总结
- 为什么可以通过URL来调起APP - URL Scheme和Intent
- [USACO2008 Mar]土地购买
- 安装Linux操作系统,学习Liunx基础
- 机器学习基石笔记:06 Theory of Generalization
- 并发编程---线程queue---进程池线程池---异部调用(回调机制)
- SSL/TLS Server supports TLSv1.0
- RAC手动中断订阅
- soanr - 企业用户角色管理
- unity 查找脚本被场景中哪些对象引用
- HBuilder 详细使用方法 -------------参考 :http://www.runoob.com/w3cnote/hbuilder-intro.html