一、前述

Azkaban是一个工作流调度工具,因为需要各个任务之间有依赖关系,传统的Crontab 任务已经不能满足。

所以需要建立一套工作流引擎。相比Ooize来说,Azkaban的优势是作为一个客户端来提供任务的提交。而Ooize是将任务随机分配到我们的集群环境中。

考虑到常用架构,所以我们选择Azkaban进行工作流引擎。但是网上的搭建教程总会有各种各样的问题,实在令人烦心。折腾了好几天,终于把Azkaban搭建成功,特将详细步骤描述如下。

这里给出一个建议,Azkaban千万不要用最新的搭建,因为你会有意想不到的坑。。

二、具体步骤

1、下载Azkaban的3.25.0的软件包 地址如下:

https://github.com/azkaban/azkaban/releases/tag/3.25.0

2、下载后上传到对应服务器 目录上面。本文地址目录为/mnt/data8/ire/

3、解压目录并重命名

tar - xf azkaban-3.25.0.tar.gz

mv azkaban-3.25.0 azkaban

4、对源码编译

./gradlew build 编译
./gradlew build -x test 忽略测试 (当上一个命令执行不成功再执行这个命令,上个执行成功后就不需要了,因为有的时候总卡在编译测试上面,没办法进行了)

./gradlew installDist 打包

5、新建azkaban编译后的运行目录

我在根目录/mnt/data8/ire/下新建目录azkaban-ire

mkdir azkaban-ire

6、将build后的tar包cp到azkaban-ire目录下

cp azkaban/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban-ire/
cp azkaban/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban-ire/
cp azkaban/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban-ire/
解压对应jar 包 并重命名(强力建议) 因为后面会有一堆绝对路径的引入,名字太长,太麻烦。效果如下

tar -xf azkaban-db-0.1.0-SNAPSHOT.tar.gz

tar -xf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz

tar -xf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

mv azkaban-db-0.1.0-SNAPSHOT azkaban-db

mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server

mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server

7、导入Azkaban-sql

选择一个数据库,或者新建一个数据库为Azkaban 命令如下:

CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT ALL ON azkaban.* to 'azkaban'@'localhost' IDENTIFIED BY 'azkaban';
flush privileges;

use azkaban;
source azkaban-ire/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql

这里建议手动执行吧 执行之前最好删除之前因为其他版本创建的表,如下:

drop table active_executing_flows;
drop table active_sla;
drop table execution_flows;
drop table execution_jobs;
drop table execution_logs;
drop table executor_events;
drop table executors;
drop table project_events;
drop table project_files;
drop table project_flows;
drop table project_permissions;
drop table project_properties;
drop table properties_index ;
drop table projects;
drop table properties;
drop table triggers;
drop table project_flow_files;
drop table project_versions;
drop table qrtz_blob_triggers,qrtz_calendars,qrtz_cron_triggers,qrtz_fired_triggers,qrtz_job_details,qrtz_locks,qrtz_paused_trigger_grps,qrtz_scheduler_state,qrtz_simple_triggers,qrtz_simprop_triggers,qrtz_triggers;

在create-all-sql-0.1.0-SNAPSHOT.sql里面最后一行可以去掉 ,因为已经有这个字段了。

 8、配置azkaban-web-server

 8.1、在azkaban-web-server中新建conf目录,结构如下

mkdir conf

├── conf
│ ├── azkaban-users.xml
│ ├── azkaban.properties
│ ├── global.properties
│ └── log4j.properties

azkaban-users.xml

<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin,metrics" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

azkaban.properties

# Azkaban Personalization Settings
#设置项目名称
azkaban.name=Test
#设置项目副标题
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#这里一定写成绝对路径 否则页面会找不到对应地址
web.resource.dir=/mnt/data8/ire/azkaban-ire/azkaban-web-server/web/
#一定要设置为上海,否则按美国时间执行
default.timezone.id=Asia/Shanghai # Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
#这里一定写成绝对路径
user.manager.xml.file=/mnt/data8/ire/azkaban-ire/azkaban-web-server/conf/azkaban-users.xml # Loader for projects
#这里一定写成绝对路径 否则页面会找不到对应地址
executor.global.properties=/mnt/data8/ire/azkaban-ire/azkaban-web-server/conf/global.properties
azkaban.project.dir=projects database.type=mysql
mysql.port=3306
mysql.host=127.0.0.1
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100 # Velocity dev mode
velocity.dev.mode=false # Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.use.ssl=false
jetty.port=8081
jetty.keystore=keystore
jetty.password=password
jetty.keypassword=keypassword
jetty.truststore=keystore
jetty.trustpassword=password
jetty.excludeCipherSuites=SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA # Azkaban Executor settings
executor.port=12321 # mail settings
#mail.sender=email账号
#mail.host=email服务器
#mail.user=email账号
#mail.password=email密码
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

global.properties (置空即可)

log4j.properties

log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

8.2、生成keystore文件。

在conf目录下执行
keytool -keystore keystore -alias azkaban -genkey -keyalg RSA
具体执行效果如下:
Enter keystore password:    
    Re-enter new password:   
    What is your first and last name?  
      [Unknown]:  azkaban.test.com  
    What is the name of your organizational unit?  
      [Unknown]:  azkaban  
    What is the name of your organization?  
      [Unknown]:  test  
    What is the name of your City or Locality?  
      [Unknown]:  beijing  
    What is the name of your State or Province?  
      [Unknown]:  beijing  
    What is the two-letter country code for this unit?  
      [Unknown]:  CN  
    Is CN=azkaban.test.com, OU=azkaban, O=test, L=beijing, ST=beijing, C=CN correct?  
      [no]:  yes

