写点什么

Azkaban 安装文档

  • 2022 年 7 月 17 日
  • 本文字数:4172 字

    阅读完需:约 14 分钟

大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能 code 下能 teach 的全能奶爸

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~



1 Azkaban 介绍

Azkaban 是一种类似于 Oozie 的工作流控制引擎,可以用来解决多个 Hadoop(或 Spark 等)离线计算任务之间的依赖关系问题。也可以用其代替 crontab 来对周期性任务进行调度,并且更为直观,可靠,同时提供了美观的可视化管理界面。


Azkaban 由三部分构成:


1、Relational Database(Mysql)


azkaban 将大多数状态信息都存于 MySQL 中,Azkaban Web Server 和 Azkaban Executor Server 也需要访问 DB。


2、Azkaban Web Server


提供了 Web UI,是 azkaban 的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。


3、Azkaban Executor Server


调度工作流和任务,纪录工作流活任务的日志,之所以将 AzkabanWebServer 和 AzkabanExecutorServer 分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于 Azkaban 系统的升级


2 搭建前准备

2.1 安装整体流程描述

1、 在 mysql 中创建 azkaban 相关的账号,库,表


2、 将 azkaban 的建表脚本导入到数据库中


3、 安装 azkaban-executor- server


4、 安装 azkaban-web-server

2.2 安装版本说明

JDK:jdk1.8.0_77 64 位


MySQL-5.6 以上版本


db 脚本:azkaban-db-0.1.0-SNAPSHOT.tar.gz


执行 Server:azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz


Web Server:azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

2.3 资源下载地址

2.4 本次安装节点说明

本次部署


10.60.247.50 部署 azkaban-web-server


10.60.247.193 部署 azkaban-exec-server


10.60.247.187 部署 azkaban-exec-server


10.60.247.213 为 mysql 节点

3 搭建环境

3.1 安装前准备工作

3.1.1 检查 java 环境(所有节点)

[root@ecs-iov-sw-qdmid-uat-0001 flume]# java -version
复制代码


3.1.2 检查是否有 spark(exec 节点)

[root@ecs-iov-sw-qdmid-uat-0003 ~]# spark-submit --version
复制代码


3.2 导入 azkaban-db 相关脚本

  1. 将 azkaban-db-0.1.0-SNAPSHOT.tar.gz 上传到/app/src/azkaban



  1. 解压 azkaban-db-0.1.0-SNAPSHOT.tar.gz


[root@ecs-iov-sw-qdmid-uat-0001 ~]#  tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
复制代码



其中 create-all-sql-0.1.0-SNAPSHOT.sql 为所有建表语句的合计



  1. 执行建表语句


[hdfs@ecs-iov-sw-qdmid-uat-0001 bin]$ mysql -uazkaban -pAzkaban*123qwe! -h10.60.247.213mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';mysql> GRANT ALL PRIVILEGES ON *.* TO 'azkaban'@'%';mysql> FLUSH PRIVILEGES;mysql> CREATE DATABASE azkaban;mysql> use azkaban;
复制代码



mysql>source /app/src/azkaban/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql
复制代码



mysql> show tables;
复制代码



通过以上流程建表就成功了

3.3 安装 azkaban-exec-server

  1. 将/app/azkaban 目录赋值给 hdfs 用户,并切换到 hdfs


[root@ecs-iov-sw-qdmid-uat-0002 app]# chown -R hdfs:hdfs azkaban/
复制代码



  1. 将 azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 上传到提前规划的节点上,目录为/app/azkaban 并将解压 azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz


[hdfs@ecs-iov-sw-qdmid-uat-0003 azkaban]# tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
复制代码



  1. 修改配置项 conf 目录下的配置文件 azkaban.properties



# Azkaban Personalization Settingsazkaban.name=Seaazkaban.label=Beluga Azkabanazkaban.color=#FF3601azkaban.default.servlet.path=/indexweb.resource.dir=web/default.timezone.id=Asia/Shanghai# Azkaban UserManager classuser.manager.class=azkaban.user.XmlUserManageruser.manager.xml.file=conf/azkaban-users.xml# Loader for projectsexecutor.global.properties=conf/global.propertiesazkaban.project.dir=projects# Velocity dev modevelocity.dev.mode=false# Azkaban Jetty server properties.jetty.use.ssl=falsejetty.maxThreads=25jetty.port=19099# Where the Azkaban web server is locatedazkaban.webserver.url=http://10.60.247.50:19099# mail settingsmail.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=8081job.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/jobtypes# Azkaban mysql settings by default. Users should configure their own username and password.database.type=mysqlmysql.port=3306mysql.host=10.60.247.213mysql.database=azkabanmysql.user=azkabanmysql.password=Azkaban*123qwe!mysql.numconnections=100# Azkaban Executor settingsexecutor.maxThreads=50executor.flow.threads=30executor.props.resolve.overrideExisting.enabled=false
复制代码


