探索開源工作流引擎Azkaban在MRS中的實踐

語言: CN / TW / HK
摘要:本文主要介紹如何在華為雲上從0-1搭建azkaban並指導用户如何提交作業至MRS。

本文分享自華為雲社區《開源工作流引擎Azkaban在MRS中的實踐》,作者:啊喔YeYe。

環境輸入

實踐版本:Apache azkaban 4.0.0 (以單機版舉例,集羣版本配置過程類似),MRS 3.1.0 普通集羣。

Azkaban 插件地址
Azkaban 官網
Azkaban 源碼地址

安裝azkaban-solo-server

Azkaban不提供二進制包,需要用户下載源碼編譯打包,獲取到“azkaban-solo-server.zip”和“azkaban-db.zip”。

1、環境準備。

  • 在華為雲購買Linux彈性雲服務器ECS,用於安裝運行MRS集羣客户端和Azkaban,並綁定彈性公網IP。
  • 在彈性雲服務器ECS上安裝運行MRS集羣客户端,例如安裝目錄為“/opt/client”。
  • 準備數據表,參考MySQL教程。
  • 安裝MySQL並授予本機訪問權限。注意:Azkaban 4.0.0版本默認適配MySQL 5.1.28版本。
  • 創建Azkaban數據庫,解壓“azkaban-db.zip”獲取“create-all-sql-*.sql”,並初始化。

2、上傳安裝包並解壓

  • 上傳“azkaban-solo-server.zip”至“/opt/azkaban”目錄
  • 執行以下命令解壓並刪除安裝包
unzip azkaban-solo-server.zip
rm -f unzip azkaban-solo-server.zip

3、修改配置文件“azkaban-solo-server/conf/azkaban.properties”

配置端口根據實際情況修改,“jetty.port”和“mysql.port”端口號可使用默認值

jetty.port=8081 
database.type=mysql 
mysql.port=3306 
mysql.host=x.x.x.x 
mysql.database=azkaban 
mysql.user=xxx 
mysql.password=xxx

4、啟動azkaban-solo-server

source /opt/client/bigdata_env
cd /opt/azkaban/azkaban-solo-server
sh bin/start-solo.sh

5、訪問Azkaban WEB UI

在瀏覽器輸入“http://ECS彈性IP:port”網址,進入Azkaban WebUI登錄界面,輸入用户信息登錄Azkaban服務。

説明:

默認端口(port):8081;
用户名/密碼:azkaban/azkaban;
用户賬號配置文件: /opt/azkaban/azkaban-solo-server/conf/azkaban-users.xml

azkaban-hdfs-viewer plugin配置指導

連接HDFS需要用户下載源碼編譯獲取“az-hdfs-viewer.zip”,並已完成安裝azkaban-solo-server。

1、環境準備

  • 配置Azkaban用户,添加supergroup用户組授予訪問HDFS權限
  • 在HDFS的配置文件“core-stie.xml”中增加Azkaban代理用户
    a. 登錄Manager頁面,選擇“集羣 > 服務 > HDFS > 配置 > 全部配置 > HDFS(服務) > 自定義”
    b. 在參數文件“core-site.xml”中添加如下配置項:

c. 配置完成後,單擊左上角“保存”
d. 選擇“概覽 > 更多 > 重啟服務”輸入密碼後重啟HDFS服務

2、上傳安裝包並解壓

  • 上傳“az-hdfs-viewer.zip”至“/opt/azkaban/azkaban-solo-server/plugins/viewer”目錄
  • 執行以下命令解壓並刪除安裝包
unzip az-hdfs-viewer.zip
rm -f az-hdfs-viewer.zip
  • 重命名解壓後的文件名為"hdfs"
    mv az-hdfs-viewer hdfs

3、修改並保存配置文件

  • 修改"azkaban-solo-server/plugins/viewer/hdfs/conf/plugin.properties"文件中的代理用户為步驟1中配置的Azkaban代理用户。修改"execute-as-user"的存放目錄為Azkaban安裝目錄,如"opt/azkaban/azkaban-solo-server"。
