目录

一、简介

Azkaban是LinkedIn开源的任务调度框架,采用java编写

Azkaban功能和特点:

  1. 任务的依赖处理
  2. 任务监控,失败告警
  3. 任务流的可视化
  4. 任务权限管理

Azkaban具有轻量可插拔、友好的WebUI、SLA告警、完善的权限控制、易于二次开发等优点,也得到了广泛应用,主要由三部分组成

  • 关系数据库(目前仅支持mysql),用于存储作业/作业流的执行状态信息
  • AzkabanWebServer,web管理服务器,主要负责权限验证、项目管理、作业流下发等工作
  • AzkabanExecutorServer,执行服务器,主要负责作业流/作业的具体执行以及搜集执行日志等工作

作业流执行过程:Webserver会根据搜集起来的Executor的状态选择一个合适的任务运行节点,并将任务推送给该节点,管理并运行该工作流的所有job

二、前置准备

1. 服务分布

Multiple Executor模式,各机器组件分配如下:

机器 组件
azkaban1 azkaban-exec-server、mysql-server
azkaban2 azkaban-exec-server
azkaban3 azkaban-exec-server、azkaban-web-server

2. 安装 jdk

此处使用的是jdk1.8,查看安装详情

3. 配置 mysql

此处使用的是mysql5.7,安装步骤略

# 创建并使用数据库
CREATE DATABASE azkaban;
use azkaban; # 创建用户并授权
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES; # 导入建表语句
source azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;

三、集群部署

1. 下载源码 & 解压

# 下载
wget https://github.com/azkaban/azkaban/archive/3.73.1.tar.gz
# 重命名
mv 3.73.1.tar.gz azkaban-3.73.1.tar.gz
# 解压
tar xvf azkaban-3.73.1.tar.gz

2. 安装所需依赖

yum install -y gcc-c++ git

3. 执行编译

cd azkaban-3.73.1/
# 编译 第一次运行时,此过程时间会比较长
# -x test 表示跳过测试
./gradlew build installDist -x test

看到如下,表示成功

4. 编译后的主要目录:

目录 说明
azkaban-common 常用工具类
azkaban-db 对应的sql脚本
azkaban-exec-server azkaban的executor-server单独模块
azkaban-hadoop-secutity-plugin hadoop有关kerberos插件
azkaban-solo-server web和executor运行在同一进程的项目
azkaban-spi azkaban存储接口以及exception类
azkaban-web-server azkaban的web-server单独模块

5. 拷贝我们所需的文件并解压

# 所需位置新建azkaban目录
mkdir azkaban # copy
cp azkaban-3.73.1/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban/
cp azkaban-3.73.1/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban/
cp azkaban-3.73.1/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban/
cd azkaban/

# 解压
tar xvf azkaban-db-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 # 软链
ln -s azkaban-db-0.1.0-SNAPSHOT azkaban-db
ln -s azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec
ln -s azkaban-web-server-0.1.0-SNAPSHOT azkaban-web

四、集群配置

1. 配置 WebServer

1.1 配置 jetty SSL

cd azkaban-web

# 生成keystore
# 注意开始和结束的时候输入的密码,其他按提示输入即可
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

1.2 修改conf/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.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
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=azkaban1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
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

1.3 配置conf/azkaban-users.xml

我这里新增加了一条admin,具有所有权限

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

1.4 启动 WebServer

注意:执行命令时的目录,否则会找不到某些文件

cd azkaban-web

# 启动
bin/start-web.sh

可以看到如下信息,因为当前还没有 Executors呢

2. 配置 ExecutorsServer

所有的ExecutorsServer服务器均按如下配置即可

2.1 修改conf/azkaban.properties

# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# 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
azkaban.jobtype.plugin.dir=plugins/jobtypes
database.type=mysql
mysql.port=3306
mysql.host=azkaban1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.connector.stats=true
executor.port=12321 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

2.2 启动

注意:执行命令时的目录,否则会找不到某些文件

cd azkaban-exec

