二、azkaban 指南

来源:互联网 发布:体育动漫知乎 编辑:程序博客网 时间:2024/06/01 20:27
在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服务器
下载页面下载azkaban-solo-server-2.5.0.tar.gz
另外,您也可以克隆GitHub库,你可以构建最新版本的主分支。到这里看的说明,从源代码构建。
软件包解压到一个目录下。提取后,应该有以下目录。
文件夹描述bin启动阿兹卡班服务的脚本conf阿兹卡班的所有配置lib阿兹卡班依赖的jar包extlib添加到extlib 的 jar 包,会被添加到 Azkaban 的classpathplugins可在此目录安装插件webazkaban的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
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所有配置文件libazkaban依赖的jarextlibextlib中jar将被添加到azkaban的classpathplugins插件安装目录webazkaban 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所有配置文件libazkaban依赖的jarextlibextlib中jar将被添加到azkaban的classpathplugins插件安装的目录
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.proxyAzkaba 是否应代理为其他用户查看HDFS文件系统,而不是azkaban本身,默认为truehadoop.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 0
原创粉丝点击