Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。css
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
mysql
其中,azkaban-web-server-2.5.0.tar.gz
是服務器,azkaban-executor-server-2.5.0.tar.gz
是執行服務器,azkaban-sql-script-2.5.0.tar.gz
是執行的sql腳本。web
分別把他們解壓安裝後。咱們還須要在mysql中建立數據庫,而後運行azkaban提供的sql腳原本建立azkaban所須要的表。sql
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)
複製代碼
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
會在當前目錄生成一個keystore
證書文件,固然執行該命令須要你填寫一些信息,好比你的姓名+工做單位等。按照提示填寫便可。[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
複製代碼
這個配置須要給集羣的每一個主機設置,由於任務調度離不開準確的時間。咱們也能夠直接把相關文件拷貝到別的主機做覆蓋。shell
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
複製代碼
/webserver/conf
目錄下的azkaban.properties
(我以前將服務端的解壓文件更名爲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
複製代碼
主要修改時區+mysql配置+SSL密碼和文件路徑+郵箱配置。不貼註釋了,一看就懂。數據庫
/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>
複製代碼
修改/executor/conf
目錄下的azkaban.properties
vim
#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
複製代碼
在webserver/bin
目錄下,執行[root@s166 webserver]# nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
啓動服務。瀏覽器
小技巧:先別記着用nohup執行,否則報錯不可以及時的反饋,應該在嘗試執行經過後再去嘗試用nohup來執行。[root@s166 executor]# bin/azkaban-executor-start.sh
bash
我大概見到的一些報錯是:服務器
在/executor/bin/
目錄下執行[root@s166 webserver]# bin/azkaban-web-start.sh
https://s166:8443/
若是你看到這樣的畫面,證實你錯了,沒有在根目錄下執行,而是習慣性的在bin目錄下執行啓動文件,因此它的不少css都加載不到。
用設置的帳號密碼登陸。
vim command.job
#command.job
type=command
command=echo fantj666
複製代碼
將job資源文件打包成zip文件 zip command.job
經過azkaban的web管理平臺建立project並上傳job壓縮包 首先建立project
# foo.job
type=command
command=echo foo
複製代碼
第二個job:bar.job依賴foo.job
# bar.job
type=command
dependencies=foo
command=echo bar
複製代碼
vim fs.job
# fs.job
type=command
command=/home/fantj/hadoop/bin/hadoop fs -lsr /
複製代碼
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包-上傳-執行-查log