有沒有一種方法來設置由Hadoop的通用選項提供一個Hadoop MapReduce的本地資源的紗線知名度-files或-archives。在yarn-site.xml中查找我使用-archives選項找到了在worker節點上寫入文件的位置,但是基於我讀過的其他文章和它登錄的目錄(/ hadoop/yarn/local/usercache/myusername/appcache)它被視爲私有。我找不到任何通用選項或-D some.yarn.setting將其從私有應用程序更改爲應用程序或更好,公共。變化的Hadoop MapReduce的本地資源能見度PUBLIC
回答
我通過Hadoop的代碼去了。這些參數(mapreduce.job.cache.files.visibilities和mapreduce.job.cache.archives.visibilities)無法通過配置進行設置。
這些參數在MRJobConfig.java定義:
public static final String CACHE_FILE_VISIBILITIES = "mapreduce.job.cache.files.visibilities";
public static final String CACHE_ARCHIVES_VISIBILITIES = "mapreduce.job.cache.archives.visibilities";
org.apache.hadoop.mapreduce.JobResourceUploader.java,具有如下功能:uploadFiles()。此功能上傳的臨時文件,罐子和檔案館分佈式緩存:
這個功能決定的文件和檔案的知名度,通過調用以下功能:
// set the public/private visibility of the archives and files
ClientDistributedCacheManager.determineTimestampsAndCacheVisibilities(conf);
上述函數調用,終於命中determineCacheVisibilities()函數在org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.java
按本功能的描述:
/**
* Determines the visibilities of the distributed cache files and
* archives. The visibility of a cache path is "public" if the leaf component
* has READ permissions for others, and the parent subdirs have
* EXECUTE permissions for others
* @param job
* @throws IOException
*/
public static void determineCacheVisibilities(Configuration job,
所以可見性是根據葉文件和父目錄的權限確定的。
在ClientDistributedCacheManager.java,isPublic()方法具有計算能見度的邏輯:
//the leaf level file should be readable by others
if (!checkPermissionOfOther(fs, current, FsAction.READ, statCache)) {
return false;
}
return ancestorsHaveExecutePermissions(fs, current.getParent(), statCache);
最後,確定的權限之後,可見度被設定在以下的功能:
static void setArchiveVisibilities(Configuration conf, String booleans) {
conf.set(MRJobConfig.CACHE_ARCHIVES_VISIBILITIES, booleans);
}
static void setFileVisibilities(Configuration conf, String booleans) {
conf.set(MRJobConfig.CACHE_FILE_VISIBILITIES, booleans);
}
所以,即使你在命令行中指定這些配置中,配置參數不考慮。這些配置由框架本身以編程方式設置。
另外,我檢查mapred-default.xml中。可見性沒有默認配置參數。
你搖滾。我發佈後發現了兩個常量,但沒有看到任何明顯的方向去調查。有趣的是,我上面的評論中的Hortonworks鏈接隱約提到了文件的權限,但沒有像你所做的那樣拼寫出任何內容。做得好! –
- 1. Gradle中的本地化資源變量
- 2. Hadoop:設置MapReduce資源權限
- 3. 資源本地化
- 4. 本地化mscorlib.dll中資源
- 5. REST和本地化資源
- 6. Android本地化資源
- 7. 資源本地化xaml
- 8. Vala,資源和本地化
- 9. Yarn和MapReduce資源配置
- 10. TextBlock的能見度變化WPF
- 11. LayoutTransitions不工作的能見度變化
- 12. MVVM本地化 - 視圖與ViewModel中的本地化資源?
- 13. djangorestframework不能反映資源的變化
- 14. 如何本地化與iphone的資源
- 15. Silverlight類庫中的本地化資源
- 16. 來自webservice的WPF資源本地化
- 17. 重複的本地化資源文件
- 18. ILMerge和本地化的資源集合
- 19. iPhone - 使用本地化的資源
- 20. 數據庫中的本地化資源?
- 21. iOS - 本地化的JSON資源
- 22. 從資源的Android本地化
- 23. hadoop的Dumbo mapreduce
- 24. Hadoop中的MapReduce
- 25. ASP.NET:全球化/本地化:枚舉本地資源對象
- 26. 如何使用WPF本地化擴展本地化資源?
- 27. asp.net本地化資源顯式本地化不加載本地化文件
- 28. 如何通過Hadoop使用集中式資源mapreduce
- 29. Siliverlight:控制能見度變化對齊?
- 30. Hadoop:迭代MapReduce性能
你的問題不清楚。 「從私人到公共」的含義是什麼? –
我在Hadoop的源戳周圍,發現字符串「mapreduce.job.cache.archives.visibilities」,它可以被設置爲逗號分隔的列表(每個-archives條目顯然),但設置在驅動程序配置沒有按似乎沒有幫助。 –
如果您看[此Hortonworks鏈接](http:// hortonworks。com/blog/management-of-application-dependencies-in-yarn /),您會發現可以將地圖縮減作業捆綁的文件和存檔的本地資源可見性從私有(默認)更改爲公共和公共可見將允許文件在應用程序的運行之間持續存在。私人資源將在用戶每次運行應用程序後被刪除。 –