數(shù)據(jù)平臺(tái)工具系統(tǒng)之調(diào)度系統(tǒng)

數(shù)據(jù)平臺(tái)工具系統(tǒng)概述

談到大數(shù)據(jù)平臺(tái)赎婚,在當(dāng)今大數(shù)據(jù)備受關(guān)注的時(shí)代刘绣,大家首先想到會(huì)是HDFS、YARN挣输、Hbase纬凤、Spark、Hive之類著名開源組件撩嚼,當(dāng)然目前基于開源解決方案的大數(shù)據(jù)平臺(tái)建設(shè)一般也是圍繞著它們作為底層支持的停士,我司也是采用這種開源方案,那么是否我們將這些組件配置好參數(shù)搭建run起來完丽,就可以稱之為我們已經(jīng)有了大數(shù)據(jù)平臺(tái)了呢恋技?這個(gè)回答當(dāng)然是否定的。

目前從業(yè)界來看逻族,如果是基于PasS層做數(shù)據(jù)平臺(tái)建設(shè)的(本文也是基于PasS層平臺(tái)建設(shè)做討論)蜻底,基本都需要在這些Hadoop生態(tài)基礎(chǔ)組件之上研發(fā)衍生出工具系統(tǒng)層,那工具系統(tǒng)層的主要的作用是什么聘鳞,我認(rèn)為主要有以下幾點(diǎn):

1薄辅、基礎(chǔ)服務(wù)封裝要拂,滿足業(yè)務(wù)需求:如數(shù)據(jù)采集系統(tǒng)每天從業(yè)務(wù)系統(tǒng)抽取幾千張表的數(shù)據(jù)存儲(chǔ)到HDFS中,數(shù)據(jù)倉庫團(tuán)隊(duì)后續(xù)基于存儲(chǔ)在HDFS上的數(shù)據(jù)進(jìn)行數(shù)據(jù)倉庫的建設(shè)站楚。

2宇弛、減少使用門檻和學(xué)習(xí)成本:Hadoop生態(tài)系統(tǒng)的周邊組件的使用有技術(shù)使用門檻,一般操作接口都是Linux命令或需要編程對(duì)接的API程序接口源请。

3枪芒、安全性:Hadoop生態(tài)周邊組件的安全性提供的一般相對(duì)比較薄弱,需要嚴(yán)格控制谁尸,需要在工具系統(tǒng)層面做統(tǒng)一收口舅踪,也就是說將業(yè)務(wù)同事的操作由工具系統(tǒng)代理提交給Hadoop生態(tài),工具系統(tǒng)就可以控制操作的安全性良蛮,數(shù)據(jù)的安全性抽碌,當(dāng)然我們討論的基于PasS層做數(shù)據(jù)平臺(tái)建設(shè),如果基于SasS層做數(shù)據(jù)平臺(tái)建設(shè)决瞳,一般可考慮使用Kerberos做安全性控制货徙,但是細(xì)粒度的數(shù)據(jù)權(quán)限還是很難控制的。

回到本文正題皮胡,大數(shù)據(jù)平臺(tái)工具系統(tǒng)之任務(wù)調(diào)度系統(tǒng)痴颊。從業(yè)界各大互聯(lián)網(wǎng)公司以及我司的任務(wù)調(diào)度系統(tǒng)在數(shù)據(jù)平臺(tái)的作用來看,像點(diǎn)樣子的大數(shù)據(jù)平臺(tái)屡贺,基本都有調(diào)度系統(tǒng)的存在蠢棱。

調(diào)度系統(tǒng)的類別

從技術(shù)實(shí)現(xiàn)和功能層面結(jié)合來劃分,市場(chǎng)上目前有兩類的調(diào)度系統(tǒng)

1甩栈、基于時(shí)間維度的

