1. 程式人生 > >大資料學習筆記之azkaban

大資料學習筆記之azkaban

Azakaban的安裝部署

安裝前準備

  1. 將Azkaban Web伺服器、Azkaban執行伺服器、Azkaban的sql執行指令碼及MySQL安裝包拷貝到hadoop102虛擬機器/opt/software目錄下
    azkaban-web-server-2.5.0.tar.gz
    azkaban-executor-server-2.5.0.tar.gz
    azkaban-sql-script-2.5.0.tar.gz
    mysql-libs.zip
  2. 選擇Mysql作為Azkaban資料庫

安裝Azkaban

  1. 在/opt/module/目錄下創azkaban目錄
mkdir azkaban
  1. 解壓azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz、azkaban-sql-script-2.5.0.tar.gz到/opt/module/azkaban目錄下
tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban/
tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /opt/module/azkaban/
tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /opt/module/azkaban/
  1. 對解壓後的檔案重新命名
mv azkaban-web-2.5.0/ server
mv azkaban-executor-2.5.0/ executor
  1. azkaban指令碼匯入
    進入mysql,建立azkaban資料庫,並將解壓的指令碼匯入到azkaban資料庫。
mysql -uroot -p123456
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql

注:source後跟.sql檔案,用於批量處理.sql檔案中的sql語句。

生成金鑰庫

Keytool是java資料證書的管理工具,使使用者能夠管理自己的公/私鑰對及相關證書。
-keystore 指定金鑰庫的名稱及位置(產生的各類資訊將不在.keystore檔案中)
-genkey 在使用者主目錄中建立一個預設檔案".keystore"
-alias 對我們生成的.keystore 進行指認別名;如果沒有預設是mykey
-keyalg 指定金鑰的演算法 RSA/DSA 預設是DSA

  1. 生成 keystore的密碼及相應資訊的金鑰庫
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
輸入金鑰庫口令:  
再次輸入新口令: 
您的名字與姓氏是什麼?
  [Unknown]:  
您的組織單位名稱是什麼?
  [Unknown]:  
您的組織名稱是什麼?
  [Unknown]:  
您所在的城市或區域名稱是什麼?
  [Unknown]:  
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  
該單位的雙字母國家/地區程式碼是什麼?
  [Unknown]:  
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確?
  [否]:  y

輸入 <jetty> 的金鑰口令
        (如果和金鑰庫口令相同, 按回車):  
再次輸入新口令:

注意: 金鑰庫的密碼至少必須6個字元,可以是純數字或者字母或者數字和字母的組合等等 金鑰庫的密碼最好和<jetty> 的金鑰相同,方便記憶
2. 將keystore 拷貝到 azkaban web伺服器根目錄中

mv keystore /opt/module/azkaban/server/

時間同步

時間同步見hadoop安裝

配置檔案

  1. 進入azkaban web伺服器安裝目錄 conf目錄,開啟azkaban.properties檔案
pwd
/opt/module/azkaban/server/conf
vim azkaban.properties
  1. 按照如下配置修改azkaban.properties檔案
#Azkaban Personalization Settings
#伺服器UI名稱,用於伺服器上方顯示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI顏色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#預設web server存放web檔案的目錄
web.resource.dir=/opt/module/azkaban/server/web/
#預設時區,已改為亞洲/上海 預設為美國
default.timezone.id=Asia/Shanghai

#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
#使用者許可權管理預設類(絕對路徑)
user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml

#Loader for projects
#global配置檔案所在位置(絕對路徑)
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects

#資料庫型別
database.type=mysql
#埠號
mysql.port=3306
#資料庫連線IP
mysql.host=hadoop102
#資料庫例項名
mysql.database=azkaban
#資料庫使用者名稱
mysql.user=root
#資料庫密碼
mysql.password=123456
#最大連線數
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
# Jetty伺服器屬性.
#最大執行緒數
jetty.maxThreads=25
#Jetty SSL埠
jetty.ssl.port=8443
#Jetty埠
jetty.port=8081
#SSL檔名(絕對路徑)
jetty.keystore=/opt/module/azkaban/server/keystore
#SSL檔案密碼
jetty.password=000000
#Jetty主密碼與keystore檔案相同
jetty.keypassword=000000
#SSL檔名(絕對路徑)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL檔案密碼
jetty.trustpassword=000000

# Azkaban Executor settings
executor.port=12321

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

lockdown.create.projects=false

cache.directory=cache
  1. web伺服器使用者配置
    在azkaban web伺服器安裝目錄 conf目錄,按照如下配置修改azkaban-users.xml 檔案,增加管理員使用者。
vim 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>

執行伺服器配置

  1. 進入執行伺服器安裝目錄conf,開啟azkaban.properties
 pwd
 /opt/module/azkaban/executor/conf
 vim azkaban.properties
  1. 按照如下配置修改azkaban.properties檔案。
#Azkaban
#時區
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
#jobtype 外掛所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Azkaban Executor settings
#最大執行緒數
executor.maxThreads=50
#埠號(如修改,請與web服務中一致)
executor.port=12321
#執行緒數
executor.flow.threads=30

啟動executor伺服器

在executor伺服器目錄下執行啟動命令

pwd
/opt/module/azkaban/executor
 bin/azkaban-executor-start.sh

啟動web伺服器

在azkaban web伺服器目錄下執行啟動命令

