什麼是YARN的容器?是否與nodemanager上的任務運行的子JVM相同?YARN的容器是什麼?
回答
它表示給定羣集上單個節點上的資源(內存)。
容器是
- 由節點管理器
- 由資源管理器
一個MR任務在這樣容器(一個或多個)運行調度監督。
在一個節點(或一個很大的節點)上可以有多個容器。
系統中的每個節點都被認爲是由最小容量的內存(比如512MB或1GB)組成的多個容器組成。 ApplicationMaster可以請求任何容器作爲最小內存大小的倍數。
Source請參見ResourceManager /資源模型一節。
AFAIK,ApplicationMaster可以請求任何大小,但Yarn Scheduler只能分配爲yarn.scheduler.minimum *屬性中定義的最小內存大小的倍數。 –
字「集裝箱」紗線用於兩種語境,
集裝箱:表示的資源分配給一個ApplicationMaster。 ResourceManager負責將資源/容器發佈給ApplicationMaster。檢查Container API。
啓動容器:基於分配的資源(容器)ApplicationMaster請求NodeManager啓動Containers,從而導致在一個節點上執行任務。檢查ContainerManager API。
簡而言之,Container是運行YARN應用程序的地方。它在每個節點中都可用。 Application Master與調度程序(資源管理器的組件之一)協商容器。容器由節點管理器啓動。
在Hadoop 2.x中,Container是一個工作單元發生的地方。例如,每個MapReduce任務(不是整個作業)都在一個容器中運行。
應用程序/作業將在一個或多個容器上運行。
爲每個容器分配一組系統資源,目前支持CPU內核和RAM。 Hadoop集羣中的每個節點都可以運行多個容器。
在Hadoop 1.x中,由JobTracker分配一個插槽來運行每個MapReduce任務。然後,TaskTracker爲每個任務生成一個單獨的JVM(除非未啓用JVM重用)。
Container :
資源的邏輯租約和節點上產生的實際進程可以互換使用。 這是執行任務(或AM)的相同過程。 爲了啓動容器,我們提供了容器對象和CLC(ContainerLaunchContext),我們在其中設置了運行任務(或AM)的命令列表。
nmClient.startContainer(container, clcObj)
ContainerLaunchContext code snippet :
<code>
.
.
.
/**
* Add the list of <em>commands</em> for launching the container. All
* pre-existing List entries are cleared before adding the new List
* @param commands the list of <em>commands</em> for launching the container
*/
@Public
@Stable
public abstract void setCommands(List<String> commands);
</code>
根據輸入數據的大小,創建多個輸入分割。 MR作業需要處理整個數據,以便創建多個任務(地圖&減少任務)。所以對於每個輸入分割將由一個任務處理。現在如何運行這個任務,由資源經理建議。資源管理器知道哪個節點管理器是免費的,哪個是繁忙的,它的大學校長和節點經理是大學的班主任,校長知道哪個教師是免費的。因此它要求節點管理器在容器中運行該任務(整個工作的一小部分),即存儲區域,使得jvm。因此,作業在容器內作爲應用程序主人運行。
- 1. Spark使用的YARN容器的命名約定是什麼?
- 2. YARN:容器和JVM
- 3. Spark容器在YARN集羣模式下的入口點是什麼?
- 4. 什麼是ActiveX容器?
- 5. 什麼是容器編排?
- 6. 什麼是微件容器?
- 7. YARN(Hadoop)中的容器分配代碼
- 8. YARN如何決定創建多少個容器? (爲什麼區別S3a和HDFS?)
- 9. 如何從容器內獲取YARN ContainerId?
- 10. 分佈式YARN或Mesos容器
- 11. 什麼是back_inserter(容器)的類型
- 12. Hyperledger Fabric中的chaincode容器是什麼?
- 13. 什麼是createjs中的容器?
- 14. 什麼是有效的容器?
- 15. 什麼是Java中的容器
- 16. yarn,grunt,npm,bower和nuget package manager之間的區別是什麼?
- 17. YARN vcore中的虛擬內核是什麼意思?
- 18. 「IoC容器」中「容器」的用途是什麼?
- 19. Yarn Spark HBase - ExecutorLostFailure YARN因超過內存限制而死亡的容器
- 20. YARN和hive2隊列有什麼區別?
- 21. yarn run和npm start有什麼區別?
- 22. symfony2什麼是容器知道
- 23. 什麼是Laravel服務容器?
- 24. 什麼是oracle數據庫容器?
- 25. 究竟是什麼「密鑰容器」?
- 26. WPF/Prism:什麼是UNITY容器?
- 27. @include容器是什麼意思?
- 28. 爲什麼MEF不是DI/IoC容器?
- 29. WPF:什麼是通用容器控件?
- 30. yarn-site.xml與YARN中的yarn-default.xml
MR任務不在這樣的容器中運行。它在一組容器上運行,因爲每個映射或reduce函數都在一個容器上運行。任務可以在一個容器上以超級模式運行,但任務通常由「MRAppMaster」跨越數百或數千個容器。此外,由豐富的資源矢量描述的容器並不代表專用內存。 – Dyin
謝謝你指出這點,你是對的,我更新了答案。然而,當我在2年前或多或少地回答這個問題時,一個容器只是一個內存資源。 –
容器和執行者之間的關係是什麼?每個執行者都在一個容器中運行嗎?謝謝! – lucian