基于時(shí)間維度的這類調(diào)度系統(tǒng)最根本的功能就是將任務(wù)在指定的時(shí)間計(jì)劃下泻仙,正確及時(shí)的運(yùn)行起來,比如我希望一個(gè)任務(wù)在每周三的下午14點(diǎn)運(yùn)行起來量没,Linux的crontab玉转、quartz、cron4j殴蹄、當(dāng)當(dāng)網(wǎng)的elastic-job都屬于這類究抓,當(dāng)當(dāng)網(wǎng)的elastic-job在高可用、集群化饶套、失敗轉(zhuǎn)移漩蟆、分片化執(zhí)行任務(wù)方面做的更加的完善垒探,這里不做深入討論妓蛮。

2、基于DAG關(guān)系維度(也可結(jié)合時(shí)間維度)

這類調(diào)度系統(tǒng)主要的目標(biāo)是基于DAG圖圾叼,將任務(wù)在指定的邏輯關(guān)系下正確執(zhí)行蛤克,也可以結(jié)合時(shí)間維度捺癞,我司的調(diào)度系統(tǒng)目前也是采用DAG關(guān)系維度方向。

舉2個(gè)例子:

A任務(wù)執(zhí)行完才可以執(zhí)行A任務(wù)下的B任務(wù)构挤。

A任務(wù)12點(diǎn)執(zhí)行髓介,A執(zhí)行完下面的B任務(wù)才可以執(zhí)行。

上面的例子比較簡(jiǎn)單筋现,現(xiàn)實(shí)場(chǎng)景可能涉及到幾百個(gè)任務(wù)相互關(guān)聯(lián)依賴唐础,以及任務(wù)執(zhí)行之間的延遲策略,周期性執(zhí)行策略都需要考慮矾飞。

目前這類開源調(diào)度系統(tǒng)比較出名的有Azkaban一膨、oozie。

選擇自研還是開源直接使用

針對(duì)自研還是使用開源版本直接使用洒沦,我們選擇的是自研方向豹绪,主要有以下幾點(diǎn)原因:

使用開源有學(xué)習(xí)成本:如果想用好開源產(chǎn)品,遇到問題及時(shí)解決申眼,必須在功能和代碼實(shí)現(xiàn)級(jí)別都非常熟悉瞒津,需要有一定的學(xué)習(xí)時(shí)間。

兼容性:我們數(shù)據(jù)平臺(tái)的工具系統(tǒng)層的其它工具系統(tǒng)都是自研括尸,如果中間有一個(gè)開源的巷蚪,這樣對(duì)后續(xù)的產(chǎn)品交互通信和功能層面都需要進(jìn)行銜接,可能還需要二次開發(fā)濒翻。

功能不滿足:開源產(chǎn)品的功能不一定滿足自身的業(yè)務(wù)場(chǎng)景钓辆。

當(dāng)然事情不是絕對(duì)的,需要根據(jù)自身的資源和實(shí)際情況做考慮肴焊。

我們自研調(diào)度系統(tǒng)實(shí)現(xiàn)了哪些功能

任務(wù)配置管理:支持添加任務(wù)基本信息前联,同一個(gè)界面支持配置關(guān)系維度、時(shí)間維度娶眷,以及關(guān)系維度和時(shí)間維度的混合配置方式似嗤。界面化操作配置,無需像oozie配置任務(wù)工作流需要編寫XML文件后加載届宠。

任務(wù)觸發(fā)機(jī)制:支持時(shí)間維度烁落、時(shí)間和關(guān)系維度結(jié)合觸發(fā)任務(wù)執(zhí)行機(jī)制,下圖舉出三種示例:

任務(wù)觸發(fā)機(jī)制

任務(wù)延遲執(zhí)行策略:任務(wù)延時(shí)執(zhí)行策略的使用一般發(fā)生時(shí)間和關(guān)系結(jié)合的場(chǎng)景豌注,目前我們系統(tǒng)采用的延遲即刻恢復(fù)策略伤塌,那先來說說什么叫延遲即刻恢復(fù)策略,我們先來看一下如下圖示兩個(gè)場(chǎng)景:

任務(wù)延遲執(zhí)行策略

我們先來分析一下場(chǎng)景1的情況轧铁,A任務(wù)1點(diǎn)半開始運(yùn)行每聪,B任務(wù)依賴A任務(wù)2點(diǎn)運(yùn)行,假設(shè)A任務(wù)1點(diǎn)半開始運(yùn)行后,運(yùn)行了半個(gè)小時(shí)到2點(diǎn)還沒有運(yùn)行完药薯,這個(gè)時(shí)候到了B任務(wù)2點(diǎn)啟動(dòng)的時(shí)間發(fā)現(xiàn)A任務(wù)沒有運(yùn)行完绑洛,程序這時(shí)就會(huì)將任務(wù)B標(biāo)記為父任務(wù)延遲狀態(tài),那假設(shè)A任務(wù)在2點(diǎn)20的時(shí)候執(zhí)行完成了童本,應(yīng)用延遲即刻恢復(fù)策略真屯,就會(huì)馬上將B任務(wù)帶起了運(yùn)行。

我們?cè)賮砜匆幌聢?chǎng)景2的稍微復(fù)雜一點(diǎn)的情況穷娱,A任務(wù)每小時(shí)運(yùn)行一次绑蔫,B任務(wù)依賴A任務(wù)每天的2點(diǎn)運(yùn)行一次,假設(shè)A任務(wù)1點(diǎn)開始執(zhí)行泵额,但是執(zhí)行到2點(diǎn)還沒有運(yùn)行完晾匠,大家注意到了2點(diǎn)A任務(wù)的下一個(gè)執(zhí)行周期也到了,并且B任務(wù)也需要在2點(diǎn)執(zhí)行梯刚,那遇到這種情況凉馆,我們處理邏輯是這樣做的,將A任務(wù)標(biāo)記為自延遲狀態(tài)并且在2點(diǎn)的時(shí)候不執(zhí)行亡资,將B任務(wù)標(biāo)記為父任務(wù)延遲狀態(tài)并且在2點(diǎn)的時(shí)候也不執(zhí)行澜共,如果A任務(wù)在2點(diǎn)20執(zhí)行完成,則將B任務(wù)應(yīng)用延遲即刻恢復(fù)策略馬上執(zhí)行起來锥腻。不知道大家有沒有疑問就是A任務(wù)目前也是自延遲狀態(tài)嗦董,它會(huì)應(yīng)用延遲即刻恢復(fù)策略馬上運(yùn)行起來嗎?答案是不能的瘦黑,因?yàn)锳任務(wù)如果馬上運(yùn)行起來京革,狀態(tài)就是開始狀態(tài),B任務(wù)運(yùn)行起來后看見A任務(wù)是開始狀態(tài)則必然失敗幸斥,所以此處需要增加一個(gè)邏輯就是自延遲狀態(tài)的任務(wù)在恢復(fù)階段匹摇,需要檢查這個(gè)任務(wù)下面是否有父任務(wù)延遲狀態(tài)的任務(wù),如果有甲葬,優(yōu)先將這個(gè)任務(wù)下處于父任務(wù)延遲狀態(tài)的子任務(wù)恢復(fù)廊勃。

上面兩個(gè)場(chǎng)景的描述都是針對(duì)延遲即刻恢復(fù)的策略說明,我們可能還需要考慮一種情況就是延遲忽略恢復(fù)策略经窖,也就是針對(duì)上面的場(chǎng)景1和場(chǎng)景2坡垫,當(dāng)B任務(wù)到達(dá)觸發(fā)時(shí)間需要執(zhí)行,但是發(fā)現(xiàn)依賴的父任務(wù)沒有執(zhí)行成功的画侣,這時(shí)候就應(yīng)用延遲忽略恢復(fù)策略冰悠,忽略B任務(wù)的本次執(zhí)行。

任務(wù)基礎(chǔ)信息和關(guān)系信息實(shí)時(shí)變更:任務(wù)基本信息以及上配乱、下游依賴關(guān)系的變更都能立刻生效溉卓。

