天天看点

Azkaban安装部署实战

一、Azkaban安装部署

  1. 下载:
    Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz
    Azkaban Excutor 执行服务器:azkaban-executor-server-2.5.0.tar.gz
    Azkaban 初始化脚本文件:azkaban-sql-script-2.5.0.tar.gz
    下载地址:http://azkaban.github.io/downloads.html
               
  2. 上传:
    将安装文件上传到集群,最好上传到安装 hive、sqoop 的机器上,方便命令
    的执行。并最好同一存放在 apps 目录下,用于存放源安装文件.新建 azkaban
    目录,用于存放 azkaban 运行程序
               
  3. 解压:
    tar -zxvf azkaban-web-server-2.5.0.tar.gz -C apps/ azkaban/
     tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C apps/ azkaban/
     tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/
               
  4. 进入 mysql:
    执行命令:
         create database azkaban;
         use azkaban;
         source /home/hadoop/apps/azkaban/azkaban-script-2.5.0/create-all-sql-2.5.0.sql;
     查看数据库是否创建(初始化):Navicat MySQL
               
  5. 创建SSL配置:
    最好是在 azkaban 目录下:
     执行命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
         Enter keystore password:输入设置密码
         Re-enter new password: 输入设置密码
         What is the two-letter country code for this unit?
         [Unknown]: CN
         Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
         [no]: y
         Enter key password for <jetty>
         (RETURN if same as keystore password):输入设置密码 
         完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 拷贝到 
     azkaban web 服务器根目录中.
         如:cp keystore azkaban/azkaban-web-2.5.0
               
  6. 配置时区:
    1) 先生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可
     2) 拷贝该时区文件,覆盖系统本地时区配置
     sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
               
  7. 修改配置文件:
    1) azkaban web 服务器配置
    
         进入 azkaban web 服务器安装目录 conf 目录,
         修改 azkaban.properties 文件
         进入 azkaban web 服务器 conf 目录,
         修改 azkaban-users.xml
         vi azkaban-users.xml 增加 管理员用户
    
     2) azkaban 执行服务器 executor 配置
    
         进入执行服务器安装目录 conf,
         修改 azkaban.properties
               
azkaban executor 执行服务器
配置文件内容:azkaban.properties

#Azkaban
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes 插件配置,插件所在位置
azkaban.jobtype.plugin.dir=/home/centos/apps/azkaban/azkaban-executor-/plugins/jobtypes

#Loader for projects
executor.global.properties=/home/centos/apps/azkaban/azkaban-executor-/conf/global.properties
azkaban.project.dir=projects

#数据库设置
database.type=mysql #数据库类型(目前只支持 mysql)
mysql.port= #数据库端口号
mysql.host=centos01 #数据库 IP 地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password= #数据库密码
mysql.numconnections= #最大连接数

# 执行服务器配置
executor.maxThreads= #最大线程数
executor.port= #端口号(如修改,请与 web 服务中一致)
executor.flow.threads= #线程数
           
azkaban web 服务器
配置文件内容:azkaban.properties

#Azkaban Personalization Settings
azkaban.name=MyTestAzkaban #服务器 UI 名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI 颜色
azkaban.default.servlet.path=/index
web.resource.dir=/home/centos/apps/azkaban/azkaban-web-/web/ #默认根 web 目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国

#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=/home/centos/apps/azkaban/azkaban-web-/conf/azkaban-users.xml #用户配置,具体配置参加下文

#Loader for projects # global 配置文件所在位置
executor.global.properties=/home/hadoop/apps/azkaban/azkaban-executor-/conf/global.properties
azkaban.project.dir=projects

database.type=mysql #数据库类型
mysql.port= #端口号
mysql.host=hadoop03 #数据库连接 IP
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password= #数据库密码
mysql.numconnections= #最大连接数

