Azkaban介紹+安裝部署+實戰案例


Azkaban介紹

什么是azkaban?
1、工作流的作業調度系統
2、通過k、v指令寫法描述工作流節點
3、可以通過web界面去管理工作流

Azkaban安裝部署

2.3.1 准備工作

Azkaban Web服務器

azkaban-web-server-2.5.0.tar.gz

Azkaban執行服務器 

azkaban-executor-server-2.5.0.tar.gz

 

MySQL

目前azkaban只支持 mysql,需安裝mysql服務器,本文檔中默認已安裝好mysql服務器,並建立了 root用戶,密碼 123456.

 

 

下載地址:http://azkaban.github.io/downloads.html

2.3.2 安裝

將安裝文件上傳到集群,最好上傳到安裝 hive、sqoop的機器上,方便命令的執行

在當前用戶目錄下新建 azkabantools目錄,用於存放源安裝文件.新建azkaban目錄,用於存放azkaban運行程序

2.3.3 azkaban web服務器安裝

解壓azkaban-web-server-2.5.0.tar.gz

命令:


tar –zxvf azkaban-web-server-2.5.0.tar.gz


 

將解壓后的azkaban-web-server-2.5.0 移動到 azkaban目錄中,並重新命名 webserver

命令:


mv azkaban-web-server-2.5.0 ../azkaban

        cd ../azkaban

        mv azkaban-web-server-2.5.0  server


 

 

2.3.4 azkaban 執行服器安裝

解壓azkaban-executor-server-2.5.0.tar.gz

命令:


tar –zxvf azkaban-executor-server-2.5.0.tar.gz


 

將解壓后的azkaban-executor-server-2.5.0 移動到 azkaban目錄中,並重新命名 executor

命令:


mv azkaban-executor-server-2.5.0  ../azkaban

cd ../azkaban

mv azkaban-executor-server-2.5.0  executor


 

azkaban腳本導入

解壓: azkaban-sql-script-2.5.0.tar.gz

命令:tar –zxvf azkaban-sql-script-2.5.0.tar.gz

將解壓后的mysql 腳本,導入到mysql中:

進入


mysql

mysql> create database azkaban;

mysql> use azkaban;

Database changed

mysql> source /root/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;


 

 

2.3.5 創建SSL配置

參考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL

命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA

運行此命令后,會提示輸入當前生成 keystore的密碼及相應信息,輸入的密碼請勞記,信息如下:

 

輸入keystore密碼: 

再次輸入新密碼:

您的名字與姓氏是什么?

  [Unknown]: 

您的組織單位名稱是什么?

  [Unknown]: 

您的組織名稱是什么?

  [Unknown]: 

您所在的城市或區域名稱是什么?

  [Unknown]: 

您所在的州或省份名稱是什么?

  [Unknown]: 

該單位的兩字母國家代碼是什么

  [Unknown]:  CN

CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正確嗎?

  [否]:  y

 

輸入<jetty>的主密碼

        (如果和 keystore 密碼相同,按回車): 

再次輸入新密碼:

完成上述工作后,將在當前目錄生成 keystore 證書文件,將keystore 考貝到 azkaban web服務器根目錄中.如:cp keystore azkaban/webserver

 

2.3.6 配置文件

注:先配置好服務器節點上的時區

1、先生成時區配置文件Asia/Shanghai,用交互式命令 tzselect 即可

2、拷貝該時區文件,覆蓋系統本地時區配置

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

 

 

azkaban web服務器配置

進入azkaban web服務器安裝目錄 conf目錄

 

v  修改azkaban.properties文件

命令


vi azkaban.properties


 

內容說明如下:

#Azkaban Personalization Settings

azkaban.name=Test                           #服務器UI名稱,用於服務器上方顯示的名字

azkaban.label=My Local Azkaban                               #描述

azkaban.color=#FF3601                                                 #UI顏色

azkaban.default.servlet.path=/index                         #

web.resource.dir=web/                                                 #默認根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    # global配置文件所在位置

azkaban.project.dir=projects                                                #

 

database.type=mysql                                                              #數據庫類型

mysql.port=3306                                                                       #端口號

mysql.host=hadoop-001                                                      #數據庫連接IP

mysql.database=azkaban                                                       #數據庫實例名

mysql.user=root                                                                 #數據庫用戶名

mysql.password=123456                                                          #數據庫密碼

mysql.numconnections=100                                                  #最大連接數

 

# Velocity dev mode

velocity.dev.mode=false

# Jetty服務器屬性.

jetty.maxThreads=25                                                               #最大線程數

jetty.ssl.port=8443                                                                   #Jetty SSL端口

jetty.port=8081                                                                         #Jetty端口

jetty.keystore=keystore                                                          #SSL文件名

jetty.password=123456                                                             #SSL文件密碼

