探索開源工作流引擎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 部署執行。

 

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