# 启动
bin/start-exec.sh

2.3 重新启动WebServer

如果还是看到如下信息:

解决方式:登录azkaban使用的mysql数据库,查看executors表中是否存在active=1的executor,如果没有,修改active字段,而后再次启动即可

修改:

update executors set active = 1 where id = 1;

参考

  1. 官方:https://azkaban.github.io/azkaban/docs/latest/#configuration
  2. https://blog.csdn.net/huohuotu/article/details/77487007
  3. https://blog.csdn.net/hxiaowang/article/details/87809772
  4. https://blog.csdn.net/liu16659/article/details/81367312

Azkaban 3.73.1 集群搭建(Multiple Executor)的更多相关文章

  1. hadoop2.6.0集群搭建

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  2. Shark集群搭建配置

    一.Shark简单介绍 Shark是基于Spark与Hive之上的一种SQL查询引擎,官网的架构图及性能測试图例如以下:(Ps:本人也做了一个性能測试见Shark性能測试报告) 我们涉及到了2个依赖组 ...

  3. Hadoop2.0 HA集群搭建步骤

    上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...

  4. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  5. Redis的搭建和Redis的集群搭建

    1.Redis的官网:https://redis.io/      Redis的测试网站:http://try.redis.io/ 2.参考博客:https://www.cnblogs.com/maf ...

  6. Hadoop+HBase 集群搭建

    Hadoop+HBase 集群搭建 1. 环境准备 说明:本次集群搭建使用系统版本Centos 7.5 ,软件版本 V3.1.1. 1.1 配置说明 本次集群搭建共三台机器,具体说明下: 主机名 IP ...

  7. Hadoop3集群搭建之——hbase安装及简单操作

    折腾了这么久,hbase终于装好了 ------------------------- 上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hado ...

  8. Elasticsearch集群搭建及使用Java客户端对数据存储和查询

    本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...

  9. RabbitMQ之集群搭建

    1.RabbitMQ集群模式RabbitMQ集群中节点包括内存节点(RAM).磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点. 2.普通模式(默认)        对于普通模式,集群中 ...

随机推荐

  1. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  2. uboot初体验-----趣谈nand设备发起的浅显理解

    1 选择Uboot版本号 2 移植uboot至console正常work 3 制造uImage和使用uboot指南 4 写NFC驱动器 5 uboot从nand启动引导系统 1 选择Uboot版本号 ...

  3. 专访Jeffrey Richter:Windows 8是微软的重中之重

    Jeffrey Richter 以其多本 Windows 核心技术的经典著作而闻名,同时,他深入掌握微软的 .NET 等一系列核心技术,他所创办的 Wintellect 公司与微软有密切的合作关系,他 ...

  4. sqlite 初

    1.SQLite是什么 基于文件的轻型数据库 无服务器  零配置  支持事务  开源 2.SQLite 怎么用   2.1 安装 SQLite官网上下载对应的DLL 与工具 配置环境变量 安装完成以后 ...

  5. 在Windows系统上以C++打印出当前活动用户的环境变量

    在Windows系统上以C++打印出当前活动用户的环境变量,代码如下(QT环境): void getEnvironmentVariables() { DWORD sessionId = WTSGetA ...

  6. php判断是否是移动设备

    function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { ...

  7. WPF svg 转 xmal

    原文:WPF svg 转 xmal 今天wpf里面要用矢量图,美工出的是svg格式的,需要将svg格式的转换为xaml 1.第一个尝试是安装Inkscape,这个软件可以直接将svg另存为xaml,但 ...

  8. SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication

    原文:SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication 没有截图: 创建可更新订阅,正常创建了发布,在订阅端创建订阅,最后一步提示完成,却出现了警告: ...

  9. WinForm 清空界面控件值的小技巧

    原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextB ...

  10. GetParent、SetParent、MoveWindow - 获取、指定父窗口和移动窗口,IsChild - 判断两个窗口是不是父子关系

    提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法. //声明: {获取父窗口句柄} GetParent(hWnd: HWND): HWND; ...