91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Azkaban是什么

發布時間:2021-12-10 13:44:38 來源:億速云 閱讀:157 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關Azkaban是什么 ,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、Azkaban是什么 
     我們在工作中應該都遇到過這樣的場景:有一個任務,這個任務可以劃分成多個較小的任務完成,之所以進行劃分是因為小任務之間可以并發的進行,例如是一個shell腳本執行的命令吧,大任務A可以劃分成B、C、D、E四個子任務(腳本)完成,而B和C是可以同時進行的,D依賴B和C的輸出,E又依賴D的輸出,于是我們一般的做法可能就是開兩個終端同時執行B和C,等兩個都執行完成之后再執行D,接著在執行E。整個執行的過程都需要我們參與,但是整個的執行過程類似一個有向無環圖,每一個子任務的執行可以看作整個任務的一個流,我們可以同時從沒有入度的節點開始執行,任何沒有流向(兩個節點之間沒有通路)關系節點都可以并行得執行,人為的控制難免就有點力不從心了(因為很多任務都需要在深夜執行,一般我們都是寫腳本并設置cron),這時候我們需要的就是一個工作流調度器。      Azkaban就是完成這種任務的(其實主要還是用于對hadoop生態圈的任務的支持),它是由Linkedin實現并開源的,主要用于在一個工作流內以一個特定的順序運行一組工作和流程,它的配置是通過簡單的key:value對的方式,通過配置中的dependencies來設置依賴關系,這個依賴關系必須是無環的,否則會被視為無效的工作流。      Azkaban有如下功能特點:

  • Web用戶界面

  • 方便上傳工作流

  • 方便設置任務之間的關系

  • 調度工作流

  • 認證/授權(權限的工作)

  • 能夠殺死并重新啟動工作流

  • 模塊化和可插拔的插件機制

  • 項目工作區

  • 工作流和任務的日志記錄和審計

我覺得這些都是一些主流的工作流調度器應該支持的功能,我覺得azkaban的web頁面做得比較好,這樣可以大大降低管理成本,它支持的任務調度類型是基于插件的,這也就使得我們可以實現自己的插件來完成特定的需求。另外,它還能夠在任務完成、失敗、成功的時候發送email,支持SLA設置等功能,總體來說,功能還是很強大的。 
2、安裝部署 
     azkaban分為三個組建:mysql服務器、web服務器和executor服務器,其中mysql用于存儲一些項目以及執行計劃(所有任務的屬性信息、執行計劃、執行的結果以及輸出),每次執行情況等信息;web服務器使用Jetty對外提供web服務,是用戶可以通過web頁面方便的管理;執行服務器是負責具體的工作流的提交,執行,可以啟動多個執行服務器,它們通過mysql數據庫來協調任務的執行。

Azkaban是什么

首先需要從官網上下載各個模塊,都是二進制的安裝包格式,當然也可以使用源碼編譯,下載地址:http://azkaban.github.io/downloads.html 接下來的安裝過程可以參考:http://blog.javachen.com/2014/08/25/install-azkaban/ 因為web客戶端是通過https的方式進行訪問的,所以這里需要創建一個keystore證書文件,使用命令:keytool -keystore keystore -alias jetty -genkey -keyalg RSA,按照提示輸入需要的信息,最后輸入的”輸入 <jetty> 的密鑰口令“可以和密鑰庫口令一樣,并且需要在web服務器的配置文件azkaban.properties中修改Jetty服務器的屬性,其中 jetty.keystore=keystore jetty.password=redhat jetty.keypassword=redhat jetty.truststore=keystore jetty.trustpassword=redhat 設置為你生成的證書文件的信息。接著就可以在瀏覽器中輸入https://ip:8443訪問azkaban了(登錄的用戶名和密碼是在web服務器的user配置文件中設置的,這里我們使用的是admin)。 

3、測試 
     這里我們進行簡單的測試,由于azkaban原生是支持shell命令(所以也就可以支持shell腳本以及python等其他腳本程序)的,所以可以使用簡單的shell命令進行測試,我們創建4個子任務,每一個子任務的配置都是任務名.job文件。它們的配置如下: test.job
type=command
command=sleep 3
command.1=echo "Hello World" 
start.job

type=command
command=sleep 5
command.1=echo "start execute" 
sleep.job
type=command
dependencies=test, start
command=sleep 10 
finish.job
type=command
dependencies=sleep
command=echo "finish" 這里通過dependencies屬性來標識該任務依賴的任務,可以有一個或者多個,通過","分割,這些任務的type都是command,azkaban也支持其它類型的命令類型,有些需要安裝插件才能支持。 然后我們將這四個job文件放在一個目錄下壓縮成一個zip文件,在Azkaban的web界面的首頁可以通過”Create Project“按鈕來創建新的一個工作流,輸入必要的信息之后會進入到project界面,我們可以通過upload上傳我們要執行的任務流,可以重復upload進行覆蓋。但是之前的任務流的執行結果不會被覆蓋。如果工作流的配置有問題(例如出現相互依賴),上傳會不成功,但是沒有看到提示。等待壓縮文件上傳成功之后,我們可以通過界面查看各個任務的依賴關系圖:

Azkaban是什么

可以通過”Execute Flow“按鈕來啟動一個工作流的一次執行,點擊之后會進入配置界面,包括其中包括”Flow View“、”Notification“、”Failure Options“、”Concurrent“、”Flow Parameters“,另外還需要注意的是左下角的Schedule按鈕,這里可以設置工作流的定時執行。注意,這里是每一次工作流執行的時候都需要設置的,目前沒有看到保存歷史設置的情況,當然如果希望重復之前執行的一次設置的話可以找到之前的那次執行,然后再次運行(這時候還是需要進入配置頁面,但是會保存那次運行的配置)。其中需要注意的是在”Failure Options“和”Concurrent“中的配置,他們分別配置了在工作流中一個任務執行失敗之后的處理和這個project的多次執行流(多次Execute)如果存在并行時的處理。我們在這里不進行配置,直接執行命令: 提交之后會提示本次執行的id(我覺得這里通過一個可識別的字符串進行標示會更好一些),這個id是全局唯一的,也就是說多個project的每一次執行都會遞增得到新的exec id。 執行完成之后,可以通過web界面查看每一個任務流的執行結果以及每一個子任務的執行結果。

Azkaban是什么

在Graph標簽下可以查看每一個任務執行的情況、當前執行到哪一個任務了,Flow Log中會實時得輸出工作流的運行日志,點擊每一個子任務可以查看子任務的運行狀態以及實時輸出的日志信息,總體來說還是非常方便的。 
這里涉及的幾個概念:project、flow和job,首先一個project是一個要執行任務的整體,它可以包含多個flow,每一個project可以上傳一個.zip的文件,flow之間是相互獨立的,但是有一個總的flow,這個flow可能引用其他的flow作為它執行的一部分(相當于總flow的一個子job,但是這個job是一個flow)。每一個flow包含多個job,這些job是相互獨立的,通過job文件中dependencies設置依賴關系,每一個flow的結束job可以作為這個flow的標識(flow名),我們可以通過這樣的方式將一個flow作為一個job加入到另外的flow中: jobGroup.job  type=flow
flow.name=finish
dependencies=realStart finish是之前定義的flow的標識(因為它是終止job),這個flow作為一個job可以設置其他的依賴關系,下面是一個包含子flow的任務依賴圖:

Azkaban是什么

我覺得之所以要設計成這樣是為了將每個flow獨立出來,方便flow的重用。 
4、用戶管理 
azkaban中有用戶和用戶組的概念,用戶和用戶組以及權限的配置信息保存在配置文件azkaban-users.xml中,認證的方式是由azkaban.user.XmlUserManager來實現的,具體的配置可以在azkaban.properties(web服務器的conf下)進行配置:

ParameterDefault
user.manager.classazkaban.user.XmlUserManager
user.manager.xml.fileazkaban-users.xml

我們在azkaban-users.xml可以配置三類內容:user、group和role,user項可以配置username、password、roles、group信息,分別配置用戶名、密碼、用戶的權限以及所屬的組;group項可以配置name和roles,分別用于配置組名和這個組使用的權限;role定義了權限信息,可以配置name和permissions,分別表示規則名和賦予的權限信息。azkaban支持的權限包括:

PermissionsValues
ADMIN可以做任務事情,包括給其他用戶添加、修改權限
READ只能訪問每一個project的內容和日志信息
WRITE可以在已創建的project上傳、修改任務的屬性,可以刪除任何的project
EXECUTE允許用戶執行任何的任務流
SCHEDULE允許用戶添加、刪除任何任務流的調度信息
CREATEPROJECTS在禁止創建project的情況下仍允許創建新的project

這里的權限設置沒有細化到每一個user在每一個project中,每一個用戶所擁有的權限可以在每一個project下面執行相同的操作,另外用戶和用戶組之間的權限信息還不是很明確,如果使用用戶組作為權限的分配單位(即一個用戶組下的所有用戶擁有相同的權限),每個用戶再次指定權限就有點多余了。 

關于“Azkaban是什么 ”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

自贡市| 堆龙德庆县| 松阳县| 合江县| 延吉市| 平安县| 安康市| 沅陵县| 宝应县| 鄯善县| 玉林市| 彰武县| 桐梓县| 涟水县| 堆龙德庆县| 南城县| 延安市| 顺昌县| 平远县| 衡水市| 怀宁县| 孝昌县| 贵州省| 广河县| 固镇县| 双辽市| 临沭县| 平阴县| 抚顺市| 鹰潭市| 河南省| 武夷山市| 二连浩特市| 淮阳县| 太和县| 宝丰县| 突泉县| 灵川县| 广灵县| 象山县| 施甸县|