# Velocity dev mode
velocity.dev.mode=false
# Jetty 服务器属性.
jetty.maxThreads= #最大线程数
jetty.ssl.port= #Jetty SSL 端口
jetty.port= #Jetty 端口
jetty.keystore=/home/centos/apps/azkaban/azkaban-web-/keystore #SSL 文件名
jetty.password=hadoop #SSL 文件密码
jetty.keypassword=hadoop #Jetty 主密码 与 keystore 文件相同
jetty.truststore=/home/centos/apps/azkaban/azkaban-web-/keystore #SSL 文件名
jetty.trustpassword=hadoop # SSL 文件密码

# 执行服务器属性
executor.port= #执行服务器端口

# 邮件设置(可选项)
[email protected] #发送邮箱
mail.host=smtp.com #发送邮箱 smtp 地址
mail.user=xxxxxxxx #发送邮件时显示的名称
mail.password=********** #邮箱密码
[email protected] #任务失败时发送邮件的地址
[email protected] #任务成功时发送邮件的地址
lockdown.create.projects=false #
cache.directory=cache #缓存目录
           
azkaban web 服务器
配置文件内容: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>
           

8.配置环境变量:

sudo vi /etc/profile
export AZKABAN_WEB_HOME=/home/hadoop/apps/azkaban/azkaban-web-2.5.0
export AZKABAN_EXE_HOME=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0
export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
           

9.启动:

启动 Azkaban Web Server:
    azkaban-web-start.sh
    nohup azkaban-web-start.sh 1>/home/hadoop/azwebstd.out 2>/home/hadoop/azweberr.out &
启动 Azkaban Executor:
    azkaban-executor-start.sh
    运行成为后台服务:
    nohup azkaban-executor-start.sh 1>/home/hadoop/azexstd.out 2>/home/hadoop/azexerr.out &
    启动完成后,在浏览器(建议使用谷歌浏览器)中输入 https://IP:8443,即可
访问azkaban 服务了。在登录中输入刚才新的户用名及密码,点击 login。
           

二、Azkaban实战演示

1.Command 类型单一 job 示例

1) 创建 job 描述文件
    vi command.job
           
#command.job
type=command
command=echo 'hello'
           
2) 将 job 资源文件打包
    zip command.job
3) 通过 azkaban web 管理平台创建 project 并上传压缩包
           

2.Command 类型多 job 工作流 flow

1) 创建有依赖关系的多个 job 描述
    第一个 job:stepone.job
           
# stepone.job
type=command
command=echo stepone
           
第二个 job:steptwo.job 依赖 steptwo.job
           
# steptwo.job
type=command
dependencies=stepone
command=echo steptwo
           
2) 将所有资源打成一个 zip 包
3) 启动执行
           

3.操作 HDFS 任务

1) 创建 job 描述文件
           
# hdfs.job
type=command
command=/app/hadoop/apps/hadoop-2/bin/hadoop fs -mkdir -p /hello/azkaban
           
2) 将 job 资源文件打成 zip 包
3) 创建 project 并上传 zip 包
4) 启动执行
           

4.操作 MapReduce 任务

1) 创建 job 描述文件
           
# mapreduce.job
type=command
command=/home/hadoop/apps/hadoop-2/bin/hadoop jar
hadoop-mapreduce-examples-.jar wordcount /wordcount/input /wordcount/azout
           
2) 将 job 资源文件打成 zip 包
3) 创建 project 并上传 zip 包
4) 启动执行
           

5.Hive 脚本任务

1) 创建 job 描述文件和 hive 脚本
2) Hive 脚本如下
    hivetest.sql
           
use mycar;
drop table aztest;
create table aztest(id int,name string,sex string,age int,deparment string) row format delimited fields
terminated by ',';
load data inpath '/student.txt' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count() from aztest;
           
Job 描述文件:
           
# hivef.job
type=command
command=/root/apps/apache-hive-1-bin/bin/hive -f 'testhive.sql'
           
3) 将所有 job 资源文件打到一个 zip 包中
4) 在 azkaban 的 web 管理界面创建工程并上传 zip 包
5) 启动 job
           

继续阅读