亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

azkaban3.9.0的編譯安裝步驟

發布時間:2021-07-05 17:19:54 來源:億速云 閱讀:185 作者:chen 欄目:大數據

本篇內容介紹了“azkaban3.9.0的編譯安裝步驟”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1 Azkaban介紹

大數據業務處理場景中,經常有這樣的分析場景:
A 任務:將收集的數據通過一系列的規則進行清洗,然后存入 Hive 表 a 中。
B 任務:將 Hive 中已存在的表 b 和表 c 進行關聯得到表 d 。
C 任務:將 A 任務中得到的表 a 與 B 任務中得到的表 d 進行關聯得到分析的結果表e 。
D 任務:最后將 Hive 中得到的表 e 通過 sqoop 導入到關系型數據庫 MySQL 中供web 端查詢使用。
顯然,以上任務 C 依賴于任務 A 與任務 B 的結果,任務 D 依賴于任務 C 的結果。我們一般的做法可以打開兩個終端分別執行任務 A 與任務 B ,當任務 A 與任務 B 執行完成之后再執行任務 C ,當任務 C 執行完成之后再執行任務 D 。整個任務流程中必須保證任務A 、任務 B 執行完成之后執行任務 C ,然后再執行任務 D 。這樣某一個環節都離不開人工的參與,需要時刻盯著各任務的執行進度,非常費力。
以上業務場景就是一個大的任務,任務中分為四個子任務 A 、 B 、 C 、 D ,如果能有一個任務調度器給我們自動實現執行任務 A ,執行任務 B ,然后再執行任務 C ,最后執行任務D ,那么就不需要人工時刻盯著任務是否執行完成,是否該開啟下一個任務。 Azkaban 就是這樣一個工作流的調度器,可以解決以上場景問題。
2 Azkaban 的安裝
2.1 Azkaban 由三個關鍵組件

Azkaban 是一個批量工作流調度器,底層是使用 java 語言開發,用于在一個工作流內以一定的順序運行一組任務和流程,并且提供了非常方便的 webui 界面來監控任務調度的情況,方便我們來管理流調度任務。
Azkaban 由三個關鍵組件組成:

    AzkabanWebServer:
    主要負責項目管理、用戶登錄權限認證、定時執行工作任務、跟蹤提交任務執行的流程、訪問歷史執行任務、保存執行計劃的狀態。
    AzkabanExecutorServer:主要負責工作流程的提交、執行、檢索和更新當前正在執行計劃的數據,處理執行計劃的日志。
    關系型數據庫:
    主要是保存工作流中的原數據信息。
    下面,讓我們從零開始搭建一個 Azkaban 任務流調度系統。

2.2 安裝Azkaban

https://github.com/azkaban/azkaban/releases
2.2.1 環境準備

在 Linux 中安裝 Azkaban ,系統中需要安裝好 jdk,MySQL ,這里選擇的是 jdk8和 MySQL5.1 版本。除此之外,還需要安裝 git , git 是一個開源的分布式版本控制系統,一般在項目版本控制中會使用 git 控制,這里安裝 Azkaban 需要 git 是因為需要通過 git 構建依賴包。
安裝git:

yum -y install git

2.2.2 安裝 Azkaban

    上傳下載好的 azkaban ,解壓到 /opt/azkaban-temp 文件夾

 [root@mynode5 software]# tar -zxvf ./azkaban-3.90.0.tar.gz
 [root@mynode5 software]# mv ./azkaban-3.90.0 azkaban-temp

    進入 azkaban-temp 目錄,進行編譯

 [root@node4 azkaban]# ./gradlew distTar
 ...
  BUILD SUCCESSFUL in 4m 6s
  54 actionable tasks: 40 executed, 14 from cache

注意:編譯過程中有可能由于網絡延時造成編譯時失敗,可以多重試幾次解決此問題。
3. 新建 azkaban 目錄,將編譯好的文件復制到此目錄下

[root@node4 software]# mkdir ./azkaban
[root@node4 software]# cd azkaban
[root@node4 azkaban]# cp /software/azkaban-temp/azkaban-
db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
/software/azkaban4.
[root@node4 azkaban]# cp /software/azkaban-temp/azkaban-web-
server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
/software/azkaban
[root@node azkaban]# cp /software/azkaban-temp/azkaban-exec-
server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
/software/azkaban

    在 azkaban 目錄下解壓各個編譯好的壓縮包,重新命名

