假设我们有一些hadoopmapreduce任务要运行。这个mapreduce需要访问本地驱动器上的一些系统资源,即某个节点上的资源(实际上,我们必须将这些资源放到所有节点上)。
问题是:应该为该资源文件授予哪些权限?
我想给它的权限,由用户阅读运行hadoop。但事实上,该任务将在另一个用户下执行。那个用户是“Yarn”。i、 e.如果我想把一些资源放在运行hadoop作业的用户的某个主文件夹,或者相关的oozie作业等,我不能这样做,因为实际上拥有mapreduce的用户的主文件夹是/home/yarn/。
处理这个问题最好的办法是什么?如何控制在哪个用户mapreduce下运行?我可以在哪里查找这些设置?
2条答案
按热度按时间u4vypkhs1#
首先,在分布式模式下运行mapreduce程序时,不能使用“mapreduce需要访问本地驱动器上的某些系统资源”语句。你需要的任何文件都应该移到hdfs。给所有用户一个读取权限,我希望一切正常。如果您需要读取mapper或reducer中的文件,而不是将该文件作为输入传递给mapreduce程序,那么可以考虑使用我的mapreduce提供的分布式缓存机制。
r6l8ljro2#
我想您只需要在hdfs中为这些资源创建所需的文件夹,并使用'hadoop fs-chmod..'命令设置对这些文件夹和包含的文件的权限。
请参考以下链接:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfspermissionsguide.html