文章出自: http://blog.csdn.net/lili72
1、 能定時(shí)發(fā)起各類(lèi)型的任務(wù)
1.1 任務(wù)類(lèi)型比如 shell腳本,或jar 程序,或調(diào)用存儲(chǔ)進(jìn)程
1.2 可以設(shè)置每天甚么時(shí)候開(kāi)始履行,每天履行幾次。或每隔多久履行1次(類(lèi)crontab)
1.3 數(shù)據(jù)平臺(tái)1般的任務(wù)類(lèi)型有:
1.3.1 101任務(wù): 檢查數(shù)據(jù)源文件是不是到齊(包括文件個(gè)數(shù),或是.ok文件),如果到齊,把任務(wù)狀態(tài)標(biāo)志為成功,如果沒(méi)有到齊循環(huán)屢次檢測(cè),任務(wù)狀態(tài)標(biāo)志為進(jìn)行中。可能由于各種緣由會(huì)致使數(shù)據(jù)源延遲,所有需要屢次循環(huán)檢測(cè)數(shù)據(jù)源,而不是把該任務(wù)標(biāo)志位出錯(cuò)。而如果數(shù)據(jù)源遲遲沒(méi)有成功履行,會(huì)影響到后面所有的報(bào)表ETL任務(wù),所以最好的設(shè)計(jì)是假設(shè)數(shù)據(jù)源檢測(cè)任務(wù)超過(guò)1定的時(shí)間沒(méi)有成功完成,則預(yù)警到對(duì)應(yīng)的負(fù)責(zé)人。短信或郵件通知負(fù)責(zé)人需要處理該數(shù)據(jù)源,數(shù)據(jù)源極可能出現(xiàn)問(wèn)題。最好1個(gè)數(shù)據(jù)源配置1個(gè)101任務(wù),而不是所有的數(shù)據(jù)源配置1個(gè)任務(wù),這樣就盡可能減少了數(shù)據(jù)源之間的耦合。不會(huì)由于某個(gè)數(shù)據(jù)源的延遲或問(wèn)題影象全部數(shù)據(jù)平臺(tái)的數(shù)據(jù)。實(shí)現(xiàn)方式可以是shell腳本,檢查對(duì)應(yīng)數(shù)據(jù)源的.ok文件是不是生成。靈活1點(diǎn)可以用程序?qū)崿F(xiàn),把要監(jiān)控的內(nèi)容都配置到數(shù)據(jù)庫(kù)中,程序通過(guò)讀取數(shù)據(jù)庫(kù)中的配置內(nèi)容檢測(cè)各數(shù)據(jù)源的到達(dá)情況。
1.3.2 102任務(wù):加載數(shù)據(jù)到hdfs中。判斷各自的數(shù)據(jù)源依賴(lài)任務(wù)是不是已成功完成,如果完成進(jìn)行加載任務(wù)。
1.3.3 103任務(wù):數(shù)據(jù)清洗轉(zhuǎn)換。這里有數(shù)據(jù)去重,數(shù)據(jù)轉(zhuǎn)碼,去掉臟數(shù)據(jù)等
1.3.4 104任務(wù):履行報(bào)表或其它數(shù)據(jù)利用層轉(zhuǎn)換。
1.3.5 105任務(wù):清算任務(wù)(清算1些日志或很久不用的數(shù)據(jù)),或數(shù)據(jù)轉(zhuǎn)移任務(wù),把數(shù)據(jù)sqoop到關(guān)系型數(shù)據(jù)。
2、 能在依賴(lài)完成以后才開(kāi)始履行(履行任務(wù)之前,首先必須檢測(cè)自己的依賴(lài)任務(wù)是不是已成功履行完成,如果是則履行當(dāng)前任務(wù),否則當(dāng)前任務(wù)進(jìn)入等待隊(duì)列)
3、 能觸發(fā)下級(jí)任務(wù)履行(當(dāng)前任務(wù)成功履行完成,觸發(fā)依賴(lài)當(dāng)前任務(wù)的下級(jí)任務(wù)開(kāi)始履行)
4、 支持并發(fā)操作(多個(gè)沒(méi)有關(guān)系依賴(lài)的任務(wù),可以同步履行)
5、 支持散布式調(diào)度 (如果調(diào)度的任務(wù)很多,在1臺(tái)機(jī)器集中觸發(fā),對(duì)該臺(tái)機(jī)器的壓力很大,最好可以散布在多臺(tái)機(jī)器上履行)
6 、任務(wù)分配優(yōu)先級(jí)(有些報(bào)表,或算法優(yōu)先級(jí)別比較高,需要盡快完成)
7、 可以可視化管理任務(wù)(比如:手動(dòng)停止正在運(yùn)行的任務(wù),手動(dòng)觸發(fā)其它任務(wù)運(yùn)行)
8、 出錯(cuò)可以屢次自動(dòng)重新發(fā)起(由于平臺(tái)本身的bug hadoop,hive等都有本身的bug,重新發(fā)起1次,就能夠正常運(yùn)行了,hive中最多見(jiàn)的是高并發(fā)找不到表Table 'hive.DELETEME1414791576856' doesn't exist)。
9、 出錯(cuò)會(huì)記錄出錯(cuò)日志并預(yù)警。(有了日志可以很快定位出問(wèn)題的緣由,或記錄任務(wù)在hadoop中的jobid,可以到hadoop的日志中查詢(xún)?nèi)蝿?wù)的報(bào)錯(cuò)緣由)
10 、 記錄任務(wù)的履行時(shí)間(包括開(kāi)始履行時(shí)間,結(jié)束時(shí)間,任務(wù)耗時(shí),記錄這些時(shí)間可以評(píng)估全部調(diào)度系統(tǒng)的繁忙時(shí)間和空閑時(shí)間,有益于后續(xù)配置任務(wù),同時(shí)可以監(jiān)控任務(wù)的運(yùn)行情況,優(yōu)化某些任務(wù))
固然大家可以先研究下開(kāi)源的淘寶調(diào)度:
easyschedule http://code.taobao.org/p/easyschdeule/src/