[root@node4 azkaban]# tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
[root@node4 azkaban]# tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
[root@node4 azkaban]# tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
[root@node4 azkaban]# mv azkaban-db-0.1.0-SNAPSHOT azkaban-db
[root@node4 azkaban]# mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web
[root@node4 azkaban]# mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec

至此,經歷了 Azkaban 的下載、編譯, Azkaban 安裝基本準備工作已經完成,下一步就是配置 Azkaban ,將 Azkaban 運行起來。
2.2.3 導入數據庫

運行 Azkaban 基本的原數據信息庫,在編譯好的 azkaban-db 中就有基本的庫信息,需要將這些數據導入到關系型數據庫中,這里就是導入 MySQL 數據庫中 , 導入的MySQL 數據庫可以和當前 Azkaban 安裝在同一節點上,也可以安裝在不同的節點上,筆者的 Azkaban 安裝在 node4 節點上, MySQL 數據庫安裝在 node1 節點上。

    登錄 mysql 數據庫,創建 azkaban 數據庫

[root@mynode2 ~]# mysql -u root -p
 mysql> create database azkaban default character set latin1;

注意:這里創建 azkaban 時建議使用 latin1 編碼,因為索引太長, utf8 編碼格式不支持,最高支持 1000 。
2. 準備 sql 文件
將 node4 節點上 /software/azkaban/azkaban-db 目錄下的 create-all-sql-0.1.0-SNAPSHOT.sql 復制到 node1 節點 /software/test 目錄下。

[root@node4 azkaban-db]# scp /software/azkaban/azkaban-db/create-all-
sql-0.1.0-SNAPSHOT.sql
[root@node4:/software/test create-all-sql-0.1.0-SNAPSHOT.sql 100% 12KB 11.8KB/s 00:00

  向 MySQL 中導入數據庫

 mysql> use azkaban;
 mysql> source /software/test/create-all-sql-0.1.0-SNAPSHOT.sql

     檢查導入的數據庫表

mysql> show tables;

2.3 配置運行 Azkaban
2.3.1 創建 ssl 配置

HTTP 的全稱 是 Hypertext Transfer Protocol Vertion (超文 本傳輸協議), HTTPS 的全稱是 Secure Hypertext Transfer Protocol (安全超文本傳輸協議), HTTPS 基于 HTTP 開發,使用安全套接字層 (SSL) 進行信息交換,簡單來說它是HTTP 的安全版。 Azkaban 支持安全的 https 訪問,但是需要創建 ssl 配置。
在 /software/azkaban 目錄下執行命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA 創建 ssl 配置。

[root@mynode5 azkaban]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
輸入密鑰庫口令:
再次輸入新口令:
輸入 <jetty> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):

輸入完信息,執行完以上命令之后,在當前目錄下生成一個 keystore 文件,將此文件復制到 azkaban web 服務器根目錄下。

 [root@node4 azkaban]# mv /software/azkaban/keystore /software/azkaban/azkaban-web

2.3.2 Azkaban web 服務器配置

進 入 /software/azkaban/azkaban-web/conf 目 錄 下 , 編 輯azkaban.properties 文件:

[root@node4 conf]# cd /software/azkaban/azkaban-web/conf/
[root@node4 conf]# vim azkaban.properties

編輯內容如下:

# Azkaban Personalization Settings
azkaban.name=My Azkaban
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/root/soft/azkaban/azkaban-web/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/root/soft/azkaban/azkaban-web/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/root/soft/azkaban/azkaban-web/conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
jetty.keystore=/root/soft/azkaban/azkaban-web/keystore
jetty.password=123456
jetty.keypassword=azkaban
jetty.truststore=/root/soft/azkaban/azkaban-web/keystore
jetty.trustpassword=123456
jetty.ssl.port=8443
executor.connector.stats=true
executor.port=12312
# Azkaban Executor settings
# mail settings
mail.sender=
mail.host=
# 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.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=192.168.3.175
mysql.database=azkaban
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.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

2.3.3 Azkaban executor 服務器配置

