Azkaban-2.5及Plugins的安裝配置

  Azkaban是由LinkedIn開發的調度工具,可以用於調度Hadoop中的相互依賴的Job。有時候,在Hadoop集羣中運行的Job是相互依賴的,某些任務需要順序的執行,這種場景下使用Azkaban能夠很好的解決問題。
  Azkaban有三個重要的組件構成:

  • 關係型數據庫(MySQL)
  • AzkabanWebServer
  • AzkabanExecutorServer

      這三個組件的關係如下:
      這裏寫圖片描述
      本文主要是爲了快速的搭建一個可用的Azkaban系統,不會對各組件的作用和實現原理做過多分析。
      Azkaban有三種安裝部署模式,本文選擇的是將WebServer和ExecutorServer分開部署的模式。

一、組件下載

  上文中提到,Azkaban系統有三個組件,在後面還會爲Azkaban安裝一些插件。

1、MySQL腳本

azkaban-sql-script-2.5.0.tar.gz

2、Azkaban Web Server

azkaban-web-server-2.5.0.tar.gz

3、Azkaban Executor Server

azkaban-executor-server-2.5.0.tar.gz

4、Azkaban Plugins

二、環境準備

  在接下來的安裝中,使用到兩臺機器,機器列表和各組件的安裝位置如下表:

服務名 機器名
MySQL m000
Executor Server m001
Web Server client

  Executor Server和Web Server都安裝在/usr/local路徑下,以下都用$AK_HOME代替。
  

三、Azkaban安裝

1、MySQL

  解壓縮前面下載的azkaban-sql-script-2.5.0.tar.gz,執行其中的create-all-sql-2.5.0.sql文件,建好Azkaban需要用到的表。

2、Azkaban Web Server

(1)將azkaban-web-server-2.5.0.tar.gz在client的/usr/local路徑下解壓縮
  azkaban-web-server解壓縮後的目錄結構如下圖所示:
  這裏寫圖片描述

(2)修改配置文件
  在$AK_HOME/conf路徑下,有兩個文件
  azkaban.properties,Azkaban系統參數
  azkaban-users.xml,XmlUserManager模式下的用戶管理文件
  這裏主要配置azkaban.properties文件中的參數。

#Azkaban Personalization Settings
#zkaban-web-server-2.5.0.tar.gzAzkaban Personalization Settings
azkaban.name=Azkaban    #主標題
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=m000
mysql.database=azkaban  # 數據庫名與上一步新建的database保持一致
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=8888
jetty.port=8081
jetty.keystore=web/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=web/truststore
jetty.trustpassword=azkaban

# Azkaban Executor settings
executor.port=12321 #指定executor的port
executor.host=m001  #指定executor所在機器

# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=

lockdown.create.projects=false

  這裏面比較麻煩的是jetty的相關配置。需要與下一步的相對應。

(3)配置SSL的KeyStore
  在需要輸入密碼的地方,輸入上面配置文件中的password參數,我的密碼是azkaban。

keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg RSA -validity 3560
keytool -export -alias jetty-azkaban -keystore keystore -rfc -file selfsignedcert.cer
keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore

  將上面生成的keystore和truststore文件移動到$AK_HOME/web路徑下。
  
  如果需要刪除,使用如下命令。

keytool -delete -alias jetty-azkaban -keystore keystore -storepass azkaban

(4)啓動Web Server
  $AK_HOME/bin/azkaban-web-start.sh
  啓動後,日誌中顯示
  這裏寫圖片描述
  接下來可以在Web頁面中訪問,輸入https://client:8888。一定看清楚在前面輸入的是https
  
  正常情況下,就可以在頁面上看到Azkaban的登錄頁面了,如下圖。這裏輸入的用戶名是azkaban-users.xml中配置的,默認情況下用戶名密碼都使用azkaban可進入web頁面。
  這裏寫圖片描述

3、Azkaban Executor Server

  將下載的azkaban-executor-server-2.5.0.tar.gz 文件在m001的/usr/local路徑下解壓縮,目錄結構如下圖
  這裏寫圖片描述
  這裏主要配置的是$AK_HOME/conf路徑下的azkaban.properties文件。  
  完整內容如下:

#zkaban-executor-server-2.5.0.tar.gz 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=m000
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.host=m001
executor.flow.threads=30

  配置好後,使用命令AK_HOME/bin/azkaban-executor-start.sh啓動Azkaban Executor Server服務。

  到這裏,就可以在Azkaban的web頁面中配置任務並進行簡單的操作了。接下來爲Azkaban安裝一些重要的插件。

