最近項(xiàng)目遷移到新集群,試試同事推薦的開(kāi)源任務(wù)調(diào)度程序-azkaban(阿茲卡班),沒(méi)看錯(cuò),就是哈利波特里的阿茲卡班,azikaban主要用來(lái)解決hadoop依賴(lài)任務(wù)的執(zhí)行,但是它本身支持linux和java程序,因此適合做小項(xiàng)目的任務(wù)調(diào)度管理程序。
Azkaban官網(wǎng)
它有三個(gè)重要組件:
- 關(guān)系數(shù)據(jù)庫(kù)(目前僅支持mysql)
- web管理服務(wù)器-AzkabanWebServer
-
執(zhí)行服務(wù)器-AzkabanExecutorServer
組件
開(kāi)始
Azkaban有三種運(yùn)行模式:
- solo server mode:最簡(jiǎn)單的模式,數(shù)據(jù)庫(kù)內(nèi)置的H2數(shù)據(jù)庫(kù),管理服務(wù)器和執(zhí)行服務(wù)器都在一個(gè)進(jìn)程中運(yùn)行,任務(wù)量不大項(xiàng)目可以采用此模式。
- two server mode:數(shù)據(jù)庫(kù)為mysql,管理服務(wù)器和執(zhí)行服務(wù)器在不同進(jìn)程,這種模式下,管理服務(wù)器和執(zhí)行服務(wù)器互不影響
- multiple executor mode:該模式下,執(zhí)行服務(wù)器和管理服務(wù)器在不同主機(jī)上,且執(zhí)行服務(wù)器可以有多個(gè)。
我們項(xiàng)目要求不是太高,我這次采用第二種模式,管理服務(wù)器、執(zhí)行服務(wù)器分進(jìn)程,但在同一臺(tái)主機(jī)上。
安裝
azkaban和官方說(shuō)的一樣,簡(jiǎn)單易用,先到官網(wǎng)下載相關(guān)包并解壓,我下載的是:
- azkaban-executor-server-2.5.0.tar.gz(執(zhí)行服務(wù)器)
- azkaban-web-server-2.5.0.tar.gz(管理服務(wù)器)
- azkaban-sql-script-2.5.0.tar.gz(mysql腳本)
- 數(shù)據(jù)庫(kù)安裝配置
- 數(shù)據(jù)庫(kù)創(chuàng)建
<pre>#不一定非要命名為'azkaban'
mysql>CREATE DATABASE azkaban;
</pre>
<pre>#創(chuàng)建用戶(hù)和密碼
mysql>CREATE USER 'username'@'%' IDENTIFIED BY 'password';
</pre>
<pre>#給用戶(hù)相關(guān)權(quán)限
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to '<username>'@'%' WITH GRANT OPTION;
</pre> - 數(shù)據(jù)庫(kù)配置
編輯<code>/etc/my.cnf</code>
<pre>[mysqld]
max_allowed_packet=1024M
</pre> - 重啟服務(wù)器
- 執(zhí)行腳本
執(zhí)行下載包azkaban-sql-script-2.5.0.tar.gz中腳本“create-all-sql” - 檢查下載包web和executor的lib文件下是否有mysql驅(qū)動(dòng),若不存在,則拷貝一個(gè)
- web管理服務(wù)器(azkaban-web-2.5.0)
有幾個(gè)重要目錄和配置文件
| 文件夾 | 解釋 |
|---|---|
| bin | 用來(lái)存放啟動(dòng)和停止腳本 |
| conf | 配置文件,最重要的配置azkaban.properties |
| lib | jar文件,查看是否存在mysql驅(qū)動(dòng) |
| extlib | 擴(kuò)展lib |
| plugins | 擴(kuò)展插件,有hdfs、hive、pig等 |
| web | web目錄 |
配置conf中azkaban.properties,其他默認(rèn)即可
#設(shè)置項(xiàng)目名稱(chēng)
azkaban.name=BigData
#設(shè)置項(xiàng)目副標(biāo)題
azkaban.label=besttone
#一定要設(shè)置為上海,否則按美國(guó)時(shí)間執(zhí)行
default.timezone.id=Asia/Shanghai
database.type=mysql
mysql.port=3306
mysql.host=localhost
#改為自己的數(shù)據(jù)庫(kù)名稱(chēng)
mysql.database=azkaban
#改為自己的數(shù)據(jù)庫(kù)賬號(hào)
mysql.user=azkaban
#改為自己的數(shù)據(jù)庫(kù)密碼
mysql.password=azkaban_abc
mail.sender=email賬號(hào)
mail.host=email服務(wù)器
mail.user=email賬號(hào)
mail.password=email密碼
#Azkaban Jetty 服務(wù)設(shè)置,先安裝此配置,后面再詳細(xì)介紹生產(chǎn)方法.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=web/keystore
jetty.password=besttone
jetty.keypassword=besttone
jetty.truststore=web/truststore
jetty.trustpassword=besttone
jetty ssl配置
- jetty ssl keystore生成
keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg RSA -validity 3560
- 根據(jù)提示輸入相關(guān)信息,我的密碼為besttone,和上面的password對(duì)應(yīng)
keytool -export -alias jetty-azkaban -keystore keystore -rfc -file selfsignedcert.cer
- 過(guò)程中如果要輸入密碼,請(qǐng)輸入之前密碼
keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore
- 這時(shí)候在web目錄下新建key目錄,將生成的keystore,truststore拷貝進(jìn)去
執(zhí)行啟動(dòng)命令
./bin/azkaban-web-start.sh
也可以執(zhí)行nohup,后臺(tái)運(yùn)行
nohup ./bin/azkaban-web-start.sh &
關(guān)閉命令
./bin/azkaban-web-shutdown.sh
訪問(wèn)https://localhost:8443
輸入賬號(hào)和密碼,都是azkaban,如果要更改,請(qǐng)修改conf/azkaban-users.xml文件
至此已經(jīng)可以看到web管理界面了,下面執(zhí)行需要啟動(dòng)執(zhí)行服務(wù)器。
ps:如果本地可以執(zhí)行,遠(yuǎn)程無(wú)法執(zhí)行,看是否遠(yuǎn)程服務(wù)器禁用8443端口,將8443改為8888即可。
3.執(zhí)行服務(wù)器
修改conf/azkaban.properties文件,其他默認(rèn)
default.timezone.id=Asia/Shanghai
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban_abc
執(zhí)行腳本,啟動(dòng)執(zhí)行服務(wù)器
./bin/azkaban-executor-start.sh
也可以執(zhí)行nohup,后臺(tái)運(yùn)行
nohup ./bin/azkaban-executor-start.sh &
關(guān)閉命令
./bin/azkaban-executor-shutdown.sh
4.安裝擴(kuò)展控件
azkaban有很多插件,hdfs、hive、pig等,如有興趣自行安裝,本次項(xiàng)目未用到
