hive 由於distcp導致執行sql慢


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

借鑒:
| https://www.cnblogs.com/fbiswt/p/12455364.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM