2017-03-03 56 views
0

對於Spark YARN和Standalone資源分配,例如通過spark-submit來實現。這例如限制容器嚴格限於所請求的存儲器。這是通過使用CGroups的一個linux內核特性完成的。但是如何爲YARN和獨立完成研究分離?在這裏,我特別好奇當在與您可能不知道的用戶共享的服務器上運行虛擬機時,如何保護內存計算,例如在雲提供商的機器上運行時。關於在雲中的VM上運行的資源隔離,Apache Spark YARN和Standalone

例如,當使用YARN時,YARN如何確保容器不受機器上其他容器的影響?那麼它如何確保分配1 GB的內存時,該GB未被其他人在機器上使用?那麼Spark如何確保沒有內存泄漏,並且惡意用戶正在運行另一個應用程序,或者甚至另一個虛擬機無法從內存中獲取數據。

+0

呵呵......你暗示Linux進程可以訪問分配給任何其他Linux進程的內存,並潛入別人的數據?! –

+0

或者你是否暗示在過程結束時RAM沒有被清理,另一個進程可以分配一些內存並檢查這些位以猜測對象是如何在那裏被序列化的? –

+0

原因是由於2014年發佈的DRAM泄露,[鏈接](https://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf)。這種泄漏的想法是,你可以在相鄰的行中導致位翻轉,從而可能損壞別人的數據。由於使用YARN確保它們獨立運行,我很好奇它是如何實現的以及如何防止這種情況發生。在https://googleprojectzero.blogspot.de/2015/03/exploiting-dram-rowhammer-bug-to-gain.html上可以找到更容易閱讀的信息。所以我想知道如果能夠訪問Spark或YARN的內存,何時使用它。 –

回答

0

編輯::
Spark或當通過紗線管理資源的任何其他應用程序,它變成紗線的責任,以確保資源。現在

YARN如何確保容器不受節點上其他容器的影響?

查詢here瞭解詳細的紗線內存分配說明。 enter image description here

紗容器是JVM進程,所以同時發動NM指定容器JVM-選擇採用限制VM存儲器中,然後還有一個在節點管理器叫做ContainersMonitor組件,其監視該過程的總的內存使用和的使用如果進程試圖消耗更多資源,則發送終止信號。

是NM的ContainerMonitor使用CGGroup監控CPU和內存嗎?

按照官方文檔:Using CGroups with YARN cgroup的是聚合/劃分,將各組任務的機制,和他們所有的未來的孩子,與專業行爲層級組。 CGroups是一個Linux內核特性,並被合併到內核版本2.6.24中。從YARN的角度來看,這允許容器的資源使用受到限制。一個很好的例子就是CPU使用率。沒有CGroups,很難限制容器的CPU使用率。 目前,CGroups僅用於限制CPU使用率。

內存,它的到來在Hadoop 3.請參考JIRA here

它是如何製成確保內存只用於此應用程序?

對於分配給JVM進程的內存,JVM確保它爲堆拋出內存異常,並且總的來說NM的容器監視器執行監視和查殺。

不能被其他應用程序使用?

管理員確保。哈哈哈,沒有人被允許登錄到工作人員節點除了少數管理員在我們的情況。

現在進入規劃階段,假設每個worker/datanode機器都有64 GB RAM,沒有人允許登錄運行任何自定義代碼,因此只有所需的服務(linux和yarn服務)正在運行。其中最大10 GB,所以你決定給紗餘下的48 GB。

現在啓動容器Yarn將告訴NM每個容器分配最大4GB(其中一個百分比將被分配爲實際JVM的堆,按照設置),這將確保最小容器數量。

然後,如果所有工作要求每個容器1 GB,YARN將能夠填充48個容器。 (謝謝@Samson Scharfrichter)

+0

感謝@RBanerjee的回答,這清除了很多東西。我仍然有一個問題,那就是當與其他用戶共享工作者或主機時。想象一下,在使用亞馬遜時,一臺機器上可能有多個用戶。那麼Linux服務或YARN確保內存不能被其他用戶訪問? –

+0

_「Yarn使用Java的-Xmx -Xms參數來分配內存」_--並非如此。 *(a)* -Xmx在Mappers和Reducers的某些'java-opts'屬性中定義,並且作業可以**覆蓋**這些; *(b)*如果作業分配**堆外存儲器**,則-Xmx非常無用; *(c)* YARN檢查累積的內存使用量(堆棧,堆,堆外)沒有超過配額,但它不是一個先驗限制 - 定期檢查Linux'cgroup'專用於每個容器,並且如果容器超過配額,它會被殘忍地殺死......但是後果。 –

+2

_「每個容器最大4GB」_表示_「** min ** 12快樂容器」_。如果所有工作要求每個容器1 GB,YARN將能夠裝入48個容器。 –

相關問題