眼下採用的版本號插件均為2.5.0 完整包下載
1、編譯
azkaban源代碼地址:https://github.com/azkaban/azkaban/tree/release-2.5/src
azkaban插件源代碼地址:https://github.com/azkaban/azkaban-plugins/tree/release-2.5
是用ant來進行編譯、打包
2、安裝和編譯
- 從http://azkaban.github.io/downloads.html下載例如以下安裝包
- azkaban-web-server-2.5.0.tar.gz
- azkaban-executor-server-2.5.0.tar.gz
- azkaban-sql-script-2.5.0.tar.gz
- azkaban-jobtype-2.5.0.tar.gz
- azkaban-hdfs-viewer-2.5.0.tar.gz
- azkaban-jobsummary-2.5.0.tar.gz
- azkaban-reportal-2.5.0.tar.gz
Azkaban Web Server的部署
1、在本地安裝mysql數據庫,用來存儲azkaban任務id、probject等信息的元數據庫
2、建表,解壓azkaban-sql-script-2.5.0.tar.gz 在創建的數據庫中運行create-all-sql-2.5.0.sql文件
3、解壓azkaban-web-server-2.5.0.tar.gz。里面帶有mysql-connector-java-5.1.28.jar,版本號不一致能夠更換
4、在解壓后的文件夾下中的conf文件里輸入keytool -keystore keystore -alias azkaban -genkey -keyalg RSA ,
在運行該命令后會提示輸入password(建議輸入的password都一樣,方便興許配置),這個password是興許配置jetty時使用的,最后將在當前文件夾生成 keystore 證書文件,將 keystore 考貝到 azkaban web 文件夾中。
5、在/conf/azkaban.properties配置:
azkaban的大部分web方面的配置均在這個文件里包含:
-
- 時區的配置:default.timezone.id=Asia/Shanghai
- web所依賴mysql的配置:
database.type=mysql
mysql.port=**
mysql.host=**
mysql.database=**
mysql.user=**
mysql.password=**
mysql.numconnections=**
- jetty的配置
jetty.maxThreads=**
jetty.ssl.port=**
jetty.port=**
jetty.keystore=keystore
jetty.password=創建keystore的密碼
jetty.keypassword=azkaban
jetty.truststore=創建keystore的password
jetty.trustpassword=創建keystore的密碼
- 郵件的配置
mail.sender=
mail.host=
mail.user=
mail.password=
job.failure.email=
job.success.email= - 其它配置可默認
6、azkaban-users.xml 配置用戶的權限登錄賬號和password
7、服務的啟動和關閉均在bin文件夾下命令:
bin/azkaban-web-shutdown.sh
bin/azkaban-web-start.sh
Azkaban Executor Server的部署
1、解壓azkaban-executor-server-2.5.0.tar.gz到安裝文件夾。在lib中自帶了mysql-connector-java-5.1.28.jar,假設版本號不一致請自行替換。
2、改動配置文件 安裝文件夾/conf/azkaban.properties
- 設置時區
default.timezone.id=Asia/Shanghai - 設置數據庫,與Web Server中的數據庫設置一致
3、啟動/停止服務
和 web Service類似切到bin的上一文件夾
bin/azkaban-executor-shutdown.sh 停止
bin/azkaban-executor-start.sh 啟動
4、插件的安裝
- 進入 安裝文件夾/plugins文件夾,在該文件夾下解壓azkaban-jobtype- 2.5.0.tar.gz得到文件夾:azkaban-jobtype-2.5.0。
這個文件夾用來存放之后安裝的全部插 件,與Web Server中的viewer文件夾類似。每次插件的安裝配置須要重新啟動Executor Server。
- 改動 安裝文件夾/plugins/azkaban-jobtype-2.5.0/common.properties。設置hadoop.home和hive.home。與你的環境變量HADOOP_HOME和HIVE_HOME分布保持一致。
hadoop.home=/etc/hadoop
hive.home=/usr/lib/hive
executor.home=/opt/azkaban2/executor //executor所在文件夾
hadoop.lib=/usr/lib/hadoop //hadoop lib
azkaban.should.proxy=false
- 改動 同等文件夾下的commonprivate.properties:
1、相同須要設置hadoop.home和hive.home、executor.home、 hadoop.lib。
2、設置.classpath
ehive.classpath.items=${hive.home}/lib/*,${hive.home}/conf/,${hive.aux.jars.path}/*,${hadoop.lib}/*,${hadoop.lib}/lib/*,${hadoop.lib}/client/*,${hadoop.home}/conf/
hive.classpath.items=${hive.home}/lib/*,${hive.home}/conf/,${hive.aux.jars.path}/*
3、設置權限、代理
# proxy.keytab.location=/home/aa.keytab
# proxy.user=media-sns/111111@qq.COM
azkaban.should.proxy=false//假設為true的話須要進行kerkeros,即凝視打開,打開會后報hadoop的gettoken異常
obtain.binary.token=true
obtain.namenode.token=true
obtain.jobtracker.token=true
hive的安裝
改動hive目錄下的plugin.properties
hive.aux.jars.path=${hive.home}/lib
改動hive目錄下的private.properties
jobtype.classpath=${hive.home}/lib/*,${hive.home}/conf,${hive.aux.jars.path}
jobtype.class=azkaban.jobtype.HadoopHiveJob
hive.aux.jars.path=${hive.home}/aux/lib
上面的${hive.home} 均為/common.properties 文件里設置的hive.home
注意:使用官網的jar包會有問題,須要下載源代碼更改又一次編譯: azkaban-hadoopsecuritymanager-2.5.0.fix.jar
/plugins/jobtype/src/azkaban/jobtype/HadoopSecureHiveWrapper.java
刪除:
if (!ShimLoader.getHadoopShims().usesJobShell()) { } 又一次打包編譯
jar包清單:
1、/azkaban2/executor/lib
2、/azkaban2/executor/plugins/azkaban-jobtype-2.5.0/hive hive以及java hadoopjava等都一樣
當中的azkaban-hadoopsecuritymanager-2.5.0.fix.jar 是編譯完之后的包
3、 使用
azkaban的使用方式是依照job文件描寫敘述來進行使用的,使用type來運行運行任務的類型,通過dependencies能夠用來連接任務。即dependencies=A,僅僅有A任務運行完了才干夠運行改任務
將描寫敘述文件和腳本文件打成zip包上傳到azkaban所相應的probject中
運行Shell文件:
job文件:
type=command
command=echo "mr"
command.1=sh mr.sh
文件文件夾:
運行Java文件
type=hadoopJava
job.class=azkaban.jobtype.examples.java.WordCount
classpath=./lib/*,${hadoop.home}/lib/*
main.args=${param.inData} ${param.outData}
Method.run=test();
force.output.overwrite=true
input.path=${param.inData}
output.path=${param.outData}
假設不指定方法名默認找run()方法去運行 假設沒有會報錯
假設沒有輸入輸出參數等,能夠省略
運行hive
type=hive
user.to.proxy=media-sns
azk.hive.action=execute.query
hive.script=hive.sh
在hive.sh中寫hive的sql
use test;
select * from t_user limit 10;
文件夾結構:
運行mr
可通過shell運行mr任務的命令方式和shell一樣