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

Azkaban介紹

什麼是azkaban?
一、工做流的做業調度系統
二、經過k、v指令寫法描述工做流節點
三、能夠經過web界面去管理工做流html

Azkaban安裝部署

2.3.1 準備工做

Azkaban Web服務器mysql

azkaban-web-server-2.5.0.tar.gzgit

Azkaban執行服務器 github

azkaban-executor-server-2.5.0.tar.gzweb

 

MySQLsql

目前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 配置文件

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

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

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

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示例

一、建立job描述文件  以.job後綴結尾


vi command.job


 

#command.job

type=command                                                   

command=echo 'hello'

 

 

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


zip command.job


 

 

三、經過azkaban的web管理平臺建立project並上傳job壓縮包

首先建立project

 

 

上傳zip包

 

 

四、啓動執行該job

 

 

 

2.5.2 Command類型多job工做流flow

一、建立有依賴關係的多個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

 

二、將全部job資源文件打到一個zip包中

 

 

 

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

四、啓動工做流flow

 

2.5.3 HDFS操做任務

一、建立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命令操做

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

 

 

三、經過azkaban的web管理平臺建立project並上傳job壓縮包

四、啓動執行該job

 

 

 

2.5.4 MAPREDUCE任務

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

一、建立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

 

 

二、將全部job資源文件打到一個zip包中

 

 

 

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

四、啓動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'

 

二、將全部job資源文件打到一個zip包中

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

四、啓動job

相關文章
相關標籤/搜索