目錄
Azkaban的部署及應用
Azkaban是由Linkedin公司推出的一個批量工作流任務調度器,主要用於在一個工作流內以一個特定的順序運行一組工作和流程,它的配置是通過簡單的key:value對的方式,通過配置中的dependencies 來設置依賴關係。Azkaban使用job配置文件建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
Azkaban的特點
- 兼容任何版本的hadoop
- 易於使用的Web用戶界面
- 簡單的工作流的上傳
- 方便設置任務之間的關係
- 調度工作流
- 模塊化和可插拔的插件機制
- 認證/授權(權限的工作)
- 能夠殺死並重新啓動工作流
- 有關失敗和成功的電子郵件提醒
Azkaban的架構
Azkaban由三個關鍵組件構成:
- Azkaban Web Server:Azkaban Web Server是整個Azkaban工作流系統的主要管理者,它用戶登錄認證、負責project管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。
- Azkaban Executor Server:負責具體的工作流的提交、執行,它們通過mysql數據庫來協調任務的執行。
- 關係型數據庫(MySQL):存儲大部分執行流狀態,Azkaban Web Server和Azkaban Executor Server都需要訪問數據庫。
Azkaban的安裝
Azkaban的部署
(1)將Azkaban Web服務器、Azkaban執行服務器、Azkaban的sql執行腳本上傳到集羣,並且解壓縮:下載地址。
(2)對解壓縮之後的文件夾進行重命名:
(3)azkaban腳本導入
azkaban就安裝成功了。
生成密鑰庫
Keytool是java數據證書的管理工具,使用戶能夠管理自己的公/私鑰對及相關證書。
使用以下命令生成密鑰庫:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
-
-keystore 指定密鑰庫的名稱及位置
-
-genkey 在用戶主目錄中創建一個默認文件".keystore"
-
-alias 對我們生成的.keystore 進行指認別名;如果沒有默認是mykey
-
-keyalg 指定密鑰的算法 RSA/DSA 默認是DSA
我們可以使用help命令來查看keytool的參數:
還有一些參數有默認值:
-alias |
“mykey” |
-keyalg |
“DSA” 使用-genkeypair命令時 |
“DES” 使用-genseckey命令時 |
|
-keysize |
2048 使用 –genkeypair命令,並且-keyalg選項是”RSA”時 |
1024 使用 –genkeypair命令,並且-keyalg選項是”DSA”時 |
|
256 使用 –genkeypair命令,並且-keyalg選項是”EC”時 |
|
56 使用 –genseckey 命令,並且-keyalg選項是”DES”時 |
|
168 使用 –genseckey 命令,並且-keyalg選項是”DESede”時 |
|
-validity |
90 |
-keystore |
默認的的文件名是 .keystore ,是一個隱藏文件。 |
-storetype |
默認值java.security中配置的,SUN指定的是JKS,可以人爲修改 |
-file |
如果是寫,值爲stout,如果是讀,值爲stdin |
-protected |
false |
-sigalg |
SHA1withDSA 如果生成KeyPair使用的時DSA算法 |
SHA256withRSA 如果生成KeyPair使用的時RSA算法 |
|
SHA256withECDSA 如果生成KeyPair使用的時EC算法 |
生成密鑰庫如下:
將keystore 拷貝到 azkaban web服務器根目錄中
時間同步設置
因爲許多job涉及到定時操作,所以對於一個集羣,要求服務器之間的時間是同步的。
檢查一下:
我的集羣時間是同步的,如果不同步,可以參考這篇文章進行設置。
配置文件
Web服務器配置
(1)進入azkaban web服務器server安裝目錄的conf目錄下,修改azkaban.properties文件:
#Azkaban Personalization Settings
#服務器UI名稱,用於服務器上方顯示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI顏色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#默認web server存放web文件的目錄
web.resource.dir=/opt/module/azkaban/server/web/
#默認時區,已改爲亞洲/上海 默認爲美國
default.timezone.id=Asia/Shanghai
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
#用戶權限管理默認類(絕對路徑)
user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml
#Loader for projects
#global配置文件所在位置(絕對路徑)
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
#數據庫類型
database.type=mysql
#端口號
mysql.port=3306
#數據庫連接IP
mysql.host=bigdata112
#數據庫實例名
mysql.database=azkaban
#數據庫用戶名
mysql.user=root
#數據庫密碼
mysql.password=000000
#最大連接數
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
# Jetty服務器屬性.
#最大線程數
jetty.maxThreads=25
#Jetty SSL端口
jetty.ssl.port=8443
#Jetty端口
jetty.port=8081
#SSL文件名(絕對路徑)
jetty.keystore=/opt/module/azkaban/server/keystore
#SSL文件密碼
jetty.password=000000
#Jetty主密碼與keystore文件相同
jetty.keypassword=000000
#SSL文件名(絕對路徑)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL文件密碼
jetty.trustpassword=000000
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
(2)在azkaban web服務器server目錄下的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,metrics" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
標紅處就是登陸web頁面時的用戶名和密碼。
執行服務器配置
(1)進入執行executor服務器安裝目錄conf路徑下,修改azkaban.properties:
#Azkaban
#時區
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=bigdata112
mysql.database=azkaban
mysql.user=root
mysql.password=000000
mysql.numconnections=100
# Azkaban Executor settings
#最大線程數
executor.maxThreads=50
#端口號(如修改,請與web服務中一致)
executor.port=12321
#線程數
executor.flow.threads=30
啓動服務器
(1)啓動執行服務器
注意:先執行executor,再執行web,避免Web Server會因爲找不到執行器啓動失敗。
bin/azkaban-executor-start.sh
(2)啓動web服務器
bin/azkaban-web-start.sh
(3)在瀏覽器中訪問https://服務器IP地址:8443
出現如上畫面,配置成功。