二、azkaban 指南

在3.0版本中,提供了三种模式:单服务模式,2个服务模式以及分布式多服务模式。以下描述了它们之间的差异。
在单服务模式 ,数据库使用H2,并且web server 和 executor server 运行 在同一进程中 。此模式合适个人试用使用。它也可以用在小规模的使用案例。
  1. 下载并安装 Solo Server 包
  2. 安装阿兹卡班插件
在  2个 server 模式适用在较重 的生产环境。其数据库应该由MySQL实例,采用主从设置进行备份。WebServer 和 ExecutorServer应该在不同的进程中运行,使升级和维护不会影响用户。
  1. 建立数据库
  2. 下载并安装WebServer
  3. 下载并安装ExecutorServer
  4. 安装阿兹卡班插件
多个 Executor 模式 为最重的生产环境。其数据库应该由MySQL实例,采用主从设置进行备份。WebServer和ExecutoerServer应该在不同的主机上运行,使升级和维护不会影响用户。这种多主机设置,让 阿兹卡班具有 强大的可扩展性。
  1. 建立数据库
  2. 下载并安装 WebServer
  3. 配置数据库使用多个 Executor
  4. 为数据库中配置的每个 executor 下载并安装 Executor Server
  5. 安装阿兹卡班插件

下面是关于如何设置阿兹卡班了说明。



Building from Source


Azkaban 使用   Gradle, 需要 jdk  1.8。 用户不需要安装 gradle,项目里自带了.

 Linux and Mac OS X
$ ./gradlew distTar

 Windows 
$ gradlew distTar


安装Azkaban solo服务
在 Azkaban 2.5有一个 solo-server 模式,可以在学习或者小规模和对安全要求不高环境中使用。
其特点是:
  • 易于安装 - MySQL实例不是必要的。它封装H2作为其主要的持久性存储。
  • 易于启动 - Web服务和 Executor服务都运行在同一进程中
  • 全功能 -它打包所有azkaban的功能。你可以按通用的方式使用它,也可以为它安装插件。

安装Solo服务器
另外,您也可以克隆 GitHub库 ,你可以构建最新版本的主分支。 到这里 的说明,从源代码构建。
软件包解压到一个目录下。提取后,应该有以下目录。
文件夹 描述
bin 启动阿兹卡班服务的脚本
conf 阿兹卡班的所有配置
lib 阿兹卡班依赖的jar包
extlib 添加到extlib 的 jar 包,会被添加到 Azkaban 的classpath
plugins 可在此目录安装插件
web azkaban的Web 网站所需的(CSS,JavaScript,图像)文件。
conf 目录中,应该有三个文件:
  • azkaban.private.properties 阿兹卡班运行时使用的参数
  • azkaban.properties 阿兹卡班运行时使用的参数
  • global.properties - 全局静态属性,在每一个工作流 及 job中被传递并共享
  • azkaban-users.xml中 - 用于添加用户和角色进行身份验证。使用此文件需要,设置 XmLUserManager 属性
azkaban.properties 文件是主要的配置文件。

获取密钥库SSL(可选)
Azkaban solo server在默认情况下不使用SSL。但是也可以使用相同的方式,把它设置在一个独立的网络服务中。方法如下:
Azkaban web server 使用 SSL 的 socket 连接器,那就必须有一个可用的密钥存储。 查看 这个链接 创建一个 一旦密钥存储文件被创建,azkaban必须配置它的位置和密码。 azkaban.properties ,下面的属性将会被覆盖。
jetty.keystore=密钥库
jetty.password=密码
jetty.keypassword=密码
jetty.truststore=密钥库
jetty.trustpassword=密码

建立的UserManager
azkaban 使用 UserManager 提供身份验证和管理用户角色。默认情况下,azkaban 使用 XmlUserManager 从_azkaban-users.xml_获 取用户名/密码及角色,可以在 azkaban.properties 文件查看
  • user.manager.class=azkaban.user.XmlUserManager
  • user.manager.xml.file=conf/azkaban-users.xml

运行Web服务器
在文件 azkaban.properties 中,使用下面的属性配置jetty
jetty.maxThreads = 25
jetty.ssl.port = 8081
执行 bin/azkaban-solo-start.sh 开始solo-sefver。要停止,运行 bin/azkaban-solo-shutdown.sh
在浏览器上 打开 HTTP://localhost:8081/index


