Azkaban3.x


Azkaban3.x安裝部署

官方文檔地址

三種模式

  • solo-server模式:exec進程和web進程為同一個進程,存放元數據的數據庫為H2
  • two-server模式:與之前的單機版本類似,exec進程和web進程分開,存放元數據的數據庫為mysql
  • multiple-executor模式:exec進程和web進程在不同的機器上,存放元數據的數據庫為mysql

一、solo模式安裝

  1.克隆項目:git clone https://github.com/azkaban/azkaban.git
  2.編譯:./gradlew build installDist
  3.啟動:cd azkaban-solo-server/build/install/azkaban-solo-server; bin/azkaban-solo-start.sh

  4.在8081端口查看
  5.停止:bin/azkaban-solo-shutdown.sh

二、two-server模式

1 下載。git clone https://github.com/azkaban/azkaban.git

得到文件夾azkaban/,當前版本為3.39.0

2 編譯。

在azkaban目錄下執行 :./gradlew distTar

編譯結果為:

azkaban-common : 常用工具類。

azkaban-db : 對應的sql腳本

azkaban-hadoop-secutity-plugin : hadoop 有關kerberos插件

azkaban-solo-server: web和executor 一起的項目。

azkaban-web/executor-server:azkaban的 web和executor的server信息

azkaban-spi: azkaban存儲接口以及exception類

創建文件夾:mkdir azkaban-3.39

3 拷貝

cp azkaban-exec-server/build/distributions/azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz /opt/modules/azkaban3.39.0/
cp azkaban-web-server/build/distributions/azkaban-web-server-3.39.0-17-g7b7833a.tar.gz /opt/modules/azkaban3.39.0/

cp azkaban-db-3.39.0/build/distributions/azkaban-db-3.39.0-2-gbd9e6e4.tar.gz /azkaban-3.39/

4.解壓縮后並重新命名

5.安裝mysql

這里直接使用root用戶

安裝mysql服務器:yum install mysql-server

設置開機啟動:chkconfig mysqld on 
啟動mysql服務:service mysqld start
設置root的初試密碼:mysqladmin -u root password '123456'

啟動mysql:  systemctl start mysqld.service

打開mysql:mysql -uroot -p123456

  創建數據庫>CREATE DATABASE azkaban

  use azkaban

  source  /azkaban-3.39/azkaban-db-3.39.0-2/create-all-sql-3.39.0-2-gbd9e6e4.sql

6.創建SSL配置

在azkaban-web=*/conf下

keytool -keystore keystore -alias jetty -genkey -keyalg RSA
輸入密鑰庫口令:  
密鑰庫口令太短 - 至少必須為 6 個字符
輸入密鑰庫口令:  
再次輸入新口令: 
您的名字與姓氏是什么?
[Unknown]:  
您的組織單位名稱是什么?
[Unknown]:  
您的組織名稱是什么?
[Unknown]:  
您所在的城市或區域名稱是什么?
[Unknown]:  
您所在的省/市/自治區名稱是什么?
[Unknown]:  
該單位的雙字母國家/地區代碼是什么?
[Unknown]: CN
CN=, OU=, O=, L=, ST=, C=CN是否正確?[否]:  Y

7.將azkaban-solo-server-3.39.0下的conf,plugins,sql拷貝到azkaban-exec-server-3.39.0

  1>配置 conf/azkaban.properties

    修改數據庫配置

    database.type=mysql

    mysql.port=3306

    mysql.host=192.168.3.247

    mysql.database=azkaban

    mysql.user=root

    mysql.password=123456

    mysql.numconnections=100

 

  2>添加log4j.properties文件

    在/conf下新建log4j.properties文件

    將

    log4j.rootLogger=INFO,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

    拷入,同樣執行器exec文件下的/conf也需要新建

  3>添加mysql驅動

    在/azkaban-3.39/azkaban-exec-server-3.39.0-2下新建文件夾 :mkdir extlib

    將lib下的mysql鏈接驅動復制到extlib下

    同時需要修改ban-3.39/azkaban-web-server-3.39.0-2下的azkaban.properties,建立extlib文件將mysql驅動拷入

8.啟動

注意先啟動執行器然后啟動web服務器,需要在bin級目錄執行,否則匯報找不到配置文件的錯誤

cd azkaban-exec-server-3.39.0-2

   bin/azkaban-executor-start.sh

cd azkaban-web-server-3.39.0-2

   bin/azkaban-web-start.sh(后台啟動:nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &)

