Azkaban3.x集群部署(multiple executor mode)
来源:互联网 发布:java else什么意思 编辑:程序博客网 时间:2024/06/09 22:51
Azkaban3.x集群部署(multiple executor mode)
介绍
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。 它有三个重要组件:
- 关系数据库(目前仅支持mysql)
- web管理服务器-AzkabanWebServer
- 执行服务器-AzkabanExecutorServer
Azkaban使用MySQL来存储它的状态信息,Azkaban Executor Server和Azkaban Web Server均使用到了MySQL数据库。
AzkabanExecutorServer在如下几个方面使用到了数据库:
- 获取project的信息
- 执行工作流
- 存储工作流运行日志
- 如果一个工作流在不同的执行器上运行,它将从DB中获取状态。
AzkabanWebServer在如下几个方面使用到了数据库:
- Project管理
- 跟踪工作流执行进度
- 访问历史工作流的运行信息
- 定时执行工作流任务
- 记录所有sla规则
AzkabanWebServer
AzkabanWebserver是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执 行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。
AzkabanExecutorServer
之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级。
编译安装
1、下载源码
从github上下载azkaban官方源码,目前最新release为3.30.1
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
相关目录介绍如下:
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类
将编译好的文件拷贝出来:
# mkdir Azkaban_3.30# cp azkaban-master/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/# cp azkaban-master/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/# cp azkaban-master/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/# cp azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/
解压:
# cd azkaban_3.30# 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
配置mysql数据库
1、安装mysql数据库
这里省略安装步骤,使用版本的为5.7
2、创建数据库
创建一个azkaban的数据库:
mysql -uroot -p> CREATE DATABASE azkaban;
授权:
> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'password';> GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;> flush privileges;> FLUSH PRIVILEGES;> EXIT
3、导入建表语句
mysql -uazkaban -p> SOURCE azkaban_3.30/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
配置Azkaban
这里将安装三个exec-server和一个web-server,相关组件分配如下:
本文将采用multiple executor mode安装模式,组件分配如下:bd-dev-ops-170 172.31.217.170 azkaban-exec-serverbd-dev-ops-171 172.31.217.171 azkaban-exec-serverbd-dev-ops-172 172.31.217.172 azkaban-web-server azkaban-exec-serverbd-dev-ops-173 172.31.217.173 mysql-server
在172上创建/opt/Azkaban-web-server目录,把编译好的软件拷贝到该目录,包含以下目录:
bin 启动脚本存放目录conf 配置文件存放目录(没有的话从solo-server的目录中拷贝过来)lib 依赖jar包存放目录extlib 附加jar包存放目录(没有的话手动创建)plugins 插件安装目录web web资源文件
在170,171,172上创建目录/opt/Azkaban-exec-server目录,把编译好的软件拷贝到该目录,包含以下目录:
bin 启动脚本存放目录conf 配置文件存放目录(没有的话从solo-server的目录中拷贝过来)lib 依赖jar包存放目录extlib 附加jar包存放目录(没有的话手动创建)plugins 插件安装目录
配置Azkaban Web Server
1、配置jetty ssl
# keytool -keystore keystore -alias jetty -genkey -keyalg RSAEnter keystore password: Re-enter new password: What is your first and last name? [Unknown]: YYWhat is the name of your organizational unit? [Unknown]: YYWhat is the name of your organization? [Unknown]: YYWhat is the name of your City or Locality? [Unknown]: shanghaiWhat is the name of your State or Province? [Unknown]: shanghaiWhat is the two-letter country code for this unit? [Unknown]: CNIs CN=YY, OU=YY, O=YY, L=shanghai, ST=shanghai, C=CN correct? [no]: yes
将生成的keystone文件拷贝到web-server的安装目录下,和conf等目录同级
2、修改conf/azkaban.properties配置文件
#cat azkaban.properties # Azkaban Personalization Settingsazkaban.name=Test #服务器UI名称,用于服务器上方显示的名字azkaban.label=My Local Azkaban #描述azkaban.color=#FF3601 #UI颜色azkaban.default.servlet.path=/indexweb.resource.dir=web/ #默认根web目录default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海# Azkaban UserManager classuser.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参见下文# Loader for projectsexecutor.global.properties=conf/global.properties #globa配置文件所在位置azkaban.project.dir=projects # Velocity dev modevelocity.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 settingsexecutor.port=12321 #执行服务器端口# mail settings #邮件配置(暂没有配置)mail.sender= #发送邮箱mail.host= #发送邮箱smtp地址mail.password= #邮箱密码job.failure.email= #任务失败时发送邮件的地址job.success.email= #任务成功时发送邮件的地址lockdown.create.projects=falsecache.directory=cache #缓存目录# JMX statsjetty.connector.stats=trueexecutor.connector.stats=true# Azkaban plugin settingsazkaban.jobtype.plugin.dir=plugins/jobtypesdatabase.type=mysql #数据库类型mysql.port=3306 #数据库端口号mysql.host=172.31.217.173 #数据库连接地址mysql.database=azkaban #数据库实例名mysql.user=azkaban #数据库用户名mysql.password=bigdata@123 #数据库密码mysql.numconnections=100 #数据库最大连接数azkaban.use.multiple.executors=trueazkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatusazkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1azkaban.executorselector.comparator.Memory=1azkaban.executorselector.comparator.LastDispatched=1azkaban.executorselector.comparator.CpuUsage=1
3、上传log4j文件
在azkaban目录下创建logs文件夹,位置跟conf在同一级,在conf目录中上传log4j文件。简单示例如下:
log4j.rootLogger=DEBUG,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
如果没有log4j文件,将会以下错误:
Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHan
4、用户配置
添加管理员用户及密码:
<azkaban-users> <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/> <user password="metrics" roles="metrics" username="metrics"/> <user username="admin" password="admin" roles="admin,metrics"/>#新增管理员 <role name="admin" permissions="ADMIN"/> <role name="metrics" permissions="METRICS"/></azkaban-users>
5、启动web-server
进入到web-server的目录,执行如下脚本,需要在bin级目录执行,否则汇报找不到配置文件的错误。
# bin/azkaban-web-start.sh
打开浏览器,访问https://172.31.217.172:8443,用刚刚添加的管理员账户密码登录。
配置 Azkaban Executor Server
1、修改conf/azkaban.properties
# cat azkaban.properties # Azkaban Personalization Settingsdefault.timezone.id=Asia/Shanghai# Loader for projectsexecutor.global.properties=conf/global.propertiesazkaban.project.dir=projects# Azkaban plugin settingsazkaban.jobtype.plugin.dir=plugins/jobtypesdatabase.type=mysqlmysql.port=3306mysql.host=172.31.217.173mysql.database=azkabanmysql.user=azkabanmysql.password=bigdata@123mysql.numconnections=100# Azkaban Executor settingsexecutor.maxThreads=50executor.port=12321executor.flow.threads=30
2、上传log4j文件
在azkaban目录下创建logs文件夹,位置跟conf在同一级,在conf目录中上传log4j文件。简单示例如下:
log4j.rootLogger=DEBUG,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
如果没有log4j文件,将会以下错误:
Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHan
3、启动exec-server
进入到exec-server的目录,执行如下脚本,需要在bin级目录执行,否则汇报找不到配置文件的错误。(一共三台机器)
# bin/azkaban-executor-start.sh# 在这种模式下,先要启动exec-server,再启动web-server
http://www.cnblogs.com/bugsbunny/p/7412164.html
- Azkaban3.x集群部署(multiple executor mode)
- Azkaban3.x集群部署(multiple executor mode)
- Azkaban3.x集群部署(multiple executor mode)
- 大数据学习30:Azkaban3.x 的 two server mode 部署
- azkaban的executor的分布式(集群)部署
- linux环境部署Spark集群(Standalone Mode)
- Azkaban3.0安装部署以及汉化
- Linux集群部署系列(五):Hadoop 2.x完全分布式集群部署
- MySQL cluster 7.X集群部署配置
- redis3.X部署和集群搭建
- Hadoop 2.x分布式集群部署
- Hadoop 2.x分布式集群部署
- MYSQL集群部署(三)--集群部署
- vert.x笔记:6.vert.x集群化部署
- Redis集群(2)-部署集群
- Spark2.x---5.Executor模块
- 编译安装方式部署Hadoop 2.x集群
- Hadoop1.X集群完全分布式模式环境部署
- codeforces 746 Decoding
- socket阻塞与非阻塞,同步与异步、I/O模型
- 1-3 数组的反序输出
- 序列化和反序列化
- RGB转YUV色彩空间
- Azkaban3.x集群部署(multiple executor mode)
- 搭建 webrtc 信令服务器
- python基础笔记4
- 图之最小生成树-Prim算法和Kruskal算法
- N的阶乘 mod P
- Divisors UVA
- Git上传代码到远程仓库
- 基于msp430单片机的方波发生器
- 第一篇文章