Azkaban是由Linkedin開(kāi)源的一個(gè)批量工作流任務(wù)調(diào)度器昆雀。用于在一個(gè)工作流內(nèi)以一個(gè)特定的順序運(yùn)行一組工作和流程。Azkaban定義了一種KV文件格式來(lái)建立任務(wù)之間的依賴關(guān)系,并提供一個(gè)易于使用的web用戶界面維護(hù)和跟蹤你的工作流井赌。
1. 安裝
準(zhǔn)備工作
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
其中闸翅,azkaban-web-server-2.5.0.tar.gz
是服務(wù)器,azkaban-executor-server-2.5.0.tar.gz
是執(zhí)行服務(wù)器辜伟,azkaban-sql-script-2.5.0.tar.gz
是執(zhí)行的sql腳本氓侧。
2. mysql創(chuàng)建表
分別把他們解壓安裝后。我們還需要在mysql中創(chuàng)建數(shù)據(jù)庫(kù)导狡,然后運(yùn)行azkaban提供的sql腳本來(lái)創(chuàng)建azkaban所需要的表约巷。
mysql -uroot -p
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /home/fantj/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;
mysql> show tables;
+------------------------+
| Tables_in_azkaban |
+------------------------+
| active_executing_flows |
| active_sla |
| execution_flows |
| execution_jobs |
| execution_logs |
| project_events |
| project_files |
| project_flows |
| project_permissions |
| project_properties |
| project_versions |
| projects |
| properties |
| schedules |
| triggers |
+------------------------+
15 rows in set (0.00 sec)
3. 創(chuàng)建SSL配置
1. 執(zhí)行命令keytool -keystore keystore -alias jetty -genkey -keyalg RSA
會(huì)在當(dāng)前目錄生成一個(gè)keystore
證書(shū)文件,當(dāng)然執(zhí)行該命令需要你填寫(xiě)一些信息旱捧,比如你的姓名+工作單位等独郎。按照提示填寫(xiě)即可。
2. 然后把 keystore 考貝到 azkaban web服務(wù)器bin目錄中
4. 配置時(shí)區(qū)
[root@s166 azkaban]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Sat Jul 28 18:29:58 CST 2018.
Universal Time is now: Sat Jul 28 10:29:58 UTC 2018.
Is the above information OK?
1) Yes
2) No
#? 1
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
這個(gè)配置需要給集群的每個(gè)主機(jī)設(shè)置枚赡,因?yàn)槿蝿?wù)調(diào)度離不開(kāi)準(zhǔn)確的時(shí)間氓癌。我們也可以直接把相關(guān)文件拷貝到別的主機(jī)作覆蓋。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@s166 azkaban]# scp /usr/share/zoneinfo/Asia/Shanghai root@s168:/etc/localtime
Shanghai 100% 388 500.8KB/s 00:00
[root@s166 azkaban]# scp /usr/share/zoneinfo/Asia/Shanghai root@s169:/etc/localtime
Shanghai
5. 修改配置
5.1 修改服務(wù)端配置
5.1.1 /webserver/conf
目錄下的azkaban.properties
(我之前將服務(wù)端的解壓文件改名為webserver)
#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=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
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=jiaoroot
jetty.keypassword=jiaoroot
jetty.truststore=keystore
jetty.trustpassword=jiaoroot
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=844072586@qq.com
mail.host=smtp.qq.com
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
主要修改時(shí)區(qū)+mysql配置+SSL密碼和文件路徑+郵箱配置贫橙。不貼注釋了顽铸,一看就懂。
5.1.2. 修改/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">
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
5.2 執(zhí)行服務(wù)器配置
修改/executor/conf
目錄下的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=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
6. 執(zhí)行
6.1 啟動(dòng)web服務(wù)器
在webserver/bin
目錄下料皇,執(zhí)行[root@s166 webserver]# nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
啟動(dòng)服務(wù)谓松。
小技巧:先別記著用nohup執(zhí)行星压,不然報(bào)錯(cuò)不能夠及時(shí)的反饋,應(yīng)該在嘗試執(zhí)行通過(guò)后再去嘗試用nohup來(lái)執(zhí)行鬼譬。[root@s166 executor]# bin/azkaban-executor-start.sh
我大概見(jiàn)到的一些報(bào)錯(cuò)是:
- /bin/目錄下沒(méi)有keystore文件------需要把它復(fù)制到bin下
- 找不到各種配置文件----- 我在配置文件中將這些文件配置成絕對(duì)路徑娜膘。
6.2 啟動(dòng)執(zhí)行服務(wù)器
在/executor/bin/
目錄下執(zhí)行[root@s166 webserver]# bin/azkaban-web-start.sh
6.3 瀏覽器訪問(wèn)https://s166:8443/
如果你看到這樣的畫(huà)面,證明你錯(cuò)了优质,沒(méi)有在根目錄下執(zhí)行竣贪,而是習(xí)慣性的在bin目錄下執(zhí)行啟動(dòng)文件,所以它的很多css都加載不到巩螃。
用設(shè)置的賬號(hào)密碼登錄演怎。
7. Azkaban實(shí)戰(zhàn)
7.1 單一job示例
- 創(chuàng)建job描述文件
vim command.job
#command.job
type=command
command=echo fantj666
將job資源文件打包成zip文件
zip command.job-
通過(guò)azkaban的web管理平臺(tái)創(chuàng)建project并上傳job壓縮包
首先創(chuàng)建project
創(chuàng)建工程
上傳文件
執(zhí)行日志
7.2 多job工作流flow
- 創(chuàng)建有依賴關(guān)系的多個(gè)job描述
第一個(gè)job:foo.job
# foo.job
type=command
command=echo foo
第二個(gè)job:bar.job依賴foo.job
# bar.job
type=command
dependencies=foo
command=echo bar
- 將所有job資源文件打到一個(gè)zip包中
- 上傳zip包并啟動(dòng)
-
查看job log
job list
foo job log
bar job log
7.3 操作hadoop
vim fs.job
# fs.job
type=command
command=/home/fantj/hadoop/bin/hadoop fs -lsr /
- 打包成zip上傳
-
啟動(dòng)job并查看lob
7.4 操作hive
hive腳本test.sql
use default;
drop table aztest;
create table aztest(id int,name string,age int) 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/fantj/hive/bin/hive -f 'test.sql'
打zip包-上傳-執(zhí)行-查log