问题分析报告--读取ORC文件报seek错误
1、問題描述
1.1?基本信息[Basic Information]
- 集群規模:37+3臺物理機,每臺128G內存;CPU:2*16C;SATA磁盤,2T*12
- hadoop社區版本:**
- 商業版本:FusionInsight_HD_V100R002C60U10
- MetaStore:高斯數據庫(Postgresql)
1.2 問題描述[Problem Description]
- C60U10版本YARN集群在高并發任務狀態下運行2天左右可能導致NM資源本地化性能下降,進而導致任務整體執行效率下降。
2、問題分析[Problem Analysis]
1. 分析job性能變慢,主要體現為Container localized執行變慢
Task Slow logs:
?
Task Quick logs:
通過分析日志發現, container 執行變慢主要卡在ResourceLocalizationService鎖的競爭上:
?
下圖為隨機挑選出來的一個container運行慢的時候的jstack打印信息,發現這個container等待這個鎖等待了22s之久:
?
2. 分析鎖內代碼執行慢的原因:
通過獲取操作系統的統計數據osinfo,發現在container localized過程中會調用ls命令獲取本地目錄的文件基本信息出現了X狀態(Linux process state: X (TASK_DEAD - EXIT_DEAD), the exit status, the process is about to be destroyed.),該狀態被捕捉多次,說明這個命令執行在os層占用時間較長。
?
?
3. 排查ls變慢的原因,發現NM的堆外內存持續增長
1) NM的內存使用持續增長:
?
2)通過打印NM的堆外內存使用,發現大部分堆外內存使用均來自leveldb,內存分析截圖如下:
利用pmap命令將NM使用的內存信息dump下來,然后用gdb將指定尋址空間的堆外內存dump到本地:
?
通過將二進制內存文件轉化為可見字符,可知,當前的堆外內存主要來自leveldB。
4. NM堆外內存的持續上漲到一定程度后,會導致NM內部調用os的命令執行變慢,從而導致YARN的NM的container本地化鎖競爭加劇,最終導致業務性能下降。最后,通過在生產環境上將NM的recovery特性關閉,消除了levelDB導致堆外內存持續上漲的問題,從而解決了業務執行48小時后會出現性能下降的問題。
3、根本原因[Root Cause]
分析為YARN的recovery特性會依賴leveldb,而leveldb的數據存儲會占用堆外內存,從而導致堆外內存上漲,當堆外內存的堆積會導致os占用內存無法及時的釋放,而在大量任務并發時,業務也需要占用大量內存,內存的緊張會導致任務在資源本地化的過程中執行os的“ls ?-ld” 命令變慢;同時每個contaienr的localized地方存在鎖的競爭,命令執行變慢,會使該鎖的競爭惡化,從而表現在業務運行一段時間后,性能逐漸變慢。
4、解決措施[Corrective Action]
4.1 最終解決措施[Solution]
?4.2?最終解決措施[Solution]
5、解決措施[Corrective Action]
4.1 最終解決措施[Solution]
1. 觀察系統內存占用情況,檢查是否存在內存使用異常 2. 通過如下手段排查,確定是否是同一問題: 1) 確認是否開啟NM的recovery特性(yarn.nodemanager.recovery.enabled:true); 2) 通過top -p PID查看NM進程的內存RES使用是否超過JVM堆內存的2倍以上; 3) 查看{yarn.nodemanager.recovery.dir}/yarn-nm-state目錄下的xx.sst文件數目是否超過2000+; 注:{yarn.nodemanager.recovery.dir}在NM的后臺配置文件中查看: /opt/huawei/Bigdata/FusionInsight/etc/x_x_NodeManager/yarn-site.xml(其中x表示某一數字) <property> <name>yarn.nodemanager.recovery.dir</name> <value>/srv/BigData/tmp/yarn-nm-recovery</value> </property> 4) NM日志中排查是否有大量的“Localizer failed”、“InterruptedException”; 3. 如確認是同一問題,請參照5.1臨時規避。總結
以上是生活随笔為你收集整理的问题分析报告--读取ORC文件报seek错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试人生的最大危机不是 35 岁,是你工
- 下一篇: Qt输出4位大字十六进制,不足4位左边补