2016-01-25 53 views
0

鉴于我们有一些Hadoop MapReduce任务需要运行。这个MapReduce需要访问本地驱动器上的一些系统资源,即在某个节点上(实际上,我们必须将该资源放置到所有节点上)。Hadoop:设置MapReduce资源权限

问题是:应将哪些权限授予该资源文件?

我想给它权限,由运行Hadoop的用户读取。但实际上该任务将在另一个用户下执行。那个用户是'纱'。即如果我想将一些资源放到运行Hadoop Job的用户的某个主文件夹或相关的Oozie作业等,我不能这样做,因为实际上拥有MapReduce的用户的主文件夹是/ home/yarn /。

解决此问题的最佳方法是什么? 如何控制在哪个用户下运行MapReduce? 我在哪里可以查找该设置?

回答

0

我猜你只需要在HDFS中为这些资源创建所需的文件夹,并使用'hadoop fs -chmod ..'命令为这些文件夹和包含的文件设置权限。

请参考下面这个链接: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

+0

Marco,在我们的情况下,出于安全原因,无法将该文件放到HDFS中。它们应该从群集节点读取。 – MiamiBeach

+0

您是否尝试使用chown将该文件夹的所有者更改为纱线并执行chmod 644? – Marco99

+0

这次我的意思是简单的Linux命令。 – Marco99

0

首先声明“的MapReduce需要访问本地驱动器上的一些系统资源” 运行在分布式模式MapReduce的程序时,是不可能。无论您需要什么文件都应该移到HDFS。为所有用户提供文件读取权限,我希望一切都会好起来。如果您需要在Mapper或Reducer中读取文件,并且不将该文件作为MapReduce程序的输入传递,那么请考虑使用提供MapReduce的分布式缓存机制。

+0

Prabhu,MapReduce可以从本地节点读取任何文件。 – MiamiBeach