运维开发网

Azkaban2.5.0集群安装

运维开发网 https://www.qedev.com 2020-11-14 12:18 出处:51CTO 作者:一百个小排
一.部署环境本集群azkaban部署模式位分布式安装,webserver在cdh01,executor在cdh01、cdh02、cdh03三台节点,mysql5.7在cdh03,采用的是2.5.0版本。1.注意要点a.mysql数据库是程序指定的版本5.7,且源码中的jdbc以及url都是5.7格式的,注意mysql版本问题b.Azkaban各版本的sql脚本中的建表语句或许会有所差别,2.5.0

一.Azkaban介绍

Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。zkaban的设计首先考虑了可用性。它已经在LinkedIn上运行了几年,并驱动了许多Hadoop和数据仓库流程。

知名度比较高的应该是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。另外一个应用也比较广泛的调度系统是Airflow,但是其开发语言是Python。

1.选择Azkaban的理由

提供功能清晰,简单易用的Web UI界面

提供job配置文件快速建立任务和任务之间的依赖关系

提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop

基于Java开发,代码结构清晰,易于二次开发

2.适用场景

实际项目中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结果,D任务依赖C任务的结果。一般的做法是,开两个终端同时执行A,B,两个都执行完了再执行C,最后再执行D。这样的话,整个的执行过程都需要人工参加,并且得盯着各任务的进度。但是我们的很多任务都是在深更半夜执行的,通过写脚本设置crontab执行。其实,整个过程类似于一个有向无环图(DAG)。每个子任务相当于大任务中的一个流,任务的起点可以从没有度的节点开始执行,任何没有通路的节点之间可以同时执行,比如上述的A,B。总结起来的话,我们需要的就是一个工作流的调度器,而Azkaban就是能解决上述问题的一个调度器。

3.架构

Azkaban在LinkedIn上实施,以解决Hadoop作业依赖问题。我们有工作需要按顺序运行,从ETL工作到数据分析产品。最初是单一服务器解决方案,随着多年来Hadoop用户数量的增加,Azkaban 已经发展成为一个更强大的解决方案。Azkaban总共有三个角色:关系型数据库(MySQL)、AzkabanWebServer、AzkabanExecutorServer。Azkaban使用MySQL存储服务状态,AzkabanWebServer和AzkabanExecutorServer都需要访问MySQL的DB数据库

Azkaban2.5.0集群安装

AzkabanWebServer是所有Azkaban的主要管理器。它处理项目管理,身份验证,调度程序和执行监视。它还用作Web用户界面。 使用Azkaban很容易。 Azkaban使用 .job键值属性文件来定义工作流程中的各个任务,并使用_dependencies_属性来定义作业的依赖关系链。这些作业文件和相关的代码可以存档为 .zip,并通过Azkaban UI或curl通过Web服务器上传。

以前的Azkaban版本(version 3.0之前)在单个服务器中同时具有AzkabanWebServer和AzkabanExecutorServer功能。此后,执行程序已被分离到单独的服务器中。拆分这些服务的原因有很多:方便的扩展Executor的数量,并在失败的情况下可以恢复。分离以后在对Azkaban升级的时候对用户的使用影响很小。

二.部署环境

本集群azkaban部署模式位分布式安装,webserver在cdh01,executor在cdh01、cdh02、cdh03三台节点,mysql5.7在cdh03,采用的是2.5.0版本。

1.注意要点

a.mysql数据库是程序指定的版本5.7,且源码中的jdbc以及url都是5.7格式的,注意mysql版本问题

b.Azkaban各版本的sql脚本中的建表语句或许会有所差别,2.5.0与3.73.1版本所建的表相差很大

c.Webserver配置文件中注意分布式部署所需要的额外配置语句,下文中会提到

d.安装完成后注意启动的脚本选择,默认的脚本选择为start-web.sh,查看此脚本

Azkaban2.5.0集群安装

脚本最后一行是自己修改的,原本的没有最后一行,只有被注释掉的那行,可以发现其启动路径与实际启动路径不相符,可以将此脚本拖到与bin目录同级下启动或者直接启动azkaban-web-start.sh,但可能会出现日志文件打印在控制台的现象,可以指定日志输出路径解决

三.Azkaban2.5.0集群安装

1.建立安装路径

mkdir /data/soft/Azkaban

Azkaban2.5.0集群安装

2.上传解压文件,并改名

cdh01上传webserver和executer的tar包

Azkaban2.5.0集群安装

cdh02上传executer的tar包

Azkaban2.5.0集群安装

cdh03上传sql和executer的tar包,以为mysql安装在cdh03

Azkaban2.5.0集群安装

3.在cdh03安装mysql5.7

进入mysql,并创建azkaban数据库,导入sql脚本

mysql -uroot -p123456

create database azkaban;

use azkaban;

source /opt/module/azkaban/azkaban-2.5.0/create-all-sql2.5.0.sql

4.生成密钥对和证书(cdh01)

Keytool 是 java 数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。

-keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore 文件中)

-genkey(或者-genkeypair) 生成密钥对

-alias 为生成的密钥对指定别名,如果没有默认是 mykey -keyalg 指定密钥的算法 RSA/DSA 默认是 DSA

生成 keystore 的密码及相应信息的密钥库

keytool -keystore keystore -alias jetty - genkey -keyalg RSA

Azkaban2.5.0集群安装

注意: 密钥库的密码至少必须 6 个字符,可以是纯数字或者字母或者数字和字母的组合等等 密钥库的密码最好和的密钥相同,方便记忆

5.将 keystore 拷贝到 azkaban web服务器所在目录中

Azkaban2.5.0集群安装

6.Web 服务器配置(cdh01)

进入 azkaban web 服务器安装目录 conf 目录,打开 azkaban.properties 文件

Azkaban2.5.0集群安装

vim azkaban.properties

并更改配置文件:

Azkaban2.5.0集群安装

Azkaban2.5.0集群安装

7.执行服务器配置(cdh02、cdh03)

进入执行服务器安装目录 conf,打开azkaban.properties

Azkaban2.5.0集群安装

vim azkaban.properties

Azkaban2.5.0集群安装

8.web 服务器用户配置

在 azkaban web 服务器安装目录 conf 目录,按照如下配置修改 azkaban-users.xml 文件, 增加管理员用户。

Azkaban2.5.0集群安装

附:webserver和executor的bin目录和根目录,注意各路径下可能需要自己创建的文件夹

Azkaban2.5.0集群安装

Azkaban2.5.0集群安装

cdh03上:

Azkaban2.5.0集群安装

Azkaban2.5.0集群安装

9.在mysql的azkaban库中的executors表中添加各个执行服务器的ip/域名和端口

Azkaban2.5.0集群安装

四.启动服务

先启动exec-server(执行器),然后启动web-server(web服务)

可以直接执行azkaban-executor-start.sh 和 Azkaban-web-start.sh

启动成功后打开页面:https://cdh01:8443/

https://190.168.3.60:8443/

Azkaban2.5.0集群安装

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号