数据库设置
目前,Azkaban2只使用MySQL作为其数据存储
1.安装MySQL
2.设置数据库
名称可以自定义
mysql> CREATE DATABASE azkaban;
用户名可以自定义
mysql> CREATE USER ‘username'@'%'IDENTIFIED BY'password';
给用户添加INSERT,SELECT,UPDATE,DELETE权限。
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to ‘<username>'@‘%' WITH GRANT OPTION;
配置packet size。MySQL默认 packet size   配置太低 。需要修改 max_allowed_packet 属性 ,比如 1024M。
在Linux中,在 /etc/my.cnf 配置 mysqld 后面,添加以下内容:
[mysqld]
...
max_allowed_pa​cket=1024M
需要重启MySQL,可以运行...
$ sudo /sbin/service mysqld restart

3.创建Azkaban的表
请从 下载页面 现在 azkaban-sql-script,表创建语句都在里面。
可以在MySQL中运行每个表的创建语句来创建表。或者,简单的办法就运行 create-all-sql 脚本。以 update 开头的脚本可以忽略。
use azkaban;
source /home/cm/chenzhilei/azkaban-2.5.0/create-all-sql-2.5.0.sql

4.获取JDBC Connector jar包
由于种种原因,azkaban不分发MySQL的JDBC Connector jar包。您可以从  此链接  下载。
Web server和 executor server  需要 这个jar ,需要放到它们/extlib目录下。


设置Azkaban Web Server
Azkaban Web Server 负责处理项目管理、认证、调度以及触发器。

安装Web Server
下载页面  下载 azkaban-web-server 软件包
另外,您也可以克隆 GitHub库 ,构建最新版本的主分支。 看这里 的说明,从源代码构建。
软件包解压到一个目录下。安装路径应该是从AzkabanExecutorServer不同。提取后,应该有以下目录:
文件夹 描述
bin 启动azkaban jetty 服务脚本
conf 所有配置文件
lib azkaban依赖的jar
extlib extlib中jar将被添加到azkaban的classpath
plugins 插件安装目录
web azkaban web server 网站所需文件(CSS,JavaScript,图像)。
conf 目录中,应该有三个文件
  • azkaban.properties -运行时使用的参数
  • global.properties -全局静态属性,在 flow 和 job 中被被传递共享
  • azkaban-users.xml -用于添加用户和进行角色身份验证。必须XmLUserManager被设置为azkaban-users.xml时该文件才被使用
azkaban.properties 文件是主要的配置文件,azkaban 必须有此文件。

获取密钥库SSL
Azkaban web server 使用 SSL 的 socket 连接器,那就必须有一个可用的密钥存储。 您查看 这个链接 创建一个。 一旦密钥存储文件被创建,azkaban必须配置它的位置和密码。 azkaban.properties ,下面的属性将会被覆盖。
jetty.keystore =密钥库
jetty.password =密码
jetty.keypassword =密码
jetty.truststore =密钥库
jetty.trustpassword =密码

设置DB
如果你还没有得到MySQL JDBC驱动程序,你可以 这个链接 下载。
移动这个jar到 extlib 目录。所有外部的依赖都应添加到extlib目录。
配置 azkaban Web客户端的MySQL实例,需要将连接参数添加到azkaban.properties。
database.type = MySQL
mysql.port = 3306
mysql.host = localhost
mysql.database = azkaban
mysql.user = azkaban
mysql.password = azkaban
mysql.numconnections = 100
目前,MySQL是 azkaban 唯一支持的数据存储类型。所以 database.type 应该永远是 MySQL

建立UserManager
azkaban 使用 UserManager 提供身份验证和用户角色。
默认,azkaban使用 XmlUserManager 它从 azkaban-users.xml 文件 获取用户名/密码以及角色, 可以在 azkaban.properties 文件看到。
user.manager.class = azkaban.user.XmlUserManager
user.manager.xml.file = conf/azkaban-users.xml

运行Web Server
下面的属性 azkaban.properties 用于配置jetty。
jetty.maxThreads = 25
jetty.ssl.port = 8443
执行 bin/azkaban-web-start.sh 启动AzkabanWebServer。 要关闭AzkabanWebServer,运行 斌bin/azkaban-web-shutdown.sh 
可以通过浏览器访问Web Server。


