MapReduce 支援 YARN 共用快取,讓 MapReduce 作業能利用額外的資源快取。這會節省作業提交用戶端和 YARN 集群內部的網路頻寬。這將減少作業提交時間和整體作業執行時間。
首先,您的 YARN 集群必須執行共享快取服務。請參閱 YARN 文件,了解如何設定共享快取服務。
MapReduce 使用者可以根據資源類型指定哪些資源符合上傳至共享快取的資格。這是透過 mapred-site.xml 中的組態參數來完成
<property> <name>mapreduce.job.sharedcache.mode</name> <value>disabled</value> <description> A comma delimited list of resource categories to submit to the shared cache. The valid categories are: jobjar, libjars, files, archives. If "disabled" is specified then the job submission code will not use the shared cache. </description> </property>
如果列出資源類型,它會檢查共享快取以查看資源是否已在快取中。如果是,它會使用快取的資源,如果不是,它會指定需要非同步上傳資源。
MapReduce 使用者有 3 種方式可以為 MapReduce 作業指定資源
確保 MapReduce 作業的每個資源都有唯一的檔案名稱非常重要。這可防止在容器啟動期間,執行 MapReduce 作業的 YARN 容器本機化時發生符號連結覆寫。使用者可以使用 URI 的片段部分來指定自己的資源名稱。例如,對於在命令列中指定的檔案資源,它可能如下所示
-files /local/path/file1.txt#foo.txt,/local/path2/file1.txt#bar.txt
在上述範例中,兩個名為 file1.txt 的檔案將使用兩個不同的名稱本機化:foo.txt 和 bar.txt。
共享快取中的所有資源都具有公開可見性。
如果共享快取管理員不可用,MapReduce 用戶端會使用快速失敗機制。如果 MapReduce 用戶端無法連絡共享快取管理員,用戶端將不再為該作業提交的其餘部分使用共享快取。這可防止 MapReduce 用戶端每次嘗試檢查共享快取中的資源時都會逾時。MapReduce 用戶端會快速回復為預設行為,並提交作業,就好像一開始從未啟用共享快取一樣。