HDP version: 3.x
1、hive執行sql慢
- 執行sql
hive通過Tez引擎執行如下的sql語句:
insert overwrite select ....
整個執行過程消耗十分鍾左右,平時任務2-3分鍾可以完成,可以明顯看到,任務調度出現問題了。
- 分析
上述的sql語句對應兩個mapreduce,分別是查詢數據的和插入數據的mapreduce,執行插入數據是使用的distcp的方式。
通過對日志的分析:
查詢數據(select) 消耗4分鍾左右。
插入數據(distcp) 消耗6分鍾,平時這個階段一分鍾左右就能完成,但是這次居然多消耗了五分鍾。
distcp其實在一分鍾之內,map已經運行到100%,但是執行的容器或者任務居然一直卡了五分鍾之久,如果是一個任務可能還是偶發性的,但是大量任務都出現這個問題,那說明集群應該是異常了。
- 查看distcp任務對應的mapreduce日志信息:
滿屏的異步調度waitting。
接着往下看應用程序日志
可以看到sockettimeout 異常,fa發生這個異常的線程是ATS事件。
- 解決
發生這種情況是因為來自ATSv2的嵌入式HBASE崩潰。
解決這個問題的方法需要重置ATsv2內嵌HBASE數據庫(當然也可能是外部的hbase集群)
解決方式1:
我這邊的問題是單節點的hbase,regionserver由於內存分配太低,導致內存崩潰,進程退出
修改hbase-env.sh 增加對應的內存大小,重啟服務
解決方式2:
停止yarn
Ambari -> Yarn-Actions -> Stop
刪除Zookeeper上的ATSv2 Znode
rmr /atsv2-hbase-unsecure或rmr /atsv2-hbase-secure(如果是kerberized集群)
刪除hbase的數據存儲目錄
hdfs dfs -mv /atsv2/hbase/tmp/
啟動yarn
Ambari - > Yarn-Actions- > Start