我已使用我的用户名安装并设置了hadoop的单个节点实例。我想为不同的用户设置相同的hadoop设置。我怎么能这样做?
答案 0 :(得分:2)
在hadoop中,我们运行不同的任务并将数据存储在HDFS中。 如果多个用户使用相同的用户帐户执行任务,则很难跟踪作业并跟踪每个用户完成的任务/缺陷。 另一个问题是安全问题。 如果所有用户都拥有相同的用户帐户,则所有用户都将拥有相同的权限,所有用户都可以访问每个人的数据,可以修改,执行,也可以删除。 这是一个非常严重的问题。 为此,我们需要创建多个用户帐户。 创建多个用户的好处
1)用户无法修改其他用户的目录/文件。 2)其他用户无法将新文件添加到用户的目录中。 3)其他用户不能对用户的文件执行任何任务(mapreduce等)。 简而言之,数据是安全的,只有分配的用户和超级用户才能访问。 设置多个用户帐户的步骤
要添加能够执行hadoop操作的新用户,请执行以下步骤。
第1步
创建新用户 对于Ubuntu
sudo adduser --ingroup <groupname> <username>
对于RedHat变体
useradd -g <groupname> <username>
的passwd 然后输入用户详细信息和密码。
第2步
我们需要更改HDFS中目录的权限,其中hadoop存储其临时数据。 打开core-site.xml文件 找到hadoop.tmp.dir的值。 在我的core-site.xml中,它是/ app / hadoop / tmp。在前面的步骤中,我将使用/ app / hadoop / tmp作为我的目录来存储hadoop数据(即hadoop.tmp.dir的值)。 然后从超级用户帐户执行以下步骤。
hadoop fs –chmod -R 1777 /app/hadoop/tmp/mapred/staging
第3步
下一步是在hadoop.tmp.dir上给我们的用户组写入权限(这里是/ app / hadoop / tmp。打开core-site.xml以获取hadoop.tmp.dir的路径)。这应该仅在添加新用户的机器(节点)中完成。
chmod 777 / app / hadoop / tmp
第4步
下一步是在HDFS中为新用户创建目录结构。
对于超级用户,请创建目录结构。
例如:hadoop fs –mkdir /user/username/
第5步
有了这个,我们将无法运行mapreduce程序,因为新创建的目录结构的所有权是超级用户。因此,将HDFS中新创建的目录的所有权更改为新用户。
hadoop fs –chown –R username:groupname <directory to access in HDFS>
Eg: hadoop fs –chown –R username:groupname /user/username/
第6步 以新用户身份登录并执行hadoop作业..
su – username
答案 1 :(得分:1)
我有类似的文件权限问题,并且没有通过执行hadoop fs –chmod -R 1777 /app/hadoop/tmp/mapred/staging
得到修复。
相反,它通过执行以下Unix命令$ sudo chmod -R 1777 /app/hadoop/tmp/mapred