[英]How YARN knows data locality in Apache spark in cluster mode
假設有一個Spark作業將從HDFS讀取一個名為records.txt的文件,並進行一些轉換和一個操作(將處理后的輸出寫入HDFS)。 作業將被提交到YARN集群模式
還要假設records.txt是一個128 MB的文件,並且其中一個HDFS復制塊也位於NODE 1中
可以說YARN正在分配的是NODE 1內部的執行程序。
YARN如何在輸入數據所在的節點中准確分配執行程序?
誰告訴YARN,NODE 1中提供了records.txt復制的HDFS塊之一?
Spark Application如何找到數據局部性? 它是由運行在Application Master中的驅動程序完成的嗎?
YARN是否知道數據位置?
這里的基本問題是:
YARN是否知道數據位置?
YARN“知道”什么應用程序告訴它,並且它了解集群的結構(拓撲)。 當應用程序發出資源請求時,它可以包括特定的局部性約束 ,分配資源時可能會或可能不會滿足。
如果無法指定約束,則YARN(或任何其他集群管理器)將基於其對集群拓撲的了解,嘗試提供最佳的替代匹配。
那么應用程序如何“知道” ?
如果應用程序使用支持某種形式的數據局部性的輸入源(文件系統或其他),則它可以向其查詢相應的目錄(對於HDFS,則為namenode),以獲取要訪問的數據塊的位置。
從廣義上講,Spark RDD可以根據特定的RDD
實現來定義preferredLocations
,稍后可以將其轉換為集群管理器(不一定是YARN)的資源約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.