\


  1. 启动和关闭


调用启动和关闭脚本需要


启动节点


[hdfs@ecs-iov-sw-qdmid-uat-0002 azkaban-exec-server-0.1.0-SNAPSHOT]$ ./bin/start-exec.sh
复制代码



现在节点已经启动了,但是改节点还是非活跃状态,需要执行一下语句


[hdfs@ecs-iov-sw-qdmid-uat-0002 azkaban-exec-server-0.1.0-SNAPSHOT]$ curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
复制代码



查询日志



关闭节点


[hdfs@ecs-iov-sw-qdmid-uat-0002 azkaban-exec-server-0.1.0-SNAPSHOT]$ ./bin/shutdown-exec.sh
复制代码


3.4 安装 azkaban-web-server

  1. /app/azkaban 目录赋值给 hdfs 用户,并切换到 hdfs 用户


[root@ecs-iov-sw-qdmid-uat-0002 app]# chown -R hdfs:hdfs azkaban/
复制代码



  1. 将 azkaban-web-server-0.1.0-SNAPSHOT.tar.gz 上传到提前规划的节点上,目录为/app/azkaban 并将解压 azkaban-web-server-0.1.0-SNAPSHOT.tar.gz


[hdfs@ecs-iov-sw-qdmid-uat-0001 azkaban]# tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
复制代码



  1. 生成密钥


生成安全认证秘钥:Azkaban 对于安全管理做得非常好,通过 SLA、jetty 等实现安全访问


[hdfs@ecs-iov-sw-qdmid-uat-0001 azkaban-web-server-0.1.0-SNAPSHOT]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
复制代码



Keystore 文件位置



  1. 修改配置项 conf 目录下的配置文件 azkaban.properties



# Azkaban Personalization Settingsazkaban.name=Seaazkaban.label=BelugaAzkaban# Azkaban Personalization Settingsazkaban.name=Seaazkaban.label=BelugaAzkabanazkaban.color=#FF3601azkaban.default.servlet.path=/indexweb.resource.dir=web/default.timezone.id=Asia/Shanghai# Azkaban UserManager classuser.manager.class=azkaban.user.XmlUserManageruser.manager.xml.file=conf/azkaban-users.xml# Loader for projectsexecutor.global.properties=conf/global.propertiesazkaban.project.dir=projects# Velocity dev modevelocity.dev.mode=false# Azkaban Jetty server properties.jetty.use.ssl=falsejetty.maxThreads=25jetty.port=19099#指定keystore文件的位置jetty.keystore=/app/soft/azkaban-web-server-0.1.0-SNAPSHOT/keystore#keystore中的密码jetty.password=123456jetty.keypassword=123456#指定keystore文件的位置jetty.truststore=/app/soft/azkaban-web-server-0.1.0-SNAPSHOT/keystore#keystore中的密码jetty.trustpassword=123456# Azkaban Executor settings# mail settingsmail.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=8081job.failure.email=job.success.email=lockdown.create.projects=falsecache.directory=cache# JMX statsjetty.connector.stats=trueexecutor.connector.stats=true# Azkaban mysql settings by default. Users should configure their own username and password.database.type=mysqlmysql.port=3306mysql.host=10.60.247.213mysql.database=azkabanmysql.user=azkabanmysql.password=Azkaban*123qwe!mysql.numconnections=100#Multiple Executorazkaban.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
复制代码


\


  1. 启动和关闭


执行启动脚本


[hdfs@ecs-iov-sw-qdmid-uat-0001 azkaban-web-server-0.1.0-SNAPSHOT]$ ./bin/start-web.sh
复制代码



执行关闭脚本


[hdfs@ecs-iov-sw-qdmid-uat-0001 azkaban-web-server-0.1.0-SNAPSHOT]$ ./bin/shutdown-web.sh 
复制代码





结束语


如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~

可关注企鹅号【怀瑾握瑜的嘉与嘉】,获取资源下载方式

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

发布
暂无评论
Azkaban 安装文档_Azkaban_怀瑾握瑜的嘉与嘉_InfoQ写作社区