azkaban集群部署


隨着平台上的任務越來越多,且部分任務相互依賴,目前使用的crontab定時調度已經無法滿足使用需求.急需一個任務依賴調度系統,筆者以前使用過oozie,但是oozie配置過多,而且維護繁瑣,屬於重量級系統.所以最終我選擇使用azkaban.網上關於oozie和azkaban比較的文章很多,有興趣可以自行百度.接下來說說azkaban的部署.

一.部署模式

  • solo-server模式  (使用內置h2存儲元數據)
  • two-server模式   (1個webServer,1個execServer在同一服務器上,使用mysql存儲元數據)
  • multiple-executor模式   (1個webServer,多個execServer分布在不同服務上,使用mysql存儲元數據)
    本文選擇第三種模式,即一台機器安裝webServer服務,多台機器安裝execServer.這種模式是使用最廣泛的.

二.部署准備

  1. 三台服務器
    192.168.0.10 --azkaban-web-server
    192.168.0.11 --azkaban-exec-server
    192.168.0.12 --azkaban-exec-server
  2. 默認有一個mysql服務器,首先創建azkaban庫,azkaban用戶密碼,並賦予遠程連接.
    1 mysql> CREATE DATABASE azkaban;
    2 mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
    3 mysql> CREATE USER 'azkaban'@'localhost' IDENTIFIED BY 'azkaban';
    4 mysql> grant all privileges on azkaban.* to 'azkaban'@'%' identified by 'azkaban';
    5 mysql> grant all privileges on azkaban.* to 'azkaban'@'localhost' identified by 'azkaban';
    6 mysql> flush privileges;
    View Code
  3. 下載最新azkaban源文件(azkaban-3.47.0.tar.gz),上傳到192.168.0.10:/opt/下

三.開始部署

  1. 解壓縮文件azkaban-3.47.0.tar.gz 
  2. 進入目錄執行下面代碼編譯源文件
    ./gradlew distTar
  3. 將下面3個文件解壓縮,文件如下:
    /opt/azkaban-3.47.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
    /opt/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
    /opt/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
  4. 導入建表語句
    mysql -uazkaban -p
    > SOURCE /opt/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
  5. 構建Azkaban-web-server
    mv /opt/azkaban-3.47.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT /opt/Azkaban-web-server
    cp -r /opt/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT/conf /opt/Azkaban-web-server/conf
  6. 修改 /opt/Azkaban-web-server/conf/azkaban.properties 文件
     1 # Azkaban Personalization Settings
     2 azkaban.name=nyhadoop
     3 azkaban.label=My Local Azkaban
     4 azkaban.color=#FF3601
     5 azkaban.default.servlet.path=/index
     6 web.resource.dir=web/
     7 default.timezone.id=Asia/Shanghai
     8 # Azkaban UserManager class
     9 user.manager.class=azkaban.user.XmlUserManager
    10 user.manager.xml.file=conf/azkaban-users.xml
    11 # Loader for projects
    12 executor.global.properties=conf/global.properties
    13 azkaban.project.dir=projects
    14 
    15 database.type=mysql
    16 mysql.port=3306
    17 mysql.host=10.46.67.33
    18 mysql.database=azkaban
    19 mysql.user=azkaban
    20 mysql.password=azkaban
    21 mysql.numconnections=100
    22 
    23 # Velocity dev mode
    24 velocity.dev.mode=false
    25 # Azkaban Jetty server properties.
    26 jetty.ssl.port=8443
    27 # jetty.use.ssl=false
    28 jetty.port=8081
    29 jetty.keystore=keystore
    30 jetty.password=123456
    31 jetty.keypassword=123456
    32 jetty.truststore=keystore
    33 jetty.trustpassword=123456
    34 jetty.maxThreads=25
    35 # Azkaban Executor settings
    36 executor.port=12321
    37 # mail settings
    38 mail.sender=
    39 mail.host=
    40 # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    41 # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    42 # when this parameters set then these parameters are used to generate email links. 
    43 # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    44 # azkaban.webserver.external_hostname=myazkabanhost.com
    45 # azkaban.webserver.external_ssl_port=443
    46 # azkaban.webserver.external_port=8081
    47 job.failure.email=
    48 job.success.email=
    49 lockdown.create.projects=false
    50 cache.directory=cache
    51 # JMX stats
    52 jetty.connector.stats=true
    53 executor.connector.stats=true
    54 # Azkaban plugin settings
    55 azkaban.jobtype.plugin.dir=plugins/jobtypes
    56 azkaban.use.multiple.executors=true
    57 azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
    58 azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
    59 azkaban.executorselector.comparator.Memory=1
    60 azkaban.executorselector.comparator.LastDispatched=1
    61 azkaban.executorselector.comparator.CpuUsage=1
    View Code
  7. 配置jetty ssl
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    Enter keystore password:  輸入密碼
    Re-enter new password: 再次輸入密碼
    What is your first and last name?
      [Unknown]:  直接回車
    What is the name of your organizational unit?
      [Unknown]:  直接回車
    What is the name of your organization?
      [Unknown]:  直接回車
    What is the name of your City or Locality?
      [Unknown]:  直接回車
    What is the name of your State or Province?
      [Unknown]:  直接回車
    What is the two-letter country code for this unit?
      [Unknown]:  直接回車
    Is CN=YY, OU=YY, O=YY, L=shanghai, ST=shanghai, C=CN correct?
      [no]:  y
    View Code
  8. 將生成的keystore文件 移動到/opt/Azkaban-web-server/目錄下

  9. 構建Azkaban-exec-server(192.168.0.11和192.168.0.12都有)
    scp /opt/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 192.168.0.11:/opt/
    tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
    mv azkaban-exec-server-0.1.0-SNAPSHOT Azkaban-exec-server
  10. /opt/Azkaban-exec-server目錄下創建目錄和文件conf/azkaban.properties文件
    # Azkaban Personalization Settings
    default.timezone.id=Asia/Shanghai
    # Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    
    database.type=mysql
    mysql.port=3306
    mysql.host=10.46.67.33
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100
    
    # Azkaban Executor settings
    executor.maxThreads=50
    executor.port=12321
    executor.flow.threads=30
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban plugin settings
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    View Code
  11. 分別在/opt/Azkaban-web-server/conf和/opt/Azkaban-exec-server/conf目錄下創建log4j.properties文件
    log4j.rootLogger=DEBUG,C
    log4j.appender.C=org.apache.log4j.ConsoleAppender
    log4j.appender.C.Target=System.err
    log4j.appender.C.layout=org.apache.log4j.PatternLayout
    log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    View Code
  12. 分別在/opt/Azkaban-web-server/和/opt/Azkaban-exec-server/目錄下創建plugins/jobtypes/commonprivate.properties目錄和文件
    azkaban.native.lib=false
    execute.as.user=false
    View Code

     

四.運行

  1. 192.168.0.11和192.168.0.12下  /opt/Azkaban-exec-server目錄下執行
    1 bin/start-exec.sh
    2 curl http://${ip}:12321/executor?action=activate
  2. 192.168.1.10下 /opt/Azkaban-web-server目錄下執行
    bin/start-web.sh

     

  3. 瀏覽器地址 https://192.168.1.10:8443查看服務界面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM