監控hadoop任務結果shell指令碼

2022-05-15 16:33:11 字數 1397 閱讀 8514

需求:每日hadoop結果檔案中,找出資料不完整的日期和沒有跑出資料的日期,重新進行跑hadoop任務

分析:在result/目錄生成的檔案中資料有2個特點第一:日期有,但是資料不完整

第二:日期對應的檔案不存在(檔案缺失)

#/bin/sh

# 第一步:先開啟結果檔案目錄(result),將目錄的檔案存在乙個列表中

time_list=()

i=0dir=`cd ~/result/`

for i in$dir

doecho $i

time_list[$i]=$i

i=$(($i+1))

done

# 構建要查詢的時間段

date=20170101end_date=20170111# 注意在這裡是前包,後不包

while [[ $date -lt $end_date ]]

doecho "$date".txt

# 第二步:判斷構建檔案是否存在與結果檔案的列表中,如果存在,就檢查資料量是否位數是否大於9位(單位:bytes)

if [[ "$time_list" =~ "$date".txt ]];then

# 計算每個檔案的資料量的大小

data_num=`du -b $i* | awk '; end'` # 把查詢檔案量大小的命令賦值給date_num

echo "command(du -b $i* | awk '; end') results are: $data_num"# 執行查詢命令,並把結果賦值給data_num變數

echo $data_num

# echo $

if [ $ -lt 3];then # 判斷參選出的資料的位數

`touch ~/result/$.txt`

fielse`touch ~/result/$.txt`

fidate=$(($date+1))

done

小結:當然這個也是除錯的時候用的,不過真正,你要根據自己的需求去做,這時,忽然在我的腦子裡出現了乙個demo俠的名稱,因為之前,我看了一篇我們公司內部的寫的文章,學習分為幾個階段吧,因為我之前也沒有寫過shell,所以在寫這個需求的時候,起哦也查了很多的資料,發現他們寫的都差不多,和我之前寫的部落格差不多,沒有什麼乾貨,都是點演示,俗稱demo俠。就是對乙個知識點你可能看一遍,演示一遍,覺得知道他是什麼意思了,但是真正專案需求用的時候,你就會發現,你是不理解的。所以我在這種情況下,又重新學習了一下,忽然感覺對原來的知識點又了不一樣的理解,這時我想起了一篇文章,深度學習分為這麼幾個階段:demo俠——>調參俠——>懂原理俠——>懂原理+修改模型細節俠——>超大資料操控俠——>模型/框架架構師,入門級別是懂原理俠。所以學習好事要多思考,結合實際情況去解決問題,去學習,這樣的途徑是你對知識點掌握最牢靠的,也是理解最透徹的。

Hadoop筆記六之Hdfs的基本shell操作

使用hfds dfs 和hadoop fs來操作檔案這兩者一樣,命令格式為hadoop fs ls dfhs shb01 9000 也可以使用hadoop fs ls 表示當前根目錄和dfhs shb01 9000 一樣。hdfs是hadoop本身的協議,hdfs本身沒有許可權它借用的是linux許...

MAC crontab定時任務不執行shell

2 cron配置是否正確書寫 這個一般沒有問題,看看蘋果開發社群 3 shell執行的環境是否設定 一般需要要shell指令碼前面加上如下兩行 bin bash source etc profile 4 shell指令碼是否有問題這個把指令碼在終端手動執行一遍,看一下能否到達效果 5 目錄許可權問題...

使用Ganglia監控Hadoop

hadoop本身提供了很多監控工具的介面,如jmx nagios ganglia等。使用ganglia監控hadoop,配置起來非常簡單,只需要修改 hadoop home conf hadoop metrics.properties檔案,把相關的配置段修改為下面的示例 configuration ...