常見錯誤:

1.執行任務時Missing required property 'azkaban.native.lib'

  解決方案:azkaban-3.37.0/azkaban-common/src/main/java/azkaban/jobExecutor/ProcessJob.java里  

  然后重啟

2.若mysql數據庫鏈接不上請檢查mysql數據庫下azkaban數據庫是否可以訪問,

  若無法遠程訪問請使用root用戶登錄到mysql數據庫

  mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';   

  mysql> GRANT ALL ON azkaban.* to 'azkaban'@'%' IDENTIFIED BY 'azkaban';

 

配置文件azkaban.properties內容說明:

#Azkaban Personalization Settings

azkaban.name=Test     #服務器UI名稱,用於服務器上方顯示的名字

azkaban.label=My Local Azkaban    #描述

azkaban.color=#FF3601     #UI顏色

azkaban.default.servlet.path=/index    

web.resource.dir=web/    #默認根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    # global配置文件所在位置

azkaban.project.dir=projects  

 

database.type=mysql    #數據庫類型

mysql.port=3306    #端口號

mysql.host=localhost  #數據庫連接IP

mysql.database=azkaban    #數據庫實例名

mysql.user=root      #數據庫用戶名

mysql.password=root    #數據庫密碼

mysql.numconnections=100   

# Velocity dev mode

velocity.dev.mode=false

# Jetty服務器屬性.

jetty.maxThreads=25   #最大線程數

jetty.ssl.port=8443   #Jetty SSL端口

jetty.port=8081      #Jetty端口

jetty.keystore=keystore   #SSL文件名

jetty.password=123456    #SSL文件密碼

jetty.keypassword=123456    #Jetty主密碼 與 keystore文件相同

jetty.truststore=keystore    #SSL文件名

jetty.trustpassword=123456   # SSL文件密碼

 

# 執行服務器屬性

executor.port=12321    #執行服務器端口

 

# 郵件設置

mail.sender=xxxxxxxx@163.com     #發送郵箱

mail.host=smtp.163.com   #發送郵箱smtp地址

mail.user=xxxxxxxx     #發送郵件時顯示的名稱

mail.password=**********   #郵箱密碼

job.failure.email=xxxxxxxx@163.com   #任務失敗時發送郵件的地址

job.success.email=xxxxxxxx@163.com   #任務成功時發送郵件的地址

lockdown.create.projects=false   

cache.directory=cache    #緩存目錄

 

 

 

用戶配置(可選)

進入azkaban web服務器conf目錄,修改azkaban-users.xml

vi 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>

 

Azkaban實戰

Azkaba內置的任務類型支持command、java、python

 Command類型單一job示例

1、創建job描述文件

vi command.job

#command.job

type=command                                                   

command=echo 'hello'

2、將job資源文件打包成zip文件

zip command.job

3、通過azkaban的web管理平台創建project並上傳job壓縮包

首先創建project

上傳zip包

 

4、啟動執行該job

 

Command類型多job工作流flow

1、創建有依賴關系的多個job描述

第一個job:foo.job

# foo.job

type=command

command=echo foo

第二個job:bar.job依賴foo.job

# bar.job

type=command

dependencies=foo

command=echo bar

 

2、將所有job資源文件打到一個zip包中

 

 

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動工作流flow

HDFS操作任務

1、創建job描述文件

# fs.job

type=command

command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz

 

2、將job資源文件打包成zip文件

3、通過azkaban的web管理平台創建project並上傳job壓縮包

4、啟動執行該job

MAPREDUCE任務

Mr任務依然可以使用command的job類型來執行

1、創建job描述文件,及mr程序jar包(示例中直接使用hadoop自帶的examplejar)

# mrwc.job

type=command

command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop  jar hadoop-mapreduce-examples-2.6.1.jar wordcount /wordcount/input /wordcount/azout

  

2、將所有job資源文件打到一個zip包中

  

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動job

HIVE腳本任務

l  創建job描述文件和hive腳本

Hive腳本: test.sql

use default;

drop table aztest;

create table aztest(id int,name string) row format delimited fields terminated by ',';

load data inpath '/aztest/hiveinput' into table aztest;

create table azres as select * from aztest;

insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

Job描述文件:hivef.job

# hivef.job

type=command

command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'

 

2、將所有job資源文件打到一個zip包中

3、在azkaban的web管理界面創建工程並上傳zip包

4、啟動job


免責聲明!

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



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