设置Azkaban Executor Server
azkaban-executor-server 处理工作流程和 job 的实际执行。
安装executor-server
下载azkaban-exec-server软件包 下载页面
另外,您也可以克隆 GitHub库 ,你可以构建最新版本的主分支。 看到这里 的说明,从源代码构建。
解压 软件包 安装路径应该与azkaban Web server 不同。提取后,应该有以下目录。
文件夹 描述
bin 启动阿兹卡班jetty服务的脚本
conf 所有配置文件
lib azkaban依赖的jar
extlib extlib中jar将被添加到azkaban的classpath
plugins 插件安装的目录
conf 目录中,我们只需要配置 azkaban.properties 文件。
此文件是为主要的配置文件,azkaban executor必须有此配置文件。

设置DB
如果你还没有得到MySQL JDBC驱动程序,你可以从它 这个链接
移动这个jar到 extlib 目录。所有外部的依赖都添加到extlib目录。
将需要的连接参数添加到azkaban.properties。
database.type = mysql
mysql.port = 3306
mysql.host = localhost
mysql.database = azkaban
mysql.user = azkaban
mysql.password = azkaban 
mysql.numconnections = 100
目前,MySQL是在azkaban唯一支持的数据存储类型。所以 database.type 应该永远是 MySQL的

配置AzabanWebServer和AzkabanExecutorServer客户
executor server 需要设置一个端口,AzabanWebServer需要知道此端口。
以下属性需要在AzkabanExecutorServer的设置azkaban.properties。
#azkaban executor 的配置
executor.maxThreads = 50
executor.port = 12321
executor.flow.threads = 30
单 Executor 模式
默认 executor.port 被设置为12321。AzkabanWebServer  需要指向这个端口。
在AzkabanWebServer的 azkaban.properties文件中 进行 设置
executor.port = 12321
多 Executor 模式 
如果我们想在多 executor 模式下运行程序,那 我们需要有多个webserver 。azkaban.properties文件中必须有以下azkaban.use.multiple.executors 和 azkaban.executorselector.comparator.* 。请注意,在多executor模式下 azkaban.use.multiple.executors 并不荣幸。
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

需要重启服务,才可以加载这些修改。

运行 Executor Server
执行 bin/azkaban-exec-start.sh 启动AzkabanExecutorServer。 要关闭AzkabanExecutorServer,运行 bin/azkaban-exec-shutdown.sh


配置多 Executor 模式
目前 Executor 管理 UI。 Executor 需要在数据库中进行配置。例如: -
insert into executors(host,port) values("EXECUTOR_PORT",EXECUTOR_PORT);


设置 Azkaban 插件
Azkaban 的非核心功能 被设计为 基于插件,这样做是为了
  1. 在不同的环境下,在不改变Azkaban 核心时,可以选择性地安装/升级
  2. 这让 Azkaban 在不同的系统上非常容易扩展。
眼下,azkaban 允许多种不同的插件。在 Web server 端,有
  • 浏览器插件,可以自定义网页丰富Azkaban的功能已知的一些实现包括HDFS文件系统浏览器,Reportal。
  • 触发插件,可以自定义触发方式。
  • 用户管理器插件,允许自定义用户身份验证方法。例如,在LinkedIn我们有基于LDAP的用户认证。
  • 报警器插件,使用不同的报警方式给用户,除了基于电子邮件的警报。
在 executor server 端
  • 可插拔的 job 类型 executor,如Hadoop的生态中的 job 类型。
我们推荐 Azkaban 的安装这些插件。常见的插件都可以 下载页面 下载。 另外,通过克隆 GitHub库 ,您可以运行 ant 在不同的插件目录中创建tar ball 包。
下面是如何安装这些插件到Azkaban的说明

用户管理器插件
默认情况下,azkaban 使用 XMLUserManager类及 conf/azkaban-users.xml 管理权限。
这是不安全的,不能服务于许多用户。在实际生产部署,应该依赖与适合自己的用户管理器类,比如基于LDAP的。 XMLUserManager 仍然可以用于特殊帐户和角色的 管理
要安装自己的用户管理器类,指定 Azkaban2-web-server-install-dir/conf/azkaban.properties 
user.manager.class = MyUserManagerClass
并把jar放到 plugins 目录中。

浏览器插件

HDFS浏览器插件
HDFS浏览器插件的安装应AzkabanWebServer plugins目录下,它被指定在AzkabanWebServer的配置文件,例如,在 Azkaban2-web-server-install-dir/conf/azkaban.properties 
viewer.plugins = HDFS
这是告诉 azkaban 载入HDFS浏览器插件从 Azkaban2-web-server-install-dir/plugins/viewer/hdfs
提取 azkaban-hdfs-viewer 归档到AzkabanWebServer  ./plugins/viewer 目录。重命名为 HDFS ,跟上面指定的一样。
  1. 如果Hadoop是非安全启动​​,默认的配置也够用了。我们可以简单地重启AzkabanWebServer,就可以使用HDFS界面了
  2. 如果Hadoop是安全启动,下面的就不同于默认值了,需要修改下,在插件的配置文件:
