Apache Spark UI與Job不同步

當事件隊列從事件隊列中下降時,Spark作業的狀態與Spark UI失去了同步。

寫的Chetan.Kardekar

上次出版於:2022年5月11日

問題

火花作業的狀態未正確顯示在Spark UI中(AWS|天藍色|GCP)。確認處於完整狀態的某些工作顯示為Spark UI中的活動/運行。在某些情況下,Spark UI可能會顯得空白。

當您查看駕駛員日誌時,您會看到Asynceventqueue警告。

logs =========20/12/23 21:20:26警告Asynceventqueue:自12月23日星期三21:19:26 UTC 2020年以來共享的93909事件。20/12/2321:21:26 Warn Asynceventqueue:drop asynceventqueue:drop drop drop drop52354自12月23日星期三21:20:26 UTC 2020年共享的事件。20/12/2321:22:26警告Asynceventqueue:自12月23日星期三21:21:26 UTC 2020. 20/20/12/12/12/12/22/12/23 21:23:26警告Asynceventqueue:自12月23日星期三21:22:26自共享的44245事件刪除。21232020。20/12/23 21:24:26 WARN ASYNCEVENTQUEUE:自12月23日星期三23 23 21:23 21:23 21:21::23:23 21:23:26 UTC2020。20/23/2321:25:26警告Asynceventqueue:自12月23日星期三21:24:26 UTC 2020自星期三以來共享的94156事件。

原因

  • 所有Spark作業,階段和任務都將推到事件隊列。
  • 後端聽眾讀取該隊列中的Spark UI事件,並呈現Spark UI。
  • 事件隊列的默認容量(spark.scheduler.listenerbus.eventqueue.capacity)是20000。

如果將更多的事件推入事件隊列,而不是後端聽眾可以消費的,那麼最古老的事件就會從隊列中刪除,聽眾從未消耗它們。

這些事件丟失了,不會在Spark UI中渲染。

解決方案

設定spark.scheduler.listenerbus.eventqueue.capacity在你的集群中火花配置((AWS|天藍色|GCP)在集群級別達到大於20000的值。

此值設置了應用程序狀態事件隊列的容量,該事件持有內部應用程序狀態偵聽器的事件。增加此值可以使事件隊列容納大量事件,但可能會導致驅動程序使用更多內存。