Enter key password for <azkaban>  
            (RETURN if same as keystore password)

8.3、在azkaban-web-server中新建logs目录,用于记录azkaban运行日志结构如下:

currentpid是在启动的时候生成的,不用管。

9、配置azkaban-exec-server

9.1在azkaban-exec-server中的conf目录下配置 没有conf目录则创建,同时创建对应下面文件

├── conf
│ ├── azkaban.properties
│ ├── log4j.properties

azkaban.properties

# Azkaban
default.timezone.id=Asia/Shanghai # Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes # Loader for projects 绝对路径
executor.global.properties=/mnt/data8/ire/azkaban-ire/azkaban-web-server/conf/global.properties
azkaban.project.dir=projects database.type=mysql
mysql.port=3306
mysql.host=127.0.0.1
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100 # Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30 # JMX stats
jetty.connector.stats=true
executor.connector.stats=true # uncomment to enable inmemory stats for azkaban
#executor.metric.reports=true
#executor.metric.milisecinterval.default=60000

log4j.properties

log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

9.2 在azkaban-exec-server创建plugins/jobtypes 文件夹

mkdir -p plugins/jobtypes

在/jobtypes中生成commonprivate.properties文件 写入

execute.as.user=false

9.3 在azkaban-exec-server创建logs目录

9.4 最终azkaban-exec-server目录层级如下:

上图中圈出的即为创建相应文件夹后的格式,而 executors projects temp目录会在执行任务时创建 不用管。

 10、启动azkaban-web-server

一定要在bin层启动  不在bin目录里面启动  如下:

cd azkaban-web-server/

bin/start-web.sh

11、启动azkaban-exec-server

cd azkaban-exec-server/

bin/start-exec.sh

12、验证效果如下:

13、前端启动host:8081即可

 14、注意千万不要用firefox浏览器打开,用google,否则会出现如下界面。不兼容,导致Job不能查看。

【Azkaban搭建】---Azkaban 3.25.0搭建细则 超实用的更多相关文章

  1. Azkaban 2.5.0 搭建

    一.前言 最近试着参照官方文档搭建 Azkaban,发现文档很多地方有坑,所以在此记录一下. 二.环境及软件 安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: ...

  2. Azkaban 2.5.0 搭建和一些小问题

    安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: /usr/local/ae/ankaban JDK 安装目录: export JAVA_HOME=/usr/ ...

  3. Azkaban 3.73.1 集群搭建(Multiple Executor)

    一.简介 Azkaban是LinkedIn开源的任务调度框架,采用java编写 Azkaban功能和特点: 任务的依赖处理 任务监控,失败告警 任务流的可视化 任务权限管理 Azkaban具有轻量可插 ...

  4. 第九章 搭建Hadoop 2.2.0版本HDFS的HA配置

    Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了.这是 ...

  5. varnish搭建cdn网络-------3.0.5版本

    CDN分发网络CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在 ...

  6. 用开源软件TrinityCore在Debian 10上搭建魔兽世界8.3.0.34220的服务器

    用开源软件TrinityCore在Debian 10上搭建魔兽世界8.3.0.34220的服务器 TrinityCore是魔兽世界(World of Warcraft)的开源的服务端.目前支持魔兽的3 ...

  7. AI识万物:从0搭建和部署手语识别系统 ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 计算机视觉实战系列: https://www.showmeai.tech ...

  8. 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0

    目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...

  9. Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

随机推荐

  1. CentOs 6 或 7 yum安装JDK1.8 (内含报 PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.163.com'"错误解决方案)并分析为什么不能yum安装

    查看JDK的安装路径 # java -version============================查看Linux系统版本信息# cat /etc/redhat-releaseCentOS r ...

  2. MySQL远程链接

    当把本地数据库作为服务器的时候,如果你发现client无法链接到你的数据库服务器,那么有可能是: 1. 当前account没有远程链接权限,如何开通? GRANT ALL PRIVILEGES ON ...

  3. 总结Array类型中常用的方法

    Array类型应该是 ECMAScript 中最常用的类型之一了,并且它定义的数组与其他语言有着相当大的区别.数组是数据的有序集合,我们可以通过下标对指定位置的数据进行读 写:特别的是,在 ECMAS ...

  4. Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息

    客户要求用身份证图片上传获取身份证的详细信息就下来研究了一下(现在的客户真的懒 身份证信息都懒得输入了哈哈...),经过慢慢研究,果然皇天不负有心人搞出来了.这个借助的是腾讯的一个SKD  腾讯优图云 ...

  5. java 回调函数解读

    模块间调用 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等 ...

  6. Jvm虚拟机结构与机制

    JVM(Java Virtual Machine)在研究JVM的过程中会发现,其实JVM本身就是一个计算机体系结构,很多原理和我们平时的硬件.微机原理.操作系统都有十分相似的地方,所以学习JVM本身也 ...

  7. CAS 4.0 单点登录教程

    CAS 单点登录指导文档 1.概述 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所 ...

  8. 关于Linux虚拟化技术KVM的科普 科普三(From OenHan)

    http://oenhan.com/archives,包括<KVM源代码分析1:基本工作原理>.<KVM源代码分析2:虚拟机的创建与运行>.<KVM源代码分析3:CPU虚 ...

  9. 关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)

    另一位大神写到KVM文章,KVM 介绍(1):简介及安装.KVM 介绍(2):CPU 和内存虚拟化.KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtual ...

  10. is not eligible for getting processed by all BeanPostProcessors

    BeanPostProcessor是控制Bean初始化开始和初始化结束的接口.换句话说实现BeanPostProcessor的bean会在其他bean初始化之前完成,BeanPostProcessor ...