進 入 /software/azkaban/azkaban-exec/conf 目 錄 下 , 編 輯azkaban.properties 文件:

# Azkaban Personalization Settings
azkaban.name=My Azkaban
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/root/soft/azkaban/azkaban-web/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/root/soft/azkaban/azkaban-web/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/root/soft/azkaban/azkaban-web/conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
#jetty.use.ssl=false
#jetty.maxThreads=25
#jetty.port=8081
# Where the Azkaban web server is located
azkaban.webserver.url=https://localhost:8443
# mail settings
mail.sender=
mail.host=
# 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.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
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=/root/soft/azkaban/azkaban-exec/plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=192.168.3.175
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.port=12321

2.3.4 啟動 Azkaban

    啟動 AzkabanExecutorServer
    進入 /software/azkaban/azkaban-exec/bin 目錄,啟動AzkabanExecutorServer , jps 檢查進程 , 出現AzkabanExecutorServer進程表示啟動成功。

 [root@node4 bin]# cd /software/azkaban/azkaban-exec/bin
 [root@node4 bin]# ./start-exec.sh
 [root@node4 bin]# jps

    激活 AzkabanExecutor
    啟動/重啟 AzkabanExecutor 需要激活,在瀏覽器中執行如下命令,激活
    AzkabanExecutor :

 http://node4:12321/executor?action=activate

    啟動 AzkabanWebServer
    進入 /software/azkaban/azkaban-web/bin 目錄,啟動
    AzkabanWebServer,jps 檢查進程,出現 AzkabanWebServer 進程表示啟動成功。

 [root@node4 bin]# cd /software/azkaban/azkaban-web/bin
 [root@node4 bin]# ./start-web.sh

3. [root@mynode5 bin]# jps

至此, Azkaban 的搭建已經完成,下面檢查 Azkaban 運行情況。
2.4 驗證 Azkaban 運行情況

驗證 Azkaban 是否啟動成功,可以訪問 Azkaban 的 WebUI 界面,檢查是否啟動成功。在瀏覽器輸入 http://node4:8081:
如果配置了ssl請訪問:https//node4:port
在這里插入圖片描述

輸入地址之后,出現以上頁面表示配置 Azkaban 沒有問題,Azkaban 啟動成功,默認的用戶名和密碼都是 Azkaban ,可以輸入用戶名和密碼登錄 Azkaban 的界面提交任務流,進行任務管理和調度。:
在這里插入圖片描述

至此, Azkaban 搭建成功,下面我們模擬一個任務流來嘗試利用 Azkaban 來進行任務調度。
3. 構建工作流

以上小節介紹了安裝部署 Azkaban ,本節中我們將設計一個模擬的任務流程 flow ,通過這個任務流程來學習如何編寫 Azkaban 的任務、如何在 WebUI 中查看任務流調度及狀態。
首先介紹下 Azkaban 中 project 、 flows 、 job 之間的關系:一個 project 中可以包含一個或者多個 flows ,一個 flows 包含多個 job 。這里的 job 是在 Azkaban 中運行的一個進程,可以是簡單的 linux 命令、 shell 腳本、 sql 腳本等。一個 job 可以依賴于另一個 job ,這種多個 job 之間的依賴關系組成 flow ,也就是任務流。
3.1 設計工作流程

假設現在有 5 個 job ,分別是 job1 、 job2 、 job3 、 job4 、 job5 。每個 job 都執行一個 shell 腳本。 job3 依賴與 job1 和 job2 執行的結果, job4 依賴于 job3 執行的結果, job5 依賴于 job4 執行的結果。
針對以上這個任務需求,我們可以設計一個任務流( flow ),這個任務流中有 5 個job ,按照上述 job 依賴的關系,可以編寫一個簡單的任務流程提交到 Azkaban 中進行調度執行。
3.2 編寫各階段 Job

編寫 job 非常容易,需要創建一個以” .job ”結尾的文本文件,文件中書寫格式如下:

type=command
command= 需要執行的腳本或命令

