2017-07-27 49 views

回答

1

請點擊這裏閱讀Hortonworks(最顯著TEZ貢獻者)文檔:https://hortonworks.com/blog/re-using-containers-in-apache-tez/

在TEZ每個頂點指定參數,這些參數啓動容器時使用。這些包括所請求的資源(內存,CPU等),YARN LocalResources,環境以及屬於此Vertex的任務的命令行選項。當一個容器首次啓動時,它會針對特定的任務啓動並使用爲該任務指定的參數(或頂點) - 這將成爲容器的簽名。當正在運行的容器的簽名是任務所需的超集時,已經運行的容器被認爲與另一個任務兼容。

的TEZ調度與幾個參數工作承擔的任務分配的決定 - 任務地區的要求,集裝箱的兼容性如上所述,集羣,以及未決任務請求的優先級上總的可用資源。

當任務完成時,運行該任務的容器變得可供重用 - 可能不會立即爲其分配任務 - 因爲任務可能不存在,對於該任務,數據對於容器的節點是本地的。 Tez調度器首先試圖找到一個任務,這個任務的數據對於容器來說是本地的。如果不存在這樣的任務,那麼在實際將任何未決任務分配給此容器之前,調度程序會在特定時間內保留該容器。

每個TEZ JVM(或容器)包含一個對象的高速緩存,其可以被用來共享同一容器內運行的不同任務之間的數據。這是一個簡單的Key-Object存儲,具有不同級別的可見性/保留。對象可以緩存屬於同一個頂點,爲DAG中的所有任務的任務範圍內使用,併爲任務跨越TEZ會話中運行(詳見會議在隨後的後)。

相關問題