1. 程式人生 > >工作流調度器azkaban的安裝和使用

工作流調度器azkaban的安裝和使用

用戶名 color smtp mail tex 服務器 重新 sts 建立

為什麽需要工作流調度系統

  • 一個完整的數據分析系統通常都是由大量任務單元組成:

    shell腳本程序,java程序,mapreduce程序、hive腳本等

  • 各任務單元之間存在時間先後及前後依賴關系
  • 為了很好地組織起這樣的復雜執行計劃,需要一個工作流調度系統來調度執行;

作流調度實現方式

簡單的任務調度:直接使用linuxcrontab來定義;

復雜的任務調度:開發調度平臺

        或使用現成的開源調度系統,比如ooize、azkaban等

常見工作流調度系統

市面上目前有許多工作流調度器

hadoop領域,常見的工作流調度器有Oozie, Azkaban

,Cascading,Hamake

ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象

azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。azkaban定義了一種KV文件格式來建立任務之間的依賴關系,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流

azkaban的安裝部署

1、準備工作

Azkaban Web服務器

azkaban-web-server-2.5.0.tar.gz

Azkaban執行服務器

azkaban-executor-server-2.5.0.tar.gz

Azkaban sql腳本插件

azkaban-sql-script-2.5.0.tar.gz

MySQL

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

2、安裝

將安裝文件上傳到集群,最好上傳到安裝 hivesqoop的機器上(hadoop1,方便命令的執行

在當前用戶目錄新建 azkabantools目錄/usr/local/azkabantools,用於存放源安裝文件.新建

azkaban目錄/usr/local/azkaban,用於存放azkaban運行程序

azkaban web服務器安裝

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

命令: tar –zxvf azkaban-web-server-2.5.0.tar.gz -C /usr/local/azkaban

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

命令: mv azkaban-web-server-2.5.0 /usr/local/azkaban

cd /usr/local/azkaban

mv azkaban-web-server-2.5.0 webserver

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 /usr/local/azkaban

cd /usr/local/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 /usr/local/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;

創建SSL配置

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

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

這個命令我在做的時候 進入azkaban目錄下執行

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

輸入keystore密碼: 123456

再次輸入新密碼:

您的名字與姓氏是什麽?

[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 webserver/

配置文件

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

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

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

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

3、查看集群上各機器時鐘是否同步date

date -s ‘2017-05-10 10:07:29’

hwclock -w

第一步是修改時間,第二步是將修改同步到硬件時鐘。

如果只執行第一步,那麽只是當前有效,重啟後將會失效!

azkaban web服務器配置

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

修改azkaban.prope rties文件

命令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=localhost #數據庫連接IP

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

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

mysql.password=admin #數據庫密碼

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 #執行服務器端口

# 郵件設置

[email protected] #發送郵箱

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

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

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

[email protected] #任務失敗時發送郵件的地址

[email protected] #任務成功時發送郵件的地址

lockdown.create.projects=false #

cache.directory=cache : #緩存目錄

azkaban 執行服務器executor配置

進入執行服務器安裝目錄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=192.168.33.201 #數據庫IP地址

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

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

mysql.password=admin #數據庫密碼

mysql.numconnections=100 #最大連接數

# 執行服務器配置

executor.maxThreads=50 #最大線程數

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

executor.flow.threads=30 #線程數

用戶配置

進入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>

3、啟動

web服務器

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

bin/azkaban-web-start.shazaz

:web服務器根目錄運行

技術分享

或者啟動到後臺

nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &

執行服務器

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

bin/azkaban-executor-start.sh

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

技術分享

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

技術分享

技術分享

工作流調度器azkaban的安裝和使用