日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

问题分析报告--读取ORC文件报seek错误

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 问题分析报告--读取ORC文件报seek错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題分析報告--讀取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]

  • 通過關閉YARN的NodeManager的recovery特性,即配置yarn.nodemanager.recovery.enabled參數為:false
  • ?4.2?最終解決措施[Solution]

  • 解決leveldb堆外內存上漲(C60U10SPC003補丁)
  • 優化container 本地化鎖(C60U10SPC003補丁)
  • 將leveldb的數據目錄規劃到數據盤,不掛載到系統盤上(磁盤規劃)
  • 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错误的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。