需求:每日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 ...