惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 光脚码农

CentOS安装JDK CentOS 7中安装和配置Promethues - 光脚码农 - 博客园 查看和指定SpringBoot内嵌Tomcat的版本 - 光脚码农 - 博客园 Centos7 安装Nodejs SpringBoot实用技巧札记 SQL实用札记【SQL Sever篇】 话说静态构造函数 如何利用正则表达式匹配花括号内的内容 如何为Windows Forms应用程序添加启动参数(Start-Up Parameters) 利用存储过程来重命名SQL Server数据库 .NET批量操作窗口样式 ViewData、ViewBag、TempData、Session的区别与联系 如何为自己的网页实现一个“回到顶部”的链接? 如何获得数据库中所有用户创建的索引 如何为一个类型为Color的属性设置默认值 用BCP从SQL Server 数据库中导出Excel文件 DataGridView如何绑定DataRow对象集合 Const vs. Readonly Windows下Git的安装与配置(Cygwin)
CentOS中安装Azkaban 2.5
光脚码农 · 2019-04-16 · via 博客园 - 光脚码农
必备软件
yum install git -y
单机安装步骤
git clone https://github.com/azkaban/azkaban.git
cd azkaban; ./gradlew build installDist
cd azkaban-solo-server/build/install/azkaban-solo-server; bin/start-solo.sh
# open http://localhost:8081/
bin/shutdown-solo.sh

# 当然,这个也需要你的网络环境比较好,如果是公司网络限制比较多的话,可能出现无法编译的情况,比如无法访问gradle的plugin站点等。
多执行器模式安装
文件下载

方法1:下载azkaban代码,编译。

git clone https://github.com/azkaban/azkaban.git
or
git clone https://gitee.com/mirrors/azkaban.git
cd azkaban; ./gradlew build installDist
cd azkaban-db; ../gradlew build installDist
# 当然,这个也需要你的网络环境比较好,如果是公司网络限制比较多的话,可能出现无法编译的情况,比如无法访问gradle的plugin站点等。

方法2:直接下载别人编译好的版本进行安装

https://pan.baidu.com/s/1tq8FLME2zHR539sTAZUw2A | zkl9

这个共享包里是基于2.5.0的版本,下载下来三个文件:

azkaban-executor-2.5.0.zip azkaban-web-2.5.0.zip azkaban-sql-script-2.5.0.tar.gz

登陆mysql, 设置编码为utf8, 为Azkaban创建数据库, 并授权, 导入脚本

azkaban官方建议使用mysql作为后端的数据存储db,使用如下命令创建azkaban的数据库:

mysql -uroot -p123456;
mysql> CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY  '123456';
GRANT ALL PRIVILEGES ON *.* TO 'azkaban'@'192.168.56.3' IDENTIFIED BY '123456';
flush privileges;
source /usr/local/azkaban/azkaban-sql/create-all-sql-2.5.0.sql;
创建SSL配置
keytool -keystore keystore -alias jetty -genkey -keyalg RSA # (记住密码)
cp keystore /usr/local/azkaban/azkaban-web #将当前目录生成 keystore证书文件拷贝到web服务器根目录中
tzselect #使用交互式命令设置时区(Asia/Shanghai, 选北京就是上海)
输入密钥库口令:  
密钥库口令太短 - 至少必须为 6 个字符
输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
[Unknown]:  cao
您的组织单位名称是什么?
[Unknown]:  parllay
您的组织名称是什么?
[Unknown]:  fenghuotai
您所在的城市或区域名称是什么?
[Unknown]:  beijing
您所在的省/市/自治区名称是什么?
[Unknown]:  beijing
该单位的双字母国家/地区代码是什么?
[Unknown]:  CN
CN=cao, OU=parllay, O=fenghuotai, L=beijing, ST=beijing, C=CN是否正确?[否]:  Y
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #拷贝该时区文件,覆盖系统本地时区配置
zkaban web服务器配置及用户配置, 进入web服务器安装目录conf

web服务器配置如下:

vim 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

database.type=mysql
mysql.port=3306
mysql.host=192.168.33.205
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.port=8081
jetty.keystore=keystore
jetty.password=111111
jetty.keypassword=111111
jetty.truststore=keystore
jetty.trustpassword=111111

# Azkaban Executor settings
executor.port=12321

# mail settings
# 发送邮箱
mail.sender=
#发送邮箱smtp地址
mail.host=
# 任务失败时发送邮件的地址
job.failure.email=
# 任务成功时发送邮件的地址
job.success.email=

lockdown.create.projects=false
cache.directory=cache

用户配置如下:

vim azkaban-users.xml

<azkaban-users>
        <user username="azkaban" password="azkaban" roles="admin" groups="azkaban"/>
        <user username="metrics" password="metrics" roles="metrics"/>
        <!-- 设置登录 https://192.168.56.3:8443的账号和密码 -->
        <user username="admin" password="admin" roles="admin,metrics"/>
        <role name="admin" permissions="ADMIN" />
        <role name="metrics" permissions="METRICS"/>
</azkaban-users>

azkaban executor服务器配置, 进入执行服务器安装目录conf

vim azkaban.properties

#Azkaban
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=192.168.33.205
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

启动各个服务器

azkaban web服务器的启动与关闭, 注意: 只能在web服务器根目录运行

bin/azkaban-web-start.sh
bin/azkaban-web-shutdown.sh
# 如果是正式环境可以采用nohup的方式手动启动

azkaban executor服务器的启动与关闭, 注意: 只能在执行服务器根目录运行

bin/azkaban-executor-start.sh
bin/azkaban-executor-shutdown.sh
# 如果是正式环境可以采用nohup的方式手动启动

登录Web用户界面, 进行操作

网址示例: https://192.168.56.3:8443
image

Azkaban实战

Azkaba内置的任务类型支持 command、java, 我们可以安装python、datax、sqoop等工具,进行扩展。

简单示例, 操作步骤:

创建 job描述文件
command类型单一job示例

vim command.job

# command.job
type=command
command=echo 'hello'

command类型多job工作流flow示例

vim foo.job

# foo.job
type=command
command=echo foo

# bar.job
type=command
dependencies=foo
command=echo bar

HDFS操作任务示例

vim fs.job

# fs.job
type=command
command=hadoop fs -mkdir /azkaban

MapReduce任务示例

vim mrwc.job

# mrwc.job
type=command
# 也可以将jar包放在mrwc.job的同级目录下, 与其一起压缩为zip文件
command=hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input/a.txt /input/output

HIVE脚本任务示例

vim hivef.job vim test.sql

# hivef.job
type=command
command=hive -f 'test.sql'

create database test_db;
将所有 job资源文件打包压缩成 zip文件, 登录 azkaban的 web管理平台, 上传, 执行

启动azkaban遇到问题解决

启动exec-server异常

异常:java.io.FileNotFoundException: conf/global.properties (没有那个文件或目录)
解决方法:vim azkaban.properties 修改 executor.global.properties 为绝对路径

启动exec-web异常

异常:
java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

解决方法:vim azkaban.properties 修改 user.manager.xml.file 为绝对路径

参考资料