天天看點

大資料開發之azkaban篇----編譯安裝azkaban

Azkaban

一個通用的作業排程系統,下面我們将重點了解這個元件的編譯和安裝過程

編譯

首先,在我們開始之前我們先要完成以下幾個準備工作

  1. 安裝jdk
  2. 下載下傳安裝git
  3. 下載下傳安裝gcc-c++
mkdir /usr/java
wget jdk-8u121-linux-x64.tar.gz
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java
# 将解壓後的jdk路徑配置到/etc/profile,且source生效
yum -y install git
yum -y install gcc-c++
           

使用git從github上clone我們的azkaban到本地,當然你也可以使用wget來下載下傳

git clone https://github.com/azkaban/azkaban.git
           

這樣在目前目錄上就多了一個azkaban的目錄,然後切換到這個目錄裡面的gradle/wrapper/,在這裡下載下傳我們的gradle的依賴

cd azkaban/gradle/wrapper/
wget https://services.gradle.org/distributions/gradle-4.1-all.zip
# 在目前目錄下
vi gradle-wrapper.properties
           

修改裡面的内容

distributionUrl=gradle-4.1-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
           

就是講原來distributionUrl的路徑改成目前的路徑指向我們剛下載下傳的gradle依賴,然後我們就切換到azkaban的目錄下開始編譯了

cd ../../
./gradlew build installDist -x test
#這裡我們跳過的測試,這樣可以少遇到以下error吧
           

耐心地等待編譯完畢,基本上按照上面的方式應該不會出什麼錯誤的了(本人親測有效的)

安裝

這裡我們使用two server的模式,就是單獨配置中繼資料庫,但是因為機器限制,我們還是使用單一節點。

中繼資料庫使用MySQL

首先我們需要這樣一個sql檔案用于在中繼資料庫裡面生成我們需要的表:create-all-sql-3.78.0-1-g4764cb5.sql

這個檔案應該是在azkaban-db這個檔案裡面的,當你在資料庫裡面建好了用于azkaban中繼資料存出的資料庫和使用者名以及密碼後,就可以在這個庫裡面直接導入sql建表了。

接着,我們要copy相應的壓縮包到我們用于安裝的目錄上,我們将使用到web和exec這個元件,啟動後将有連個程序的。

cd /root/azkaban/azkaban-web-server/build/distributions/
cp azkaban-exec-server-3.78.0-1-g4764cb5.tar.gz /root/software/
cd /root/azkaban/azkaban-exec-server/build/distributions/
cp azkaban-web-server-3.78.0-1-g4764cb5.tar.gz /root/software/
# 解壓
cd /root/software/
tar -zxvf azkaban-web-server-3.78.0-1-g4764cb5.tar.gz -C /root/app
tar -zxvf azkaban-exec-server-3.78.0-1-g4764cb5.tar.gz -C /root/app
           

我這裡的檔案結構是在/root目錄下有一個software子目錄用于存放安裝需要的壓縮包而app目錄是放置解壓後的元件檔案的

解壓後我們可以看到在web下有四個子目錄:

bin,conf,lib,web

而exec下這有這樣幾個子目錄:

bin,conf,lib,plugins 這裡我們還需要多一個子目錄extlib,但是現在是沒有的

我們先來配置exec

我們切換到exec的conf的子目錄下面

大資料開發之azkaban篇----編譯安裝azkaban

我們需要編輯一下azkaban.properties這個檔案

其實對于這個目錄我們隻需要添加幾行配置就可以了

# 這裡把時區改成亞洲上海
default.timezone.id=Asia/Shanghai
# 這裡添加一個端口配置
executor.port=12321
azkaban.execution.dir=executions

# 這裡寫上你MySQL的相關資訊
database.type=mysql
mysql.port=3306
mysql.host=MySQL的ip位址
mysql.database=azkaban66
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
           

在啟動前你還需要在exec目錄下手動添加一個子目錄:

cd /root/app/azkaban-exec-server-3.78.0-1-g4764cb5
touch executor.port
           

然後我們就可以直接在bin子目錄下啟動了:

bin/start-exec.sh
           

然後我們還需要激活一下執行器

curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
           

如果你沒有executor.port這個目錄将無法成功執行這個指令

并且每次重新啟動exec都要執行這個指令,當指令執行成功後将得到{“status”:“success”}這個回報

配置web

首先我們需要生成keystore檔案,我們就直接在web的目前目錄下生成:

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

[[email protected] azkaban-web-server-3.66.0-6-ge20c886]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password: #密碼,這裡我都是123456
Re-enter new password: #密碼,這裡我都是123456
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=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
  [no]:  y

Enter key password for <jetty>
	(RETURN if same as keystore password): #密碼,直接回車就和上面的一樣了
Re-enter new password: #密碼
           

接着,還是到conf子目錄下,我們還是修改azkaban.properties這個配置檔案

web.resource.dir=/opt/azkaban/azkaban-web-server-3.66.0-6-ge20c886/web/ #原配置是web/,當一定要改成絕對路徑哦
default.timezone.id=Asia/Shanghai #改成上海時區
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/azkaban/azkaban-web-server-3.66.0-6-ge20c886/conf/azkaban-users.xml #這個也是要絕對路徑哦
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.port=8081
jetty.ssl.port=8443
jetty.keystore=keystore
jetty.password=123456 #這裡就是剛你生成keystore檔案時的密碼
jetty.keypassword=123456 #同上
jetty.truststore=keystore
jetty.trustpassword=123456 #同上
# Project Manager settings 
project.temp.dir=/temp
project.version.retention=3
# Azkaban Executor settings
executor.port=12321
# mail settings
[email protected]
mail.host=smtp.qq.com
[email protected] #這裡的mail.user是一定要和mail.sender一緻的
mail.password=*********
# 以下兩項可以不填
job.failure.email=
job.success.email=

lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes

# Azkaban mysql settings by default. Users should configure their own username and password. 也是你的資料庫相關資訊
database.type=mysql
mysql.port=3306
mysql.host=ip位址
mysql.database=azkaban66
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Multiple Executor
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
           

接着到azkaban-web的目錄上,建立一個新的子目錄

midir –p plugins/jobtypes
           

上面所說的都是一定要做的,否則就會在啟動的時候報錯

還有就是如果你是部署了CDH的話,需要和CDH進行內建的,需要配置環境變量了

vim /etc/profile
# 添加下面這兩行
export HADOOP_HOME=/opt/cloudera/parcels/CDH
export HADOOP_CONF_DIR=/etc/hadoop/conf.cloudera.yarn
# 退出後
source /etc/profile
           

然後就是啟動web程序了

bin/start-web.sh
           

啟動後我們就可以在webui上操作了,就是端口上我們需要小心一點,因為我們在配置web的azkaban.properties時配置jetty.use.ssl是為false的,是以計算我們配置了

jetty.port=8081

jetty.ssl.port=8443

這個時候webui的端口還是8081,如果設定為true那麼端口就是8443的,我現在的端口就是8081的

好了,在浏覽器上輸入:localhost:8081就跳轉我的azkaban的界面了,使用者和密碼可以在conf目錄下的azkaban-users.xml檢視,預設是使用者:azkaban,密碼:azkaban

轉載一位大神的部落格,我就是看完他的然後自己動手實作了一遍寫的部落格:https://my.oschina.net/u/3754001/blog/2995216