一、Azkaban概述 Azkaban是一個分布式工作流管理器,在LinkedIn上實現,以解決Hadoop作業依賴性問題。 我們有需要按順序運行的工作,從ETL工作到數據分析產品。 特點: 1)給用戶提供了一個非常友好的可視化界面->web界面 2)非常方便的上傳工作流-》打成壓縮包 3)設置任務間的關系 4)權限設置-》刪庫到跑路 5)模塊化 6)隨時停止和啟動任務 7)可以查看日志記錄 二、與Oozie對比 和Oozie相對比,azkaban是一個輕量級調度工具。 企業應用的功能並非小眾的功能可以使用Azkaban。 1)功能 兩個任務流調度器可以調度使用mr,java,腳本工作流任務 都可以進行定時調度... 2)使用 az直接傳參 Oozie直接傳參,支持EL表達式... 3)定時 az定時執行任務基於時間 Oozie任務基於時間和數據 4)資源 az有嚴格的權限控制 Oozie無嚴格權限控制 三、Azkaban安裝部署 1、准備工作 1)快照 2)上傳安裝包 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 cd /root/hd mkdir azkaban 上傳安裝包到/root/hd/azkaban目錄下 3)解壓重命名 cd /root/hd/azkaban/ 解壓 tar -zxvf azkaban-web-server-2.5.0.tar.gz tar -zxvf azkaban-executor-server-2.5.0.tar.gz tar -zxvf azkaban-sql-script-2.5.0.tar.gz 刪除安裝包 rm -f azkaban-executor-server-2.5.0.tar.gz rm -f azkaban-web-server-2.5.0.tar.gz rm -f azkaban-sql-script-2.5.0.tar.gz 重命名 mv azkaban-executor-2.5.0/ executor mv azkaban-web-2.5.0/ server 4)mysql中azkaban腳本導入 create database azkaban; use azkaban; source /root/hd/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql 2、安裝部署 1)創建SSL(安全連接)配置 服務器需要一個證書 cd /root/hd/azkaban/server keytool -keystore keystore -alias jetty -genkey -keyalg RSA [root@hd09-1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA 輸入密鑰庫口令: 123456(密碼是看不見的) 再次輸入新口令: 123456 您的名字與姓氏是什么? [Unknown]: 您的組織單位名稱是什么? [Unknown]: 您的組織名稱是什么? [Unknown]: 您所在的城市或區域名稱是什么? [Unknown]: 您所在的省/市/自治區名稱是什么? [Unknown]: 該單位的雙字母國家/地區代碼是什么? [Unknown]: CN CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正確? [否]: 是 輸入 <jetty> 的密鑰口令 123456 (如果和密鑰庫口令相同, 按回車): [root@hd09-1 server]# 2)時間同步設置 生成時區文件 tzselect生成 5->9->1->yes 拷貝時區文件 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 集群時間同步 crt中開啟交互窗口 發送 sudo date -s '2018-11-29 20:22:39' 3)修改配置文件 azkaban.properties cd /root/hd/azkaban/server/conf vi azkaban.properties #Azkaban Personalization Settings azkaban.name=Test #服務器 UI 名稱,用於服務器上方顯示的名字 azkaban.label=My Local Azkaban #描述 azkaban.color=#FF3601 #UI 顏色 azkaban.default.servlet.path=/index web.resource.dir=/root/hd/azkaban/server/web/ #默認根 web 目錄 default.timezone.id=Asia/Shanghai #默認時區,已改為亞洲/上海 默認為美國 #Azkaban UserManager class user.manager.class=azkaban.user.XmlUserManager #用戶權限管理默認類 user.manager.xml.file=/root/hd/azkaban/server/conf/azkaban-users.xml #用戶配置 #Loader for projects # global 配置文件所在位置 executor.global.properties=/root/hd/azkaban/executor/conf/global.properties azkaban.project.dir=projects database.type=mysql #數據庫類型 mysql.port=3306 #端口號 mysql.host=hd09-1 #數據庫連接 IP mysql.database=azkaban #數據庫實例名 mysql.user=root #數據庫用戶名 mysql.password=root #數據庫密碼 mysql.numconnections=100 #最大連接數 # Velocity dev mode velocity.dev.mode=false # Jetty 服務器屬性 # Azkaban Jetty server properties. jetty.maxThreads=25 #最大線程數 jetty.ssl.port=8443 #Jetty SSL 端口 jetty.port=8081 #Jetty 端口 jetty.keystore=/root/hd/azkaban/server/keystore #SSL 文件名 jetty.password=123456 #SSL 文件密碼 jetty.keypassword=123456 #Jetty 主密碼 與 keystore 文件相同 jetty.truststore=/root/hd/azkaban/server/keystore #SSL 文件名 jetty.trustpassword=123456 # SSL 文件密碼 # Azkaban Executor settings # 執行服務器屬性 executor.port=12321 #執行服務器端口 # mail settings mail.sender= #發送郵箱 mail.host= #發送郵箱 smtp 地址 job.failure.email= #任務失敗時發送郵件的地址 job.success.email= #任務成功時發送郵件的地址 lockdown.create.projects=false cache.directory=cache #緩存目錄 4)修改配置文件 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> 5)修改配置文件 azkaban.properties cd /root/hd/azkaban/executor/conf vi azkaban.properties #Azkaban default.timezone.id=Asia/Shanghai #時區 # Azkaban JobTypes Plugins #插件配置,插件所在位置 azkaban.jobtype.plugin.dir=/root/hd/azkaban/executor/plugins/jobtypes #Loader for projects executor.global.properties=/root/hd/azkaban/executor/conf/global.properties azkaban.project.dir=projects #數據庫設置 database.type=mysql #數據庫類型(目前只支持 mysql) mysql.port=3306 #數據庫端口號 mysql.host=hd09-1 #數據庫 IP 地址 mysql.database=azkaban #數據庫實例名 mysql.user=root #數據庫用戶名 mysql.password=root #數據庫密碼 mysql.numconnections=100 #最大連接數 # Azkaban Executor settings # 執行服務器配置 executor.maxThreads=50 #最大線程數 executor.port=12321 #端口號(如修改,請與 web 服務中一致) executor.flow.threads=30 #線程數 6)啟動web服務器 cd /root/hd/azkaban/server bin/azkaban-web-start.sh 7)啟動執行器 cd /root/hd/azkaban/executor bin/azkaban-executor-start.sh 8)訪問web https://hd09-1:8443 打開谷歌或是火狐瀏覽器輸入https://IP:8443,此處測試的地址是https://hd09-1:8443,此時可能會打不開界面,點擊高級 點擊繼續前往hd09-1(不安全) 此時會跳到登錄界面,輸入在配置文件azkaban-users.xml,中配置的用戶名密碼admin/admin,點擊登錄即可 9)配置環境變量 vi /etc/profile 在最后面加上 #Azkaban export AZKABAN_WEB_HOME=/root/hd/azkaban/server export AZKABAN_EXE_HOME=/root/hd/azkaban/executor export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin 執行 source /etc/profile 聲明環境變量 此時就可以直接輸入 azkaban-web-start.sh azkaban-executor-start.sh 啟動azkaban了。 四、應用 下面的#后面的是文件名,把每個任務的文件打成zip壓縮包后傳到azkaban頁面中的project中即可執行任務。 1、command類型單一任務案例 # command.job type=command command=echo 'hello world' 2、command類型多個任務案例 # f.job type=command command=echo 'hello' # b.job type=command dependencies=f command=echo 'world' 3、azkaban操作HDFS任務 # hdfs.job type=command command=/root/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban 4、azkaban啟動集群任務 # start.job type=command command=/root/hd/hadoop-2.8.4/sbin/start-dfs.sh 5、azkaban啟動MapReduce程序 # wc.job type=command command=/root/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /azwc/in /azwc/out 6、azkaban啟動Hive程序 # hive.job type=command command=/root/hd/hive/bin/hive -f 'azhive.sql' # azhive.sql use default; drop table aztest; create table aztest(id int,name string) row format delimited fields terminated by ','; load data inpath '/azdata/user.txt' into table aztest; create table azres as select * from aztest; insert overwrite directory '/azdata/userout' select count(1) from aztest;