如何配置單核執行程序來運行JNI庫

了解如何配置單核執行程序以在Databricks上運行JNI庫。

寫的亞當Pavlacka

最後發布時間:2022年3月4日

當創建集群時,Databricks為每個工作節點啟動一個Apache Spark執行器實例,執行器使用該節點上的所有內核。在某些情況下,比如想要運行非線程安全的JNI庫,可能需要一個隻有一個核心或任務槽的執行程序,並且不試圖運行並發任務。在這種情況下,多個執行程序實例運行在單個工作節點上,並且每個執行程序隻有一個核心。

如果運行多個執行器,就會增加JVM開銷,並減少可用於處理的總體內存。

屬性中的兩個屬性,可以在工作節點上啟動單核執行程序火花配置

  • spark.executor.cores
  • spark.executor.memory

房地產spark.executor.cores指定每個執行程序的內核數。將此屬性設置為1

房地產spark.executor.memory指定分配給每個執行程序的內存量。這個值必須設置得足夠高,以使執行程序能夠正常工作,但又足夠低,以允許使用所有的內核。

刪除

請注意

如果您設置的總內存值(每個執行程序的內存x總內核數)大於工作節點上可用的內存,則一些內核將保持未使用狀態。

AWS

例如,i3.xlarge節點的內存為30.5 GB,可用內存為24.9 GB。選擇一個適合可用內存乘以執行程序數量的值。您可能需要設置一個允許一些開銷的值。例如,setspark.executor.cores1spark.executor.memory6克

i3.xlarge實例類型有4個內核,因此在節點上創建了4個執行程序,每個執行程序有6 GB內存。

刪除

GCP

例如,n1-highmem-4worker節點有26 GB的總內存,但在集群運行時隻有15.3 GB的可用內存。

舉個例子火花配置value,我們將核心值設置為1,並為每個executor分配5gb內存。

Spark.executor.cores 1 spark.executor.memory 5g

一旦集群啟動,每個工作節點都有4個核心,但隻使用3個。有3個執行程序,每個執行程序在每個工作節點上都有5gb內存。總共使用了15 GB內存。

第四個核心永遠不會旋轉,因為沒有足夠的內存分配給它。

您必須在實例類型的選擇與每個執行程序所需的內存之間取得平衡,以便最大限度地利用工作節點上的每個核心。

刪除



這篇文章有用嗎?