type=command 是 告 訴 Azkaban 使 用 unix 原 生 命 令 去 運 行 命 令 或 者 腳 本 ,command= “ xxx ”就是指定當前 job 需要執行的命令或者腳本,如果當前 job 依賴于其他的 job ,只需要在這個文本文件后面加上“ dependencies= 依賴的 job 名稱”即可,依賴的 job 只需要寫名稱,不需要寫出后綴“ job ”。
為了方便演示以上工作流程,這里設計的每個 job 都調起 linux 上的一個腳本,腳本中就使用簡單的 echo 打印一些信息供參看 ,5 個 job 及對應的腳本設置內容如下:

    編寫 job 任務
    job1.job:

type=command
command= sh job1.sh

job2.job :

type=command
command= sh job2.sh

job3.job:

type=command
command= sh job3.sh
dependencies=job1,job2

job4.job:

 type=command
 command= sh job4.sh
 dependencies=job3

job5.job:

 type=command
 command= sh job5.sh
 dependencies=job4

以上 job 任務的編寫可以在本地 window 環境中編寫,編寫完成后需要將 5 個 job
壓縮到一個壓縮文件中,后期提交到 Azkaban 中執行。
2. 編寫腳本內容

job1.sh:

echo "開始執行 job1... ... "
echo "正在執行 job1... ... "
echo "執行完成 job1... ... "

job2.sh:

echo "開始執行 job2... ... "
echo "正在執行 job2... ... "
echo "執行完成 job2... ... "

job3.sh:

echo "開始執行 job3... ... "
echo "正在執行 job3... ... "
echo "執行完成 job3... ... "

job4.sh:

echo "開始執行 job4... ... "
echo "正在執行 job4... ... "
echo "執行完成 job4... ... "

job5.sh:

echo "開始執行 job5... ... "
echo "正在執行 job5... ... "
echo "執行完成 job5... ... "

以 上 腳 本 是 在 linux 中 編 寫 , job1.sh 、 job2.sh 、 job3.sh 、 job4.sh 、job5.sh 幾個腳本都需要賦予執行權限。
3.3 配置工作流并執行

Azkaban 中任務提交時,必須將所有 job 文件壓縮到一個 zip 文件中再提交到
Azkaban 中執行。首先將以上 5 個 job 壓縮到一個 zip 文件中,然后登陸 Azkaban, 點
擊右上角的 Create Project 創建一個項目:
在這里插入圖片描述

在彈出的框中填寫項目名稱及項目描述:

在這里插入圖片描述
點擊 Create Project ,點擊 upload ,上傳壓縮好的任務:
在這里插入圖片描述
上傳完成之后,查看任務流, Azkaban 默認 Flow 名稱是以最后一個沒有依賴的 job定義的:
在這里插入圖片描述
點擊 Execute Flow 可以看到任務流的詳細依賴關系:
在這里插入圖片描述
點擊 Execute 執行任務。
如果想要每隔一段時間執行一次任務,可以點擊 Schedule ,配置定時任務,配置好時間之后,點擊 Schedule 調度即可。如圖示:
在這里插入圖片描述
3.4 工作流執行監控

執行任務完成之后,會自動跳轉到執行成功界面:
在這里插入圖片描述
3.5 Azkaban 問題

如果在提交 Azkaban 時出現任務一直運行狀態,但是執行不完成,查看 azkabanwebui 日 志 發 現 “ Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job job1, sleep for 60 secs and retry, at… … ”問題,這個問題是 executor 執行任務之前檢查節點內存是否足夠 3G ,如果不夠就會出現這個錯 誤 。 可 以 在 …/azkaban-exec/plugins/jobtype 目 錄 下 , 配 置commonprivate.properties 文 件 , 在 文 件 中 加 入“ memCheck.enabled=false ”,不檢查內存即可,重啟 azkaban 就可。

“azkaban3.9.0的編譯安裝步驟”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秦安县| 林芝县| 科尔| 廉江市| 临高县| 大兴区| 顺昌县| 大庆市| 沙湾县| 舟山市| 永寿县| 嘉荫县| 广河县| 浑源县| 繁昌县| 西安市| 呼和浩特市| 松阳县| 临邑县| 射洪县| 巨鹿县| 鸡西市| 汤阴县| 西林县| 大厂| 青神县| 铅山县| 铜梁县| 自治县| 纳雍县| 平顶山市| 咸阳市| 新丰县| 舒城县| 博野县| 湾仔区| 潞西市| 青冈县| 洛南县| 大余县| 双柏县|