参数 描述
azkaban.should.proxy Azkaba 是否应代理为其他用户查看HDFS文件系统,而不是azkaban本身,默认为true
hadoop.security.manager.class 所使用的安全管理器,它处理与Hadoop集群的通话,默认为azkaban.security.HadoopSecurityManager_H_1_0认(对于hadoop的1.x版)
proxy.user 在azkaban的用户配置使用Kerberos和Hadoop。类似于如何Oozie的应配置,用于安全的hadoop安装
proxy.keytab.location 该密钥表文件与阿兹卡班可以使用Kerberos身份验证为指定的位置proxy.user

欲了解更多Hadoop的安全相关的信息,请参阅HadoopSecurityManager


job类型插件
azkaban有一组内置的作业类型仅限于运行本地UNIX命令和简单的Java程序。在大多数情况下,你会想安装其他作业类型的插件,例如,hadoopJava,pig,hive,VoldemortBuildAndPush等。下面是如何安装:
job类型插件应该在AzkabanExecutorServer的plugins目录进行安装,并在AzkabanExecutorServer的配置文件中指定。例如,在 Azkaban2-exec-server-install-dir/conf/azkaban.properties 
azkaban.jobtype.plugin.dir =plugins/jobtypes
这告诉azkaban加载 Azkaban2-exec-server-install-dir/plugins/jobtypes 下所有作业类型 解压到AzkabanExecutorServer  ./plugins/ 目录下,重命名为 jobtypes 如上面的规定。
当您运行Hadoop作业时,通常需要下面的设置:
参数 描述
hadoop.home 您的$HADOOP_HOME设置。
jobtype.global.classpath 特定的集群的hadoop资源,如hadoop-core jar及hadoop的配置(例如,${hadoop.home}/hadoop-core-1.0.4.jar,${hadoop.home}/conf
取决于如果hadoop的安装被接通上:
  • 如果Hadoop的安装没有安全开启,你可能可以依靠的默认设置。
  • 如果Hadoop的安装确实有Kerberos身份验证打开,您需要填写以下Hadoop的设置:
参数 描述
hadoop.security.manager.class 所使用的安全管理器,它处理通话以固定的hadoop簇,默认为azkaban.security.HadoopSecurityManager_H_1_0(对于hadoop的1.x版)
proxy.user 在阿兹卡班的用户配置使用Kerberos和Hadoop。类似于如何Oozie的应配置,用于安全的hadoop安装
proxy.keytab.location 该密钥表文件与阿兹卡班可以使用Kerberos身份验证指定的proxy.user的位置
欲了解更多Hadoop的安全相关的信息,请参阅 HadoopSecurityManager
最后,启动执行程序,注意有无错误信息,并检查执行程序服务器日志。对于作业类型的插件,执行者应该做最小测试,检验是否正确安装。

从2.1升级数据库

如果从头开始安装阿兹卡班,你可以忽略这个文件。这是只对那些谁是升级为2.1〜2.5。

所述update_2.1_to_3.0.sql需要运行以改变所有的表。这包括几个表改变和新表。

下面是变化:

  • 改变project_properties表“
    • 修改“名称”栏中为255个字符
  • 创建新表的触发器

从2.1导入现有时刻表

在3.0中,调度系统将合并到新的触发系统。这些信息将被保存在触发器表中的DB。我们必须导入现有的日程安排到这个新表的简单工具。

在您下载并安装Web服务器,请运行此命令,从网络服务器安装目录:

$庆典斌/ schedule2trigger.sh


从2.7.0升级数据库

如果从头开始安装阿兹卡班,你可以忽略这个文件。这是只对那些谁是升级,从2.7到3.0。

create.executors.sql,update.active_executing_flows.3.0.sql,update.execution_flows.3.0.sqlcreate.executor_events.sql需要运行以改变所有的表。这包括几个表改建和两个新表。

下面是变化:

  • 改变active_executing_flows表“
    • 删除“端口”列
    • 删除“主机”列
  • 改变execution_flows表“
    • 添加“executor_id”列
  • 创建新的遗嘱执行人表
  • 创建新的遗嘱执行人事件表
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值