任務調度-DAG和Oozie基礎

本文主要內容

  • 有向無環(huán)圖
  • 拓撲排序
  • Oozie

有向無環(huán)圖

什么是有向無環(huán)圖

有向無環(huán)圖(Directed Acyclic Graph, DAG)是有向圖的一種改淑,特點是圖中沒有環(huán)传睹。常常被用來表示事件之間的驅動依賴關系焕窝,管理任務之間的調度死陆。拓撲排序是對DAG的頂點進行排序,使得對每一條有向邊(u, v)显拳,均有u(在排序記錄中)比v先出現窿克。亦可理解為對某點v而言,只有當v的所有源點均出現了髓涯,v才能出現袒啼。


image

為了描述一個Job內所有Task相互依賴關系,可以將Job中的每個Task對應為一個節(jié)點纬纪,將一個Job描述為一張有向無環(huán)圖DAG
有向無環(huán)圖對于構造一個任務必須發(fā)生在另一個任務之前的這種依賴模型特別有效蚓再。

入度:進入該頂點的邊的個數稱為該頂點的入度。
出度:從該頂點發(fā)出的邊的個數包各。

判斷一個圖是否有環(huán):

任何一個有向無環(huán)圖中必定至少存在一個入度為0的頂點摘仅,至少存在一個出度為0的頂點,否則圖中必存在環(huán)问畅。

偏序和全序

偏序:圖中的任意一對頂點要么有先后關系娃属,要么沒有關系,不存在互相矛盾的關系(環(huán)路)
全序:圖中的任意一對頂點都有明確的關系

DAG的拓撲排序

由一個有向無環(huán)圖的頂點組成的序列护姆,當且僅當滿足下列條件時矾端,稱為該圖的一個拓撲排序(Topological sorting)。


image

拓撲排序的實現

算法實現片段:
<pre><code class="Python">
def kahn_topological(graphNodes):
"""
L← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
:return: L list
"""
L = []
S = []
S =getZeroIncomingDegreeNode(graphNodes,S)
while len(S)>0:
zeroNode = S.pop()
L.append(zeroNode)
S = getZeroIncomingDegreeNode(graphNodes,S,zeroNode=zeroNode)
return L
</code></pre>

Oozie

什么是Oozie

Cloudera公司開源卵皂,Oozie是一個基于工作流引擎的服務器秩铆,可以在上面運行Hadoop的Map Reduce和Pig任務。它其實就是一個運行在Java Servlet容器(比如Tomcat)中的Javas Web應用灯变。對于Oozie來說殴玛,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任務)柒凉,這些操作通過有向無環(huán)圖的機制控制族阅。這種控制依賴是說,一個操作的輸入依賴于前一個任務的輸出膝捞,只有前一個操作完全完成后坦刀,才能開始第二個愧沟。以xml的形式寫調度流程,可以調度mr鲤遥,pig沐寺,hive,shell盖奈,jar

Oozie架構

C/S架構(具體解釋可參考10種常見的軟件架構模式

image

Oozie簡化架構圖


image
Oozie執(zhí)行任務的實現原理

<img src="https://ws1.sinaimg.cn/large/6a6e8236gy1fwejxca6k8j20o50dlabn.jpg"/>

  • Oozie Server根據workflow.xml 提交一個map only的MR Job
  • map根據封裝用戶定義的action,通過JobClient將lib包的jar包和- - job.xml提交JobTracker
  • action Job開始工作
  • callback/polling 獲取action狀態(tài)(正常情況下,通過callback URL通知完成)
Oozie工作流示例
image

參考資料:

圖論-有向無環(huán)圖的拓撲排序
拓撲排序的原理及其實現
淺談工作流調度系統(tǒng)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末混坞,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子钢坦,更是在濱河造成了極大的恐慌究孕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爹凹,死亡現場離奇詭異厨诸,居然都是意外死亡,警方通過查閱死者的電腦和手機禾酱,發(fā)現死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門微酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颤陶,你說我怎么就攤上這事颗管。” “怎么了滓走?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵垦江,是天一觀的道長。 經常有香客問我闲坎,道長疫粥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任腰懂,我火速辦了婚禮梗逮,結果婚禮上,老公的妹妹穿的比我還像新娘绣溜。我一直安慰自己慷彤,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布怖喻。 她就那樣靜靜地躺著底哗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锚沸。 梳的紋絲不亂的頭發(fā)上跋选,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音哗蜈,去河邊找鬼前标。 笑死坠韩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的炼列。 我是一名探鬼主播只搁,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俭尖!你這毒婦竟也來了氢惋?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稽犁,失蹤者是張志新(化名)和其女友劉穎焰望,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體已亥,經...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡柿估,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了陷猫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡的妖,死狀恐怖绣檬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情嫂粟,我是刑警寧澤娇未,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站星虹,受9級特大地震影響零抬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜宽涌,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一平夜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卸亮,春花似錦忽妒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溶诞,卻和暖如春鸯檬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背螺垢。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工喧务, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赖歌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓蹂楣,卻偏偏與公主長得像俏站,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痊土,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359