jetty.keypassword=123456                                                      #Jetty主密碼 與 keystore文件相同

jetty.truststore=keystore                                                                #SSL文件名

jetty.trustpassword=123456                                                   # SSL文件密碼

 

# 執行服務器屬性

executor.port=12321                                                               #執行服務器端口

 

# 郵件設置

mail.sender=xxxxxxxx@163.com                                       #發送郵箱

mail.host=smtp.163.com                                                       #發送郵箱smtp地址

mail.user=xxxxxxxx                                       #發送郵件時顯示的名稱

mail.password=**********                                                 #郵箱密碼

job.failure.email=xxxxxxxx@163.com                              #任務失敗時發送郵件的地址

job.success.email=xxxxxxxx@163.com                            #任務成功時發送郵件的地址

lockdown.create.projects=false                                           #

cache.directory=cache                                                            #緩存目錄

 

 

v  azkaban 執行服務器配置

進入執行服務器安裝目錄conf,修改azkaban.properties


vi azkaban.properties


 

#Azkaban

default.timezone.id=Asia/Shanghai                                              #時區

 

# Azkaban JobTypes 插件配置

azkaban.jobtype.plugin.dir=plugins/jobtypes                   #jobtype 插件所在位置

 

#Loader for projects

executor.global.properties=conf/global.properties

azkaban.project.dir=projects

 

#數據庫設置

database.type=mysql                                                                       #數據庫類型(目前只支持mysql)

mysql.port=3306                                                                                #數據庫端口號

mysql.host=hadoop-001                                                                     #數據庫IP地址

mysql.database=azkaban                                                                #數據庫實例名

mysql.user=root                                                                         #數據庫用戶名

mysql.password=123456                                                         #數據庫密碼

mysql.numconnections=100                                                           #最大連接數

 

# 執行服務器配置

executor.maxThreads=50                                                                #最大線程數

executor.port=12321                                                               #端口號(如修改,請與web服務中一致)

executor.flow.threads=30                                                                #線程數

 

 

v  用戶配置

進入azkaban web服務器conf目錄,修改azkaban-users.xml


vi 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>

 

 

2.4啟動

2.4.1 web服務器

在azkaban web服務器目錄下執行啟動命令


bin/azkaban-web-start.sh


 

注:在web服務器根目錄運行

 

2.4.2執行服務器

在執行服務器目錄下執行啟動命令


bin/azkaban-executor-start.sh ./


 

注:只能要執行服務器根目錄運行

 

啟動完成后,在瀏覽器(建議使用谷歌瀏覽器)中輸入https://服務器IP地址:8443 ,即可訪問azkaban服務了.在登錄中輸入剛才新的戶用名及密碼,點擊 login.

 

Command類型單一job示例

1、創建job描述文件  以.job后綴結尾


vi command.job


 

#command.job

type=command                                                   

command=echo 'hello'

 

 

2、將job資源文件打包成zip文件


zip command.job


 

 

3、通過azkaban的web管理平台創建project並上傳job壓縮包

首先創建project

 

 

上傳zip包

 

 

4、啟動執行該job

 

 

 

2.5.2 Command類型多job工作流flow

1、創建有依賴關系的多個job描述

第一個job:foo.job

# foo.job

type=command

command=echo foo

第二個job:bar.job依賴foo.job

# bar.job

type=command

dependencies=foo

command=echo bar

 

2、將所有job資源文件打到一個zip包中

 

 

 

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動工作流flow

 

2.5.3 HDFS操作任務

1、創建job描述文件

#fs.job

type=command

command=echo "start execute"

command.1=/var/local/hadoop/bin/hadoop fs -mkdir /azkaban

command.2=/var/local/hadoop/bin/hadoop fs -put /root/zk.log /azkaban

 

 

command后面可以加上一個數字! 表現形式為command.N

表示可以執行多個command命令操作

2、將job資源文件打包成zip文件

 

 

3、通過azkaban的web管理平台創建project並上傳job壓縮包

4、啟動執行該job

 

 

 

2.5.4 MAPREDUCE任務

Mr任務依然可以使用command的job類型來執行

1、創建job描述文件,及mr程序jar包(示例中直接使用hadoop自帶的example jar)

# mrwc.job

type=command

command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop  jar hadoop-mapreduce-examples-2.6.1.jar wordcount /wordcount/input /wordcount/azout

 

 

2、將所有job資源文件打到一個zip包中

 

 

 

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動job

2.5.5 HIVE腳本任務

l  創建job描述文件和hive腳本

Hive腳本: test.sql

use default;

drop table aztest;

create table aztest(id int,name string) row format delimited fields terminated by ',';

load data inpath '/aztest/hiveinput' into table aztest;

create table azres as select * from aztest;

insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

Job描述文件:hivef.job

# hivef.job

type=command

command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'

 

2、將所有job資源文件打到一個zip包中

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動job

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM