保障Hadoop集群間shell腳本依賴關(guān)系的辦法

問題描述

做數(shù)據(jù)開發(fā)的同學(xué)都需要在Hadoop集群客戶端上通過crontab配置shell腳本的調(diào)度(有調(diào)度系統(tǒng)的另說啦)牢酵,這些腳本可能在一臺機器上馍乙,也可能不是垫释,相互之間有數(shù)據(jù)上的依賴關(guān)系,通常我們會根據(jù)各個腳本的運行時長显蝌,設(shè)置調(diào)度時間订咸,考慮好時間間隔。

正常情況下骆撇,統(tǒng)計數(shù)據(jù)第二天都會按時出現(xiàn)在業(yè)務(wù)系統(tǒng)的報表中父叙。但有時候可能出現(xiàn)其中某一個腳本因為無法預(yù)期的原因沒有正常執(zhí)行,那么后續(xù)的腳本肯定也不會有結(jié)果屿岂。

思考

出了問題就要補數(shù)據(jù)鲸匿,手動的一個個的起腳本就很low了。如果可以做到前面的腳本出問題运授,后續(xù)腳本等待而不結(jié)束任務(wù),當(dāng)前面腳本恢復(fù)執(zhí)行結(jié)果以后柒室,后續(xù)腳本自動運行逗宜,那就方便多了。

方案

來了iqiyi以后擂仍,發(fā)現(xiàn)這里同事的做法是熬甚,通過在每個腳本最后創(chuàng)建Hadoop hdfs的文件標(biāo)識任務(wù)正常結(jié)束,其他需要依賴的別人數(shù)據(jù)的腳本肃廓,在腳本最開始每間隔固定時間判斷依賴的Hadoop hdfs文件是否生成诲泌,如果沒生成就一直等待敷扫,直到前置數(shù)據(jù)完成了當(dāng)前的腳本向下運行。

舉個栗子

  • 前置腳本例子
#!/bin/sh

if [ $# -eq 0 ];
then
        DT=`date -d"1 days ago" +'%F'`
else
        DT=$1
fi

###############################
## 這里寫自己任務(wù)的邏輯代碼
###############################

if [ $? == 0 ];#判斷之前的任務(wù)有沒有正常結(jié)束呻澜,如果正常結(jié)束就創(chuàng)建Hadoop hdfs的文件
then
        if ! hadoop fs -test -e  "/data/sqoopdata/$DT/xxx.done"
        then
                hadoop fs -touchz  "/data/sqoopdata/$DT/xxx.done"
        fi
else
        exit 1
fi
  • 后續(xù)腳本例子
#!/bin/sh
###############################
##需要依賴別的腳本產(chǎn)生的數(shù)據(jù),
##所以得判斷該腳本的任務(wù)是否正常執(zhí)行了
###############################
if [ $# -eq 0 ];
then
        DT=`date -d"1 days ago" +'%F'`
else
        DT=$1
fi

while :
do
        if !  hadoop fs -test -e "/data/sqoopdata/$DT/xxx.done"
        then
                echo "xxx data of $DT  doesn't exist"
                sleep 60
        else
                break
        fi

done

結(jié)語

在沒有調(diào)度系統(tǒng)的時候惨险,上述的方法會起到一定腳本依賴關(guān)系的維護作用羹幸,補數(shù)據(jù)的時候也省事一些,只要把出問題的腳本重跑就可以了辫愉。
缺點栅受,腳本多了以后,肯定亂恭朗,需要對業(yè)務(wù)比較清楚才知道各個階段生成了哪些數(shù)據(jù)屏镊。不過,只要是每個腳本都規(guī)范的寫痰腮,把依賴的Hadoop hdfs文件抽出來而芥,單獨建一個公共的腳本,以備各個業(yè)務(wù)腳本引用棍丐,邏輯還是可以很清楚的误辑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歌逢,隨后出現(xiàn)的幾起案子巾钉,更是在濱河造成了極大的恐慌,老刑警劉巖秘案,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砰苍,死亡現(xiàn)場離奇詭異,居然都是意外死亡阱高,警方通過查閱死者的電腦和手機赚导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讨惩,“玉大人辟癌,你說我怎么就攤上這事〖瞿恚” “怎么了黍少?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長处面。 經(jīng)常有香客問我厂置,道長,這世上最難降的妖魔是什么魂角? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任昵济,我火速辦了婚禮,結(jié)果婚禮上野揪,老公的妹妹穿的比我還像新娘访忿。我一直安慰自己,他們只是感情好斯稳,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布海铆。 她就那樣靜靜地躺著,像睡著了一般挣惰。 火紅的嫁衣襯著肌膚如雪卧斟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天憎茂,我揣著相機與錄音珍语,去河邊找鬼。 笑死竖幔,一個胖子當(dāng)著我的面吹牛板乙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拳氢,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼亡驰,長吁一口氣:“原來是場噩夢啊……” “哼晓猛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凡辱,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤戒职,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后透乾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洪燥,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年乳乌,在試婚紗的時候發(fā)現(xiàn)自己被綠了捧韵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡汉操,死狀恐怖再来,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磷瘤,我是刑警寧澤芒篷,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站采缚,受9級特大地震影響针炉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扳抽,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一篡帕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贸呢,春花似錦镰烧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猜谚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赌渣,已是汗流浹背魏铅。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坚芜,地道東北人览芳。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像鸿竖,于是被迫代替她去往敵國和親沧竟。 傳聞我的和親對象是個殘疾皇子铸敏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

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