大數據教程(13.3)azkaban簡介&安裝

      上一節介紹了Flume多個agent鏈接配合使用。本節博主將爲小夥伴們介紹azkaban的相關概念、簡單的安裝使用。因爲azkaban使用新版本太耗時間,須要編譯安裝,因此博主這次就使用編譯好的老版本2.5;等所有教程作完後,博主會將各軟件的最新版本的使用安裝在後面補充章節中推出。html

   1、工做流調度器azkabanjava

          概述node

          1.一、爲何須要工做流調度系統mysql

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

                 例如,咱們可能有這樣一個需求,某個業務系統天天產生20G原始數據,咱們天天都要對其進行處理,處理步驟以下所示:
                 一、經過Hadoop先將原始數據同步到HDFS上;
                 二、藉助MapReduce計算框架對原始數據進行轉換,生成的數據以分區表的形式存儲到多張Hive表中;
                 三、須要對Hive中多個表的數據進行JOIN處理,獲得一個明細數據Hive大表;
                 四、將明細數據進行復雜的統計分析,獲得結果報表信息;
                 五、須要將統計分析獲得的結果數據同步到業務系統中,供業務調用使用。git

          1.二、工做流調度實現方式github

                 簡單的任務調度:直接使用linux的crontab來定義;
                 複雜的任務調度:開發調度平臺或使用現成的開源調度系統,好比ooize、azkaban等web

          1.三、常見工做流調度系統ajax

                  市面上目前有許多工做流調度器,在hadoop領域,常見的工做流調度器有Oozie, Azkaban,Cascading,Hamake等sql

          1.四、各類調度工具特性對比

                  下面的表格對上述四種hadoop工做流調度器的關鍵特性進行了比較,儘管這些工做流調度器可以解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面仍是存在顯著的區別,在作技術選型的時候,能夠提供參考

特性

Hamake

Oozie

Azkaban

Cascading

工做流描述語言

XML

XML (xPDL based)

text file with key/value pairs

Java API

依賴機制

data-driven

explicit

explicit

explicit

是否要web容器

No

Yes

Yes

No

進度跟蹤

console/log messages

web page

web page

Java API

Hadoop job調度支持

no

yes

yes

yes

運行模式

command line utility

daemon

daemon

API

Pig支持

yes

yes

yes

yes

事件通知

no

no

no

yes

須要安裝

no

yes

yes

no

支持的hadoop版本

0.18+

0.20+

currently unknown

0.18+

重試支持

no

workflownode evel

yes

yes

運行任意命令

yes

yes

yes

yes

Amazon EMR支持

yes

no

currently unknown

yes

          1.五、Azkaban與Oozie對比

                  對市面上最流行的兩種調度器,給出如下詳細對比,以供技術選型參考。整體來講,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。若是能夠不在乎某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。
                 詳情以下:
                 功能
                 二者都可以調度mapreduce,pig,java,腳本工做流任務
                 二者都可以定時執行工做流任務

                 工做流定義
                 Azkaban使用Properties文件定義工做流
                 Oozie使用XML文件定義工做流     

                 工做流傳參
                 Azkaban支持直接傳參,例如${input}
                 Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)}

                 定時執行
                 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、瀏覽器操做工做流

 2、Azkaban介紹

        Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。
        它有以下功能特色:
               Web用戶界面
               方便上傳工做流
               方便設置任務之間的關係
               調度工做流
               認證/受權(權限的工做)
               可以殺死並從新啓動工做流
               模塊化和可插拔的插件機制
               項目工做區
               工做流和任務的日誌記錄和審計

        Azkaban安裝部署:

        (1) 準備工做

Azkaban Web服務器
azkaban-web-server-2.5.0.tar.gz
Azkaban執行服務器 
azkaban-executor-server-2.5.0.tar.gz
MySQL
目前azkaban的2.5版只支持 mysql,需安裝mysql服務器,本文檔中默認已安裝好mysql服務器,並創建了 root用戶,密碼 123.
下載地址:http://azkaban.github.io/downloads.html

        (2) 安裝

             將安裝文件上傳到集羣,最好上傳到安裝 hive、sqoop的機器上,方便命令的執行,在當前用戶目錄下新建 azkabantools目錄,用於存放源安裝文件.新建azkaban目錄,用於存放azkaban運行程序

             azkaban web服務器安裝:

#上傳解壓azkaban-web-server-2.5.0.tar.gz
命令: 
Alt+p
put *.gz

mkdir azkaban
mv azkaban-* ./azkaban
cd azkaban/
tar -zxvf azkaban-web-server-2.5.0.tar.gz


#將解壓後的azkaban-web-server-2.5.0從新命名 az-server
命令:
mv azkaban-web-2.5.0    az-server

             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從新命名 az-executor
命令:
mv azkaban-executor-2.5.0 az-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-2.5.0/create-all-sql-2.5.0.sql;

             建立SSL配置

[hadoop@centos-aaron-h1 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
輸入密鑰庫口令:  
再次輸入新口令: 
您的名字與姓氏是什麼?
  [Unknown]:  aaron
您的組織單位名稱是什麼?
  [Unknown]:  empire
您的組織名稱是什麼?
  [Unknown]:  empire
您所在的城市或區域名稱是什麼?
  [Unknown]:  shanghai
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  shanghai
該單位的雙字母國家/地區代碼是什麼?
  [Unknown]:  cn
CN=aaron, OU=empire, O=empire, L=shanghai, ST=shanghai, C=cn是否正確?
  [否]:  y

輸入 <jetty> 的密鑰口令
        (若是和密鑰庫口令相同, 按回車):

             完成上述工做後,將在當前目錄生成 keystore 證書文件,將keystore 考貝到 azkaban web服務器根目錄中.如:cp keystore az-server

             配置文件
             注:先配置好服務器節點上的時區
                   一、先生成時區配置文件Asia/Shanghai,用交互式命令 tzselect 便可
                   二、拷貝該時區文件,覆蓋系統本地時區配置

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
sudo date -s '2019-03-07 23:39:46'  
#將時間寫入硬件,重啓後可也能夠生效
sudo sudo hwclock -w

             azkaban web服務器配置
                   進入azkaban web服務器安裝目錄 conf目錄
                   修改azkaban.properties文件
                   命令vi azkaban.properties
                   內容說明以下: 

#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=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
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=192.168.29.131
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456

# Azkaban Executor settings
executor.port=12321

# mail settings
mail.sender=xxxtking@136.com
mail.host=smtp.163.com
mail.user=aaron
mail.password=xxxx                                     
job.failure.email=xxxtking@163.com
job.success.email=xxxtking@163.com

lockdown.create.projects=false

cache.directory=cache

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

#Azkaban
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=192.168.29.131
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
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>

          啓動

           web服務器

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

             bin/azkaban-web-start.sh

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

             或者啓動到後臺

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

           執行服務器

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

             bin/azkaban-executor-start.sh

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

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

 

             效果以下:

   最後寄語,以上是博主本次文章的所有內容,若是你們以爲博主的文章還不錯,請點贊;若是您對博主其它服務器大數據技術或者博主本人感興趣,請關注博主博客,而且歡迎隨時跟博主溝通交流。

相關文章
相關標籤/搜索