Centos7环境下Azkaban 3安装教程(含源码编译)

Azkaban是一种类似于Oozie的工作流控制引擎,可以用来解决多个Hadoop(或Spark等)离线计算任务之间的依赖关系问题。

也可以用其代替crontab来对周期性任务进行调度,并且更为直观,可靠,同时提供了美观的可视化管理界面。

原理架构:

Centos7环境下Azkaban 3安装教程(含源码编译)

  •  MySQL实例:Azkaban使用MySQL来存储项目执行流状态。
  •  Azkaban Web服务器:Azkaban使用Jetty作为Web服务器,作为控制器管理整个Azkaban工作流系统,负责用户登录认证,project管理、定时执行工作流、跟踪工作流执行进度以及提供Web界面
  •  Azkaban执行服务器:Azkaban执行服务器负责具体的工作流的提交,执行,通过访问mysql数据库协调任务的执行。

Azkaban三种运行模式:

  • solo server mode
    • H2
    • web server 和 executor server运行在一个进程里
    • 最简单模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
  • two server mode
    • MySQL(主从结构)
    • web server 和 executor server运行在不同的进程
    • 数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响
  • multiple executor mode
    • MySQL(主从结构)
    • web server 和 executor server运行在不同的进程
    • executor server有多个
    • 该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。

源码编译:

安装git:

[root@localhost azkaban]# yum install git -y

克隆项目:

[root@localhost azkaban]# git clone https://github.com/azkaban/azkaban.git

Centos7环境下Azkaban 3安装教程(含源码编译)

编译源码:

cd azkaban;执行./gradlew build installDist

[root@localhost azkaban]# cd azkaban/

[root@localhost azkaban]# ./gradlew build installDist

Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip

若之前没有安装jdk,此处会报异常,需要安装JDK并配置环境变量,重新执行上述命令。(此处略)

Centos7环境下Azkaban 3安装教程(含源码编译)

编译成功!此处耗时间比较长

Centos7环境下Azkaban 3安装教程(含源码编译)

编译后安装包路径:

编译成功之后可在指定的路径下取得相应的安装包:

Solo-server模式安装包路径

[root@localhost azkaban]# ls azkaban-solo-server/build/distributions/

Two-server模式和multipie-executor模式 web-server安装包路径

[root@localhost azkaban]# ls azkaban-web-server/build/distributions/

Two-server模式和multipie-executor模式 exec-server安装包路径

[root@localhost azkaban]# ls azkaban-exec-server/build/distributions/

数据库相关安装包路径

[root@localhost azkaban]# ls azkaban-db/build/distributions/

Centos7环境下Azkaban 3安装教程(含源码编译)

解压安装Azkaban:

解压azkaban-web-server.tar.gz、azkaban-executor-server.tar.gz、azkaban-sql-script.tar.gz到/usr/java/azkaban目录下:

[root@localhost azkaban]# cd azkaban-web-server/build/distributions/

[root@localhost distributions]# tar -zxvf azkaban-web-server-3.91.0-122-g270defa.tar.gz -C /usr/java/azkaban/

Centos7环境下Azkaban 3安装教程(含源码编译)

[root@localhost azkaban]# cd azkaban-exec-server/build/distributions/

[root@localhost distributions]# tar -zxvf azkaban-exec-server-3.91.0-122-g270defa.tar.gz -C /usr/java/azkaban/

Centos7环境下Azkaban 3安装教程(含源码编译)

[root@localhost azkaban]# cd azkaban-db/build/distributions/

[root@localhost distributions]# tar -zxvf azkaban-db-3.91.0-122-g270defa.tar.gz -C /usr/java/azkaban/

[root@localhost azkaban]# mv azkaban-db-3.91.0-122-g270defa azkaban-db-3.91

[root@localhost azkaban]# mv azkaban-exec-server-3.91.0-122-g270defa azkaban-exec-server-3.91

[root@localhost azkaban]# mv azkaban-web-server-3.91.0-122-g270defa azkaban-web-server-3.91

Centos7环境下Azkaban 3安装教程(含源码编译)

初始化Azkaban元数据库:

登录mysql并执行azkaban-db-3.91目录下的create-all-sql(mysql安装此处略)

[root@localhost ~]# mysql -u root -p

mysql> create database azkaban;

mysql> use azkaban;

mysql> source /usr/java/azkaban/azkaban-db-3.91/create-all-sql-3.91.0-122-g270defa.sql

Centos7环境下Azkaban 3安装教程(含源码编译)

mysql> show tables;

Centos7环境下Azkaban 3安装教程(含源码编译)

配置:

首先备份azkaban.properties 和 azkaban-users.xml

Centos7环境下Azkaban 3安装教程(含源码编译)

