azkaban的部署以及簡單使用

1.工做流調度器的介紹

(1)爲何要使用工做流調度器?

   - 一個完整的數據分析系統一般都是由大量任務單元組成:shell 腳本程序,java 程序,mapreduce 程序、hive 腳本等
   - 各任務單元之間存在時間前後及先後依賴關係
   - 爲了很好地組織起這樣的複雜執行計劃,須要一個工做流調度系統來調度執行 html

(2)常見工做流調度器

  在 hadoop 領域,常見的工做流調度器有 Oozie, Azkaban,Cascading,Hamake 等 。
azkaban的部署以及簡單使用java

(3)Oozie與Azkaban的對比

   目前企業中最流行的兩種調度器是Oozie與Azkaban。總的來講ooize 相比 azkaban 是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。若是能夠不在乎某些功能的缺失,輕量級調度器 azkaban 是很不錯的候選對象。
兩者的區別能夠從如下的幾個方面進行描述:
功能
  二者都可以調度 mapreduce,pig,java,腳本工做流任務二者都可以定時執行工做流任務
工做的定義
   Azkaban 使用 Properties 文件定義工做流
   Oozie 使用 XML 文件定義工做流
工做流傳參
   Azkaban 支持直接傳參,例如${input}
   Oozie 支持參數和 EL 表達式,例如${fs:dirSize(myInputDir)} strust2(ONGL)
定時執行
   Azkaban 的定時執行任務是基於時間的
   Oozie 的定時執行任務基於時間和輸入數據
資源管理
   Azkaban 有較嚴格的權限控制,如用戶對工做流進行讀/寫/執行等操做
   Oozie 暫無嚴格的權限控制
工做流執行
   Azkaban 有兩種運行模式,分別是 solo server mode(executor server 和 web server 部署在同一臺節點)和 multi server mode(executor server 和 web server 能夠部署在不一樣節點)
   Oozie 做爲工做流服務器運行,支持多用戶和多工做流
工做流管理
   Azkaban 支持瀏覽器以及 ajax 方式操做工做流
   Oozie 支持命令行、HTTP REST、Java API、瀏覽器操做工做流mysql

2.Azkaban 安裝部署

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

  • Web 用戶界面
  • 方便上傳工做流
  • 方便設置任務之間的關係
  • 調度任務流
  • 認證/受權
  • 可以殺死並從新執行任務
  • 模塊化和可插拔的插件機制
  • 工做流和任務的日誌記錄審計

Azkaban的實戰安裝
安裝包:
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
① 解壓安裝包github