四、Azkaban Plugins安裝

  Azkaban在設計上把核心功能和擴展插件分開了,因此可以很方便的爲Azkaban安裝一些有用的插件。目前已有的插件主要有以下幾類:

  • 頁面可視化插件。比如HDFS View和Reportal
  • Trigger插件
  • 用戶管理插件。可以自定義一些用戶登錄驗證功能
  • 報警插件

      接下來對每一種插件的安裝和配置進行分析,某些插件安裝在Web端,某些插件需要安裝在Executor端。

1、HDFS Viewer Plugins

  這個插件安裝在Web端。
(1)修改配置文件
  在$AK_HOME/conf/azkaban.properties文件中新增一行,viewer.plugins=hdfs。這個參數會告訴Azkaban到$AK_HOME/plugins/viewer/hdfs路徑下去尋找新的插件。所以,我們需要在$AK_HOME/plugins/路徑下新建一個viewer文件夾,並將azkaban-hdfs-viewer-2.5.0.tar.gz解壓縮,重命名爲hdfs。
(2)配置依賴jar包
  Azkaban-2.5.0找不到HDFS相關的jar包,需要用戶指定。
  一定要刪除$AK_HOME/plugins/viewer/hdfs/extlib/hadoop-core-1.0.4.jar,不然會報ClassNotFound的錯。刪除後,該插件的extlib路徑下已爲空。

  將hadoop中如下jar包複製到$AK_HOME/extlib路徑下:
commons-cli-1.2.jar
hadoop-auth-2.6.0.jar
hadoop-common-2.6.0.jar
hadoop-hdfs-2.6.0.jar
protobuf-java-2.5.0.jar
htrace-core-3.0.4.jar

  在hadoop-common-2.6.0.jar文件中,有一個core-default.xml文件,要把自己的hadoop配置文件中的core-site.xml文件添加到該jar包的根目錄下。
  在Linux中,往jar包中新增文件,按照如下步驟:
  (1)將$HADOOP_HOME/etc/hadoop/core-site.xml文件複製到$Ak_HOME/extlib
  (2)在$Ak_HOME/extlib路徑下使用jar -uf hadoop-common-2.6.0.jar core-site.xml命令將core-site.xml文件添加到jar包中

  最終hadoop-common-2.6.0.jar的文件結構如下圖:
  這裏寫圖片描述

  啓動Web Server,在頁面中就可以看到HDFS文件目錄了。
  這裏寫圖片描述
  也可以直接打開hdfs上的可讀文件。
  這裏寫圖片描述
  上面的htrace-core-3.0.4.jar也是必須的jar包,沒有這個的話,會報錯java.lang.NoClassDefFoundError: org/htrace/Trace,如下圖
  這裏寫圖片描述
  

2、Azkaban Jobtype

  這個插件安裝在Executor Server端。
  Azkaban可以運行一些簡單的Job比如Unix命令行操作以及簡單的Java程序。如果需要運行HadoopJava,Pig,Hive等類型的Job時,就需要安裝這個插件了。
  安裝Jobtype插件需要預先安裝好Hadoop和Hive。我的Hadoop版本爲2.6.0,安裝路徑/usr/local/hadoop,Hive版本0.13.1,安裝路徑/usr/local/hive

(1)解壓縮
  將前面下載的azkaban-jobtype-2.5.0.tar.gz上傳到m001的$AK_HOME/plugins路徑下,解壓縮,並重命名爲jobtypes。
  現在查看該目錄結構:
  這裏寫圖片描述
  
  
(2)Executor Server配置文件修改
  修改$AK_HOME/conf/azkaban.properties,在最後新增一行

azkaban.jobtype.plugin.dir=plugins/jobtypes

  這個參數告訴Azkaban到$AK_HOME/plugins/jobtypes路徑中加載新的jobtype插件。

(3)修改Jobtype配置文件
  (a)首先修改$AK_HOME/plugins/jobtypes/common.properties文件,設置以下三個參數:

hadoop.home=/usr/local/hadoop
hive.home=/usr/local/hive
#pig.home=

#azkaban.should.proxy=
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/* 

  (b)修改$AK_HOME/plugins/jobtypes/commonprivate.properties文件中的hadoop.homehive.home
  (c)修改$AK_HOME/plugins/jobtypes/private.properties文件,設置以下參數:

jobtype.classpath=${hive.home}/conf,${hive.home}/lib/* 

  最後重新重啓Azkaban Executor Server,使新的插件生效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章