這里需要注意的是皮迟,實(shí)時(shí)生效再技術(shù)層面需要數(shù)據(jù)的強(qiáng)一致性保證,所以在業(yè)務(wù)功能方面要將影響任務(wù)信息狀態(tài)變化的操作梳理出來的诵。例如任務(wù)的增万栅、刪佑钾、改以及任務(wù)運(yùn)行中的狀態(tài)變化西疤,手動(dòng)觸發(fā)等場(chǎng)景都可能涉及。所以針對(duì)這些操作要使用鎖進(jìn)行互斥處理休溶,分布式環(huán)境下需要使用分布式鎖代赁。

任務(wù)手動(dòng)觸發(fā)執(zhí)行策略:支持手動(dòng)觸發(fā)任務(wù),目前有三種觸發(fā)模式兽掰,觸發(fā)當(dāng)前任務(wù)芭碍、觸發(fā)當(dāng)前任務(wù)及下游子孫,觸發(fā)當(dāng)前任務(wù)的下游和子孫但是不包含當(dāng)前任務(wù)孽尽。

任務(wù)手動(dòng)觸發(fā)執(zhí)行策略

特殊情況流程處理機(jī)制:人工標(biāo)注失敗或狀態(tài)恢復(fù)重置功能窖壕,調(diào)度系統(tǒng)的任務(wù)類型有很多種,例如一個(gè)數(shù)據(jù)抽取任務(wù)依賴于業(yè)務(wù)數(shù)據(jù)庫的穩(wěn)定性杉女,我們不能保證依賴環(huán)境都完全高效可用瞻讽,遇到特殊情況可以將任務(wù)重置狀態(tài),重新進(jìn)行全新的生命周期恢復(fù)執(zhí)行至關(guān)重要熏挎,此功能都是在實(shí)踐中吸取的經(jīng)驗(yàn):)速勇,大家懂的~。

任務(wù)手動(dòng)停止資源釋放:任務(wù)停止并不是簡(jiǎn)單的設(shè)置一下狀態(tài)坎拐,如果任務(wù)是MR烦磁、Sqoop、Hive等類型哼勇,需要將對(duì)應(yīng)在YARN上的任務(wù)停止釋放都伪。

報(bào)警通知機(jī)制:任務(wù)失敗報(bào)警、超時(shí)報(bào)警积担、支持用戶指定時(shí)間查看任務(wù)運(yùn)行狀態(tài)的訂閱功能院溺。

任務(wù)運(yùn)行歷史日志和實(shí)時(shí)日志可視化:日志是觀察任務(wù)執(zhí)行情況和排查問題的重要信息,需要提供給用戶便捷的日志瀏覽功能磅轻,跟蹤任務(wù)執(zhí)行進(jìn)度狀態(tài)珍逸。

任務(wù)信息可視化展現(xiàn):任務(wù)的狀態(tài)信息、上下游關(guān)系方便查看聋溜。

調(diào)度系統(tǒng) 3.0預(yù)告

我們不斷優(yōu)化迭代調(diào)度系統(tǒng)的功能和技術(shù)架構(gòu)谆膳,目前調(diào)度系統(tǒng)3.0已經(jīng)開始研發(fā),主要的改進(jìn)涉及如下方面:

調(diào)度系統(tǒng)多租戶方面:目前調(diào)度系統(tǒng)主要針對(duì)我們自身的數(shù)據(jù)倉庫團(tuán)隊(duì)使用撮躁,其它的業(yè)務(wù)團(tuán)隊(duì)也有需求和意愿進(jìn)行使用漱病,我們將會(huì)用一個(gè)迭代針對(duì)業(yè)務(wù)數(shù)據(jù)的隔離,基礎(chǔ)數(shù)據(jù)隔離,業(yè)務(wù)功能操作隔離杨帽,資源使用隔離方面進(jìn)行研發(fā)演進(jìn)漓穿,實(shí)現(xiàn)多租戶的使用體系注盈。