[root@hadoop03 ~]# tar -zxvf azkaban-web-server-2.5.0.tar.gz -C apps/ azkaban/
[root@hadoop03 ~]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C apps/ azkaban/
[root@hadoop03 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/

②安裝 Azkaban 腳本導入web

[root@hadoop03 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/
#進入MySQL執行腳本:
mysql> create database azkaban; Query OK, 1 row affected (0.01 sec) 

mysql> use azkaban; 
Database changed 

mysql> source /home/hadoop/apps/azkaban/azkaban-script-2.5.0/create-all-sql-2.5.0.sql;

③建立 SSL 配置ajax

#最好是在azkaban 目錄下:
[root@hadoop03 ~]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA

#此命令執行以後會提示輸入當前生成 keystore 的密碼及相應信息,輸入密碼請勞記,信息以下:
azkaban的部署以及簡單使用
而後將在當前目錄生成 keystore 證書文件,將 keystore 拷貝到 azkaban web 服務器根目錄中.如:sql

[root@hadoop03 ~]#cp keystore azkaban/azkaban-web-2.5.0

④修改配置文件shell

#先配置好服務器節點上的時區
先生成時區配置文件 Asia/Shanghai,用交互式命令 tzselect 便可
拷貝該時區文件,覆蓋系統本地時區配置
[hadoop@hadoop03 ~]$ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
#azkaban web 服務器配置進入 azkaban web 服務器安裝目錄 conf 目錄
[hadoop@hadoop03 ~]$ cd apps/azkaban/azkaban-web-2.5.0/conf/

#修改 azkaban.properties 文件數據庫

#用戶配置,具體配置參加下文 
#Loader for projects   # global 配置文件所在位置 
executor.global.properties=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/conf/global.properties azkaban.project.dir=projects 
  #數據庫類型
database.type=mysql
 #端口號
mysql.port=3306       
#數據庫鏈接 IP
mysql.host=hadoop03                                                    
 #數據庫實例名 
mysql.database=azkaban                                                    
 #數據庫用戶名
mysql.user=root                                                                 
#數據庫密碼
mysql.password=root                                                           
  #最大鏈接數 
mysql.numconnections=100                                              

#Velocity dev mode velocity.dev.mode=false 
#Jetty 服務器屬性. 
 #最大線 程數
jetty.maxThreads=25                                                             
 #Jetty SSL 端口
jetty.ssl.port=8443  
 #Jetty 端口 
jetty.port=8081     
 #SSL 文件名
jetty.keystore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore
#SSL 文件密碼
jetty.password=hadoop    
 #Jetty 主密碼 與 keystore 文件相同
jetty.keypassword=hadoop 
 #SSL 文件名 
jetty.truststore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore        
  # SSL 文件密碼 
jetty.trustpassword=hadoop                                                 

# 執行服務器屬性 
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                           #緩存目錄

#進入 azkaban web 服務器 conf 目錄,修改 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>

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

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

#Azkaban JobTypes 插件配置,插件所在位置 
azkaban.jobtype.plugin.dir=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/plugins/jobtypes 

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

#數據庫設置 
 #數據庫類型(目前只支持 mysql)
database.type=mysql  
#數據庫端口號
mysql.port=3306       
#數據庫 IP  地址
mysql.host=hadoop03    
 #數據庫實例名
mysql.database=azkaban                                                  
#數據庫用 戶名
mysql.user=root       
#數據庫密碼
mysql.password=root                                                         
  #最大鏈接數 
mysql.numconnections=100                                                

#執行服務器配置 
#最大線程數 
executor.maxThreads=50                                                     
#端口號(如修改,請與 web 服務中一致)                                                    
executor.port=12321   
 #線程數 
 executor.flow.threads=30

⑤配置環境變量

[hadoop@hadoop03 ~]$  vim /etc/profile
#/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

⑥啓動
#啓動 web 服務器

nohup azkaban-web-start.sh 1>/home/hadoop/azwebstd.out 2>/home/hadoop/azweberr.out &

#啓動執行服務器

nohup azkaban-executor-start.sh 1>/home/hadoop/azexstd.out 2>/home/hadoop/azexerr.out &

⑥驗證是否登陸成功
在瀏覽器中輸入:https://hadoop03:8443/
azkaban的部署以及簡單使用
看到以上界面表示安裝成功!!!!
小編這裏建議將Azkaban 的web、executor配置文件,全部的相對路徑都換成絕對路徑,否則常常會報出文件找不到的問題!!!!

3.Azkaban 安裝部署報錯解決

azkaban的部署以及簡單使用
緣由是:在azkaban的server和executor中缺乏一個叫derby.jar的包
解決:在已經安裝的JDK中:

cp $JAVA_HOME/db/lib/derby.jar $AZKABAN_WEB_HOME/extlib
cp $JAVA_HOME/db/lib/derby.jar $AZKABAN_EXE_HOME/extlib

若是遇到與MySQL的權限問題:
請參考:http://www.javashuo.com/article/p-hgffexae-dd.html 文章。

3.Azkaban 的簡單使用

①建立job :command.job

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

②將 job 資源文件打包
[hadoop hadoop03@~ ]$ zip command.job
③經過 azkaban web 管理平臺建立 project 並上傳壓縮包
azkaban的部署以及簡單使用
azkaban的部署以及簡單使用

azkaban的部署以及簡單使用
azkaban的部署以及簡單使用
azkaban的部署以及簡單使用
azkaban的部署以及簡單使用
azkaban的部署以及簡單使用
azkaban的部署以及簡單使用

相關文章
相關標籤/搜索