集群經濟放緩由於Ganglia指標填充根分區

解決集群經濟放緩是因為Ganglia度量數據爆炸填充根分區。

寫的arjun.kaimaparambilrajan

去年發表在:2022年3月4日
刪除

請注意

本文適用於磚運行時7.3 LTS下麵。

問題

集群開始放緩,可能顯示的結合以下症狀:

  1. 不健康的集群事件報告:
    • 請求超時。司機暫時不可用。
    • Metastore下降。
    • DBFS下降。
  2. 你看不到任何高GC事件或內存利用率與驅動相關的過程。
  3. 當你使用前司機節點上你看到一個間歇性高平均負載。
  4. Ganglia相關gmetad過程顯示間歇性高CPU利用率。
  5. 根磁盤顯示高磁盤使用情況df - h /。具體地說,/var/lib/ganglia/rrds顯示了較高的磁盤使用情況。
  6. Ganglia界麵無法顯示載荷分布。

您可以驗證這個問題通過查找文件當地的的前綴/var/lib/ganglia/rrds。一般情況下,這個目錄應該隻有文件前綴應用程序——< applicationId >

例如:

當地rw-rw-rw % sh ls -ltrhR /var/lib/ganglia/rrds/ | grep - i - 1 ganglia ganglia 616 k當地6月29日18:00 - 1593453624916. driver.databricks.directorycommit.markerreaderrors.count。rrd -rw-rw-rw - 1 ganglia ganglia 616 k當地6月29日18:00 - 1593453614595. - driver.databricks.directorycommit.deletedfilesfiltered.count.rrd -rw-rw-rw - 1 ganglia ganglia 616 k當地6月29日18:00 - 1593453614595. driver.databricks.directorycommit.autovacuumcount.count。rrd -rw-rw-rw - 1 ganglia ganglia 616 k當地6月29日18:00 - 1593453605184. driver.codegenerator.generatedmethodsize.min.rrd

導致

Ganglia指標通常使用不到10 gb的磁盤空間。然而,在某些情況下,一個“數據爆炸”發生,導致根分區填補與Ganglia指標。數據爆炸還創建一個髒緩存。Ganglia指標,當這一切發生的時候,可以使用超過100 gb的磁盤空間的根。

這個“數據爆炸”可能發生如果你火花會話變量定義為全球Python文件,然後調用函數定義在相同的文件來執行Apache火花轉換數據。當這種情況發生時,火花會話邏輯可以序列化,連同所需的函數定義,導致火花工作節點上創建會話。

例如,采取以下火花會話定義:

%從pyspark python。sql進口SparkSession def get_spark():““返回一個火花會話。””“返回SparkSession.builder.getOrCreate()如果“火花”不是在全局():火花= get_spark () def發生器(分區):打印(globals()(“火花”))為行分區:收益率(word.lower()字行(“價值”))

如果你使用下麵的示例命令,當地的前綴的文件創建:

%從再生產python導入ganglia_test df =火花。createDataFrame ((((“Hello”))((“火花”)),(“價值”))df.rdd.mapPartitions (ganglia_test.generator) .toDF((“價值”)),告訴()

print (globals()(“火花”))聲明發電機()函數不會導致一個錯誤,因為它可以作為全局變量在工作節點。它可能會失敗,無效關鍵錯誤在某些情況下,這個值是不能作為一個全局變量。流媒體工作,執行批間隔短容易這個問題。

解決方案

確保你沒有使用SparkSession.builder.getOrCreate ()定義一個火花會話作為一個全局變量。

進行故障排除時,您可以使用文件的時間戳與當地的前綴,以幫助確定問題時改變首次引入。

這篇文章有用嗎?