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