Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
生活随笔
收集整理的這篇文章主要介紹了
Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 Azkaban任務調度管理
1.1 執行任務的腳本編寫和說明
在做任務調度的過程中,要編寫相應的腳本。
-rwxrwxrwx 1 root root 809 6月 12 19:52 auto-exec-1-mr.sh -rwxrwxrwx 1 root root 975 6月 12 19:53 auto-exec-2-load-logger-data.sh -rwxrwxrwx 1 root root 1459 6月 12 19:53 auto-exec-3-kylin-build.sh -rwxrwxrwx 1 root root 446 6月 16 14:34 auto-exec-4-analyze.sh -rwxrwxrwx 1 root root 110 6月 12 19:54 auto-exec-5-sqoop-mysql.sh -rwxrwxrwx 1 root root 313 6月 16 14:55 auto-exec-6-pv-uv.sh然后讓這些腳本具有可執行權限:
[root@bigdata1 logger-handler]# pwd /home/bigdata/workspace/logger-handler [root@bigdata1 logger-handler]# chmod +x *.sh1.1.1 auto-exec-1-mr.sh
該腳本主要用于執行數據清洗應用 #!/bin/bash sync echo 3 > /proc/sys/vm/drop_cachesecho "步驟1:執行logger的mr數據清洗程序"yesterday=`date --date='1 days ago' +%y-%m-%d` #刪除mapreduce清洗文件夾(存儲上一天的那個文件夾)#yesterdayFolder=/output/nginx/$yesterday#判斷上一天的這個文件夾是否存在 hdfs dfs -test -e /output/nginx/$yesterdayif [ $? -eq 0 ] thenecho "存在上一天這個文件夾"hdfs dfs -rm -r /output/nginx/$yesterday else#字符串中帶有變量時,這里的引號必須是雙引號echo "不存在$yesterday這個文件夾" fiecho "開始進行日志文件的mapreduce的清洗程序" cd /home/bigdata/workspace/logger-handler hadoop jar bigdata-logger-mr-1.0.0-SNAPSHOT-jar-with-dependencies.jar com.youx.bigdata.logger.driver.loggerRunner1.1.2 auto-exec-2-load-logger-data.sh
該腳本主要用于執行將清洗的數據load到hive庫中的操作。 #!/bin/bash sync echo 3 > /proc/sys/vm/drop_cachesecho "步驟2:執行hive命令load數據到hive中"#如果時間定義成+%Y-%m-%d 則時間變成了2018-05-24了 yesterday=`date --date='1 days ago' +%y-%m-%d` echo $yesterday#定義變量 str1="part-r-"#獲取到hdfs中中文件列表,awk '{print $8}'獲取到第八列 for hdfsFile in `hdfs dfs -ls /output/nginx/$yesterday | awk '{print $8}'` doecho $hdfsFileresult=$(echo $hdfsFile | grep "${str1}")if [[ "$result" != "" ]]then#表示包含這個part-r-這類前綴的文件的,然后開始做數據導入操作。#使用hive -e的方式執行hive命令#要注意的是,當執行過一遍之loaddata后,原來放置mapreduce處理結果位置的這個數據就沒了。hive -e "use nginx_log;load data inpath 'hdfs://bigdata1:9000$hdfsFile' into table nginx_log_info;"else#表示不包含這個文件的continuefi done#hive -e " #use nginx_log;"1.1.3 auto-exec-3-kylin-build.sh
該腳本主要用于讓kylin自動預編譯。
#!/bin/bash sync echo 3 > /proc/sys/vm/drop_cachesecho "步驟3:kylin-build" ################################################################################# #腳本功能:在數據被load到hive之后,使用kylin進行Build,增量更新kylin cube ##################################################################################cubeName cube名稱 #endTime 執行build cube的結束時間(命令傳給Kylin的kylinEndTime = readEndTime + (8小時,轉化為毫秒))。 # 只需要給kylin傳入build cube的結束時間即可。 #buildType BUILD構建cube操作(還有Refresh、Merge等操作,增量構建為BUILD)#endTime=`date "+%Y-%m-%d 00:00:00"` endTime=`date +%Y-%m-%d -d "+1days"` echo "$endTime" endTimeTimeStamp=`date -d "$endTime" +%s` echo $endTimeTimeStamp#將時間戳編程毫秒值 endTimeTimeStampMs=$(($endTimeTimeStamp * 1000)) echo $endTimeTimeStampMscubeName=logger_cube#curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d '{ "startTime"}' curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d '{ "endTime":'$endTimeTimeStampMs', "buildType": "BUILD"}' http://bigdata1:7070/kylin/api/cubes/logger_cat/rebuild #curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d '{ "startTime": 820454400000, "endTime": 821318400000, "buildType": "BUILD"}' http://localhost:7070/kylin/api/cubes/kylin_sales/build1.1.4 auto-exec-4-analyze.sh
該腳本主要用于執行分析url訪問次數,url平均訪問時間
#!/bin/bash sync echo 3 > /proc/sys/vm/drop_caches#echo "步驟4:執行分析程序"#echo "休眠10秒" #sleep 10s#echo "休眠1分鐘" #sleep 1m#echo "休眠1小時" #sleep 1hecho "休眠2個小時,開始" sleep 120m echo "休眠2個小時,結束"cd /home/bigdata/workspace/logger-handler #執行分析程序 hadoop jar bigdata-logger-kylin-1.0.0-SNAPSHOT-jar-with-dependencies.jar com.youx.bigdata.logger.kylin.LoggerKylinAnalyze1.1.5 auto-exec-5-sqoop-mysql.sh
該腳本暫時未做功能1.1.6 auto-exec-6-pv-uv.sh
該腳本主要用于調用執行分析程序pv,uv的程序。 #!bin/bash sync echo 3 > /proc/sys/vm/drop_cachesecho "休眠140分鐘,開始" sleep 140m echo "休眠140分鐘,結束"#執行分析程序 cd /home/bigdata/workspace/logger-handler hadoop jar bigdata-operation-info-1.0.0-SNAPSHOT-jar-with-dependencies.jar com.youx.bigdata.logger.analyze.OperationInfoAnalyze1.2 Job任務編寫
Azkaban的任務腳本是以.job結尾的文件。
1.2.1 auto-exec-1-mr.job
具體內容是:
#auto-exec-1-mr.job type=command command=sh /home/bigdata/workspace/logger-handler/auto-exec-1-mr.sh說明:
通過上面的寫法,通過命令的方式執行job,其中命令是:
1.2.2 auto-exec-2-load-logger-data.job
下面的job主要的作用是將數據清洗的結果load到hive倉庫中。 #auto-exec-2-load-logger-data.job type=command dependencies=auto-exec-1-mr command=sh /home/bigdata/workspace/logger-handler/auto-exec-2-load-logger-data.sh 上面增加了一個關鍵字:dependencies,表示這個任務依賴任務auto-exec-1-mr,只有當auto-exec-1-mr任務執行完畢之后才會進行后續操作。1.2.3 auto-exec-3-kylin-build.job
執行kylin的build任務。 #auto-exec-3-kylin-build.job type=command dependencies=auto-exec-2-load-logger-data command=sh /home/bigdata/workspace/logger-handler/auto-exec-3-kylin-build.sh1.2.4 auto-exec-4-analyze.job
執行url訪問統計和訪問量統計的任務
#auto-exec-4-analyze.job type=command dependencies=auto-exec-3-kylin-build command=sh /home/bigdata/workspace/logger-handler/auto-exec-4-analyze.sh1.2.5 auto-exec-5-sqoop-mysql.job
執行將hive中數據導入到mysql中的操作。1.2.6 auto-exec-6-pv-uv.job
執行pv,uv分析任務 #auto-exec-6-pv-uv.job type=command dependencies=auto-exec-5-sqoop-mysql command=sh /home/bigdata/workspace/logger-handler/auto-exec-6-pv-uv.sh1.2.7 統一壓縮job到zip包
Azkaban的執行需要一個壓縮包,所以需要將上面編寫的job統一壓縮到一個zip中。效果圖下:
1.3 項目創建/上傳任務包/配置任務調度
當job都編寫完成之后,開始創建azkaban的任務調度的項目,并上傳任務執行包。
創建項目。
訪問:https://bigdata1:8443/index,輸入用戶名/密碼: admin / admin之后進入azkaban界面。
創建項目:
點擊上面的”Create Project”
點擊”Create Project”,進入一下界面:
點擊“upload”
點擊”選擇文件”
點擊Upload按鈕,進入以下界面:
點擊”Execute Flow”,進入以下界面:
點擊Schedule,進入以下界面:
點擊schddule,任務配置完成
最終進入以下界面:
總結
以上是生活随笔為你收集整理的Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恒铭达有些什么产品 消费电子精密功能性器
- 下一篇: 复星医药股票怎么样 经营范围有哪些