pwd
/opt/module/azkaban/server
bin/azkaban-web-start.sh

注意: 先執行executor,再執行web,避免Web Server會因為找不到執行器啟動失敗。
jps檢視程序

jps
3601 AzkabanExecutorServer
5880 Jps
3661 AzkabanWebServer

啟動完成後,在瀏覽器(建議使用谷歌瀏覽器)中輸入https://伺服器IP地址:8443,即可訪問azkaban服務了。
在登入中輸入剛才在azkaban-users.xml檔案中新新增的戶用名及密碼,點選 login。

Azkaban登入頁面
Azkaban主頁面

Azkaban操作

Azkaba內建的任務型別支援command、java

單一job

  1. 建立job描述檔案
vim first.job
#first.job
type=command
command=echo 'this is my first job'
  1. 將job資原始檔打包成zip檔案
zip first.zip first.job

注意: 目前,Azkaban上傳的工作流檔案只支援xxx.zip檔案。zip應包含xxx.job執行作業所需的檔案和任何檔案(檔名字尾必須以.job結尾,否則無法識別)。作業名稱在專案中必須是唯一的。
3. 通過azkaban的web管理平臺建立project並上傳job的zip包
首先建立project
建立project
上傳zip包
上傳zip包
啟動執行該job
啟動job
點選執行工作流
在這裡插入圖片描述
點選繼續
在這裡插入圖片描述
Job執行成功
在這裡插入圖片描述
點選檢視job日誌
在這裡插入圖片描述

多job工作流

  1. 建立有依賴關係的多個job描述
第一個job:start.job
vim start.job
#start.job
type=command
command=touch /opt/module/kangkang.txt

第二個job:step1.job依賴start.job

vim step1.job
#step1.job
type=command
dependencies=start
command=echo "this is step1 job"

第三個job:step2.job依賴start.job

vim step2.job
#step2.job
type=command
dependencies=start
command=echo "this is step2 job"

第四個job:finish.job依賴step1.job和step2.job

vim finish.job
#finish.job
type=command
dependencies=step1,step2
command=echo "this is finish job"
  1. 將所有job資原始檔打到一個zip包中
zip jobs.zip start.job step1.job step2.job finish.job
updating: start.job (deflated 16%)
  adding: step1.job (deflated 12%)
  adding: step2.job (deflated 12%)
  adding: finish.job (deflated 14%) 
  1. 上傳執行
    在這裡插入圖片描述
    在這裡插入圖片描述

java操作任務

  1. 編寫java程式
import java.io.IOException;

public class AzkabanTest {
	public void run() throws IOException {
        // 根據需求編寫具體程式碼
		FileOutputStream fos = new FileOutputStream("/opt/module/azkaban/output.txt");
		fos.write("this is a java progress".getBytes());
		fos.close();
    }

	public static void main(String[] args) throws IOException {
		AzkabanTest azkabanTest = new AzkabanTest();
		azkabanTest.run();
	}
}
  1. 將java程式打成jar包,建立lib目錄,將jar放入lib內
mkdir lib
cd lib/
  1. 編寫job檔案
vim azkabanJava.job
#azkabanJava.job
type=javaprocess
java.class=com.test.azkaban.AzkabanTest
classpath=/opt/module/azkaban/lib/*
  1. 將job檔案打成zip包
zip azkabanJava.zip azkabanJava.job 
  adding: azkabanJava.job (deflated 19%)
  1. 通過azkaban的web管理平臺建立project並上傳job壓縮包,啟動執行該job
    在這裡插入圖片描述
pwd
/opt/module/azkaban
cat output 
this is a java progress

HDFS操作任務

  1. 建立job描述檔案
vim fs.job
#hdfs job
type=command
command=/opt/module/hadoop-2.7.2/bin/hadoop fs -mkdir /azkaban

  1. 將job資原始檔打包成zip檔案
zip fs.zip fs.job 
  adding: fs.job (deflated 12%)

  1. 通過azkaban的web管理平臺建立project並上傳job壓縮包,並執行
    在這裡插入圖片描述
    在這裡插入圖片描述

mapreduce任務

  1. 建立job描述檔案,及mr程式jar包
vim mapreduce.job
#mapreduce job
type=command
command=/opt/module/hadoop-2.7.2/bin/hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wordcount/input /wordcount/output
  1. 將所有job資原始檔打到一個zip包中
zip mapreduce.zip mapreduce.job 
  adding: mapreduce.job (deflated 43%)
  1. 在azkaban的web管理介面建立工程並上傳zip包並執行
    在這裡插入圖片描述
    在這裡插入圖片描述

Hive指令碼任務

  1. 建立job描述檔案和hive指令碼
vim student.sql
use default;
drop table student;
create table student(id int, name string)
row format delimited fields terminated by '\t';
load data local inpath '/opt/module/datas/student.txt' into table student;
insert overwrite local directory '/opt/module/datas/student'
row format delimited fields terminated by '\t'
select * from student;
  1. Job描述檔案:hive.job
vim hive.job
#hive job
type=command
command=/opt/module/hive/bin/hive -f /opt/module/azkaban/jobs/student.sql
  1. 將所有job資原始檔打到一個zip包中
vim hive.job
#hive job
type=command
command=/opt/module/hive/bin/hive -f /opt/module/azkaban/jobs/student.sql
  1. 在azkaban的web管理介面建立工程並上傳zip包並執行
    在這裡插入圖片描述