任務(wù)執(zhí)行策略方面:上面再介紹現(xiàn)有功能的時(shí)候晃危,介紹了任務(wù)延遲策略幾種情況、后續(xù)我們會(huì)根據(jù)業(yè)務(wù)需求老客,針對(duì)這方面做更多的策略支持僚饭,并且實(shí)現(xiàn)界面化的可選擇配置,這樣業(yè)務(wù)同事根據(jù)業(yè)務(wù)場(chǎng)景可以自行選擇胧砰。

技術(shù)架構(gòu)不斷優(yōu)化:調(diào)度系統(tǒng) 3.0此次迭代會(huì)將后臺(tái)公用組件模塊化鳍鸵,無狀態(tài)化,以實(shí)現(xiàn)高可用尉间,負(fù)載均衡等偿乖。

總結(jié)

任務(wù)調(diào)度系統(tǒng)是大數(shù)據(jù)平臺(tái)工具系統(tǒng)核心組件,本文也將我們自身實(shí)現(xiàn)的一些功能特性做了相關(guān)描述哲嘲,后續(xù)我們會(huì)針對(duì)我們自身的大數(shù)據(jù)平臺(tái)贪薪,從工具系統(tǒng)層、核心組件層撤蚊,在功能和技術(shù)實(shí)現(xiàn)方面持續(xù)介紹古掏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侦啸,隨后出現(xiàn)的幾起案子槽唾,更是在濱河造成了極大的恐慌,老刑警劉巖光涂,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庞萍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡忘闻,警方通過查閱死者的電腦和手機(jī)钝计,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來齐佳,“玉大人私恬,你說我怎么就攤上這事×段猓” “怎么了本鸣?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)硅蹦。 經(jīng)常有香客問我荣德,道長(zhǎng)闷煤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任涮瞻,我火速辦了婚禮鲤拿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘署咽。我一直安慰自己近顷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布艇抠。 她就那樣靜靜地躺著幕庐,像睡著了一般久锥。 火紅的嫁衣襯著肌膚如雪家淤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天瑟由,我揣著相機(jī)與錄音絮重,去河邊找鬼。 笑死歹苦,一個(gè)胖子當(dāng)著我的面吹牛青伤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播殴瘦,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狠角,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蚪腋?” 一聲冷哼從身側(cè)響起丰歌,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屉凯,沒想到半個(gè)月后立帖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悠砚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年晓勇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灌旧。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绑咱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枢泰,到底是詐尸還是另有隱情描融,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布宗苍,位于F島的核電站稼稿,受9級(jí)特大地震影響薄榛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜让歼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一敞恋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谋右,春花似錦硬猫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辈挂,卻和暖如春衬横,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背终蒂。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蜂林, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拇泣。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓噪叙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親霉翔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子睁蕾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,980評(píng)論 3 119
  • 詩情畫意_b0f9閱讀 214評(píng)論 0 0
  • 從出生開始债朵,便一直都是和叔叔家生活在一起子眶,所以,我們的關(guān)系很好葱弟,在我們那片地區(qū)可以當(dāng)作模范壹店,我從沒發(fā)現(xiàn)有哪家的關(guān)系...
    紅蘑菇TT閱讀 157評(píng)論 0 0
  • 你是不是也認(rèn)為“貓狗”大戰(zhàn),只會(huì)讓你從中獲得更多的網(wǎng)購(gòu)優(yōu)惠呢芝加? 你是不是也認(rèn)為現(xiàn)在的“拼X多”就是十年前的某寶呢...
    Jenny020閱讀 115評(píng)論 0 0
  • 我有一個(gè)惡心的妹妹硅卢。有多惡心呢,講個(gè)故事: 某天她趁我不備吧唧親了我一大口(就是那種吧唧口水印你臉上的那種)藏杖,我萬...
    水色森森閱讀 862評(píng)論 1 1