web-server主配置文件 azkaban.properties,Azkaban 个性化设置,除了时区和web资源路径需要注意。

[root@localhost conf]# vi azkaban.properties

# Azkaban Personalization Settings

azkaban.name=Test

azkaban.label=My Local Azkaban

azkaban.color=#FF3601

azkaban.default.servlet.path=/index

web.resource.dir=/usr/java/azkaban/azkaban-web-server-3.91/web/   【绝对路径】

default.timezone.id=Asia/Shanghai

# Azkaban UserManager class

user.manager.class=azkaban.user.XmlUserManager

user.manager.xml.file=/usr/java/azkaban/azkaban-web-server-3.91/conf/azkaban-users.xml 【绝对路径】

# Loader for projects

executor.global.properties=/usr/java/azkaban/azkaban-web-server-3.91/conf/global.properties【绝对路径】

azkaban.project.dir=projects

# Velocity dev mode

velocity.dev.mode=false

# Azkaban Jetty server properties.

jetty.use.ssl=false

jetty.maxThreads=25

jetty.port=8081

# Azkaban Executor settings

executor.port=12321  【必须和executor端口保持一致】

# mail settings

mail.sender=

mail.host=

# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.

# enduser -> myazkabanhost:443 -> proxy -> localhost:8081

# when this parameters set then these parameters are used to generate email links.

# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.

# azkaban.webserver.external_hostname=myazkabanhost.com

# azkaban.webserver.external_ssl_port=443

# azkaban.webserver.external_port=8081

job.failure.email=

job.success.email=

lockdown.create.projects=false

cache.directory=cache

# JMX stats

jetty.connector.stats=true

executor.connector.stats=true

# Azkaban mysql settings by default. Users should configure their own username and password.

database.type=mysql

mysql.port=3306

mysql.host=127.0.0.1

mysql.database=azkaban

mysql.user=root

mysql.password=123456

mysql.numconnections=100

#Multiple Executor

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

web-server用户配置文件 azkaban-users.xml

[root@localhost conf]# vi azkaban-users.xml

<azkaban-users>

  <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>

  <user password="metrics" roles="metrics" username="metrics"/>

  <role name="admin" permissions="ADMIN"/>

  <role name="metrics" permissions="METRICS"/>

</azkaban-users>

executor-server主配置文件 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=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

azkaban.project.dir=projects

# Velocity dev mode

velocity.dev.mode=false

# Azkaban Jetty server properties.

jetty.use.ssl=false

jetty.maxThreads=25

jetty.port=8081

# Where the Azkaban web server is located

azkaban.webserver.url=http://localhost:8081

# mail settings

mail.sender=

mail.host=

# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.

# enduser -> myazkabanhost:443 -> proxy -> localhost:8081

# when this parameters set then these parameters are used to generate email links.

# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.

# azkaban.webserver.external_hostname=myazkabanhost.com

# azkaban.webserver.external_ssl_port=443

# azkaban.webserver.external_port=8081

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

# Azkaban mysql settings by default. Users should configure their own username and password.

database.type=mysql

mysql.port=3306

mysql.host=127.0.0.1

mysql.database=azkaban

mysql.user=root

mysql.password=123456

mysql.numconnections=100

# Azkaban Executor settings

executor.maxThreads=50

executor.port=12321    【必须和web-server端口保持一致】

executor.flow.threads=30

executor.props.resolve.overrideExisting.enabled=false

启动服务:

启动web-server和exec-server,执行bin/azkaban-executor-start.sh 和 bin/azkaban-web-start.sh 命令。

[root@localhost azkaban]# cd azkaban-web-server-3.91/

[root@localhost azkaban-web-server-3.91]# bin/start-web.sh

[root@localhost azkaban-web-server-3.91]# cd ..

[root@localhost azkaban]# cd azkaban-exec-server-3.91/

[root@localhost azkaban-exec-server-3.91]# bin/start-exec.sh

关闭服务:

shutdown-web.sh

shutdown-exec.sh

查看服务:

[root@localhost azkaban-web-server-3.91]# jps

Centos7环境下Azkaban 3安装教程(含源码编译)

遇到的问题:

查看azkaban安装目录下log信息如下:

Centos7环境下Azkaban 3安装教程(含源码编译)

解决办法:

executor-server主配置文件 azkaban.properties中设置executor端口 12321

executor.port=12321

在MySql中执行:

mysql> update azkaban.executors set active=1;

Centos7环境下Azkaban 3安装教程(含源码编译)

 

上一篇:工作流开源任务调度框架2--Azkaban


下一篇:嵌入式学习DAY28 --- 线程、同步和互斥问题、如何实现同步和互斥?