viewer.name=HDFS 
viewer.path=hdfs 
viewer.order=1 
viewer.hidden=false 
viewer.external.classpaths=extlib/* 
viewer.servlet.class=azkaban.viewer.hdfs.HdfsBrowserServlet 
hadoop.security.manager.class=azkaban.security.HadoopSecurityManager_H_2_0 
azkaban.should.proxy=false 
proxy.user=azkaban   // mrs集羣中配置的azkaban代理用户名 
allow.group.proxy=true 
file.max.lines=1000 
#Specifying the error message we want user to get when they don't have permissionsviewer.access_denied_message=The folder you are trying to access is protected. 
execute.as.user=false 
// execute-as-user存放目錄 
azkaban.native.lib=/opt/azkaban/azkaban-solo-server

若不存在該文件需手動創建並配置以上內容

4、拷貝HDFS插件所需包至"/opt/azkaban/azkaban-solo-server/extlib"目錄

cp /opt/client/HDFS/hadoop/share/hadoop/hdfs/*.jar /opt/azkaban/azkaban-solo-server/extlib
cp /opt/client/HDFS/hadoop/share/hadoop/client/hadoop-client-api-3.1.1-mrs-2.0.jar /opt/azkaban/azkaban-solo-server/extlib
cp /opt/client/HDFS/hadoop/share/hadoop/common/*.jar /opt/azkaban/azkaban-solo-server/extlib

不同MRS版本所需Hadoop相關版本不同,通過find /opt/client查詢目

5、檢查目錄結構

目錄結構應當為:

- azkaban-solo-server     
- bin    
- conf     
- extlib (hadoop相關插件第三方包)     
- lib     
- logs     
- plugins 
 - jobtypes(job插件目錄) 
   - commonprivate.properties 
   - hive 
     - plugin.properties 
     - private.properties 
   - hadoopJava 
     - plugin.properties 
     - private.properties       
 - viewer            
   - hdfs                 
     - conf                      
       - plugin.properties                 
   - lib (az-hdfs-viewer.zip解壓後的lib)     
- temp     
- web

6、重啟Azkaban-solo-server服務

cd /opt/azkaban/azkaban-solo-server
sh bin/shutdown-solo.sh
sh bin/start-solo.sh

7、訪問HDFS Browser

  • 在瀏覽器輸入“http://ECS彈性IP:8081”網址,進入Azkaban WebUI登錄界面,輸入用户信息登錄Azkaban服務
  • 單擊"HDFS"

plugins-jobtypes hadoop-job 部署運行

安裝azkaban-solo-server完成後,再部署驗證hadoop-job

1、環境準備

2、上傳插件配置文件

  • 解壓"azkaban-plugins-3.0.0.zip" 獲取"azkaban-plugins-3.0.0\plugins\jobtype\jobtypes"下"hadoopJava"文件夾
  • 將“hadoopJava”文件夾上傳至“/plugin”目錄。目錄不存在則需新建

3、修改配置文件"azkaban-solo-server/plugins/jobtypes/commonprivate.properties"

# set execute-as-user 
execute.as.user=false 

hadoop.security.manager.class=azkaban.security.HadoopSecurityManager_H_2_0 
azkaban.should.proxy=false 
obtain.binary.token=false 
proxy.user=azkaban // MRS集羣中配置的Azkaban代理用户名 
allow.group.proxy=true 
// execute-as-user存放目錄 
azkaban.native.lib=/opt/azkaban/azkaban-solo-server 

# hadoop 
hadoop.home=/opt/client/HDFS/hadoop   //opt/client為MRS集羣客户端安裝目錄 
hive.home=/opt/client/Hive/Beeline 
spark.home=/opt/client/Spark/spark 
hadoop.classpath=${hadoop.home}/etc/hadoop,${hadoop.home}/share/hadoop/common/*,${hadoop.home}/share/hadoop/common/lib/*,${hadoop.home}/share/hadoop/hdfs/*,${hadoop.home}/share/hadoop/hdfs/lib/*,${hadoop.home}/share/hadoop/yarn/*,${hadoop.home}/share/hadoop/yarn/lib/*,${hadoop.home}/share/hadoop/mapreduce/*,${hadoop.home}/share/hadoop/mapreduce/lib/* 
jobtype.global.classpath=${hadoop.home}/etc/hadoop,${hadoop.home}/share/hadoop/common/*,${hadoop.home}/share/hadoop/common/lib/*,${hadoop.home}/share/hadoop/hdfs/*,${hadoop.home}/share/hadoop/hdfs/lib/*,${hadoop.home}/share/hadoop/yarn/*,${hadoop.home}/share/hadoop/yarn/lib/*,${hadoop.home}/share/hadoop/mapreduce/*,${hadoop.home}/share/hadoop/mapreduce/lib/*

4、示例程序驗證

  • 準備測試數據"input.txt"文件,文件內容可參考如下格式進行自定義,存放路徑如"/opt/input.txt"
Ross    male    33  3674 
Julie   male    42  2019 
Gloria  female  45  3567 
Carol   female  36  2813
  • 通過HDFS客户端將測試數據"input.txt"上傳至"hdfs /tmp/azkaban_test"
    a. 以客户端安裝用户,登錄安裝客户端的節點
    b. 執行以下命令,切換到客户端安裝目錄 cd /opt/client
    c. 執行以下命令配置環境變量 source bigdata_env
    d. 執行HDFS Shell命令上傳文件 hdfs dfs -put /opt/input.txt /tmp/azkaban_test
  • 用户在本地編寫並保存“wordcount.job”文件,內容如下
type=hadoopJava 
job.extend=false 
job.class=azkaban.jobtype.examples.java.WordCount 
classpath=./lib/*,/opt/azkaban-solo-server-0.1.0-SNAPSHOT/lib/* 
force.output.overwrite=true 
input.path=/tmp/azkaban_test 
output.path=/tmp/azkaban_test_out
  • 在瀏覽器輸入“http://ECS彈性IP:port”網址,進入Azkaban WebUI登錄界面,輸入用户信息登錄Azkaban服務,提交job運行驗證

Spark command job—參考客户端命令

spark任務有兩種運行方式,一種是command方式,另一種是spark jobtype方式。

  1. Command方式:需要指定spark_home為/opt/client/Spark/spark/
    在MRS集羣客户端節點可以通過echo $SPARK_HOME獲取實際Spark安裝地址。
    設置azkanban所在ECS全局環境變量,添加source {MRS客户端}後需要重啟azkaban才可生效
  2. jobtype方式:參考plugins-jobtypes hadoop-job 部署運行。

 

點擊關注,第一時間瞭解華為雲新鮮技術~