public static final String CACHE_FILE_VISIBILITIES = "mapreduce.job.cache.files.visibilities";
public static final String CACHE_ARCHIVES_VISIBILITIES = "mapreduce.job.cache.archives.visibilities";
/**
* 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,
1条答案
按热度按时间lrpiutwd1#
我浏览了hadoop代码。无法通过配置设置这些参数(mapreduce.job.cache.files.visibilities和mapreduce.job.cache.archives.visibilities)。
这些参数在mrjobconfig.java中定义:
org.apache.hadoop.mapreduce.jobresourceuploader.java有一个函数uploadfiles()。此函数用于将临时文件、jar和归档文件上载到分布式缓存:
此函数通过调用以下函数来确定文件和存档的可见性:
上面提到的函数调用,最后点击org.apache.hadoop.mapreduce.filecache.clientdistributedcachemanager.java中的determinecachevisibilities()函数
根据该功能的描述:
因此可见性是根据叶文件和父目录的权限来确定的。
在clientdistributedcachemanager.java中,ispublic()方法具有计算可见性的逻辑:
最后,在确定权限之后,在以下函数中设置可见性:
因此,即使在命令行中指定这些配置,也不会考虑配置参数。这些配置由框架本身以编程方式设置。
另外,我还检查了mapred-default.xml。可见性没有默认的配置参数。