Hadoop:多用户的伪分布式模式

Hadoop:多用户的伪分布式模式,hadoop,Hadoop,我提前感谢你的帮助 我已经使用root用户凭据在伪分布式模式下安装了Hadoop。我希望提供对多个用户(比如hadoop1、hadoop2等)的访问,以便能够在这个集群上提交和运行MapReduce作业。我们如何做到这一点 到目前为止我做了什么 > - Setup Hadoop to run in Pseudo-distributed mode > - Used "root" user credentials to set this up. > - Added users ha

我提前感谢你的帮助

我已经使用root用户凭据在伪分布式模式下安装了Hadoop。我希望提供对多个用户(比如hadoop1、hadoop2等)的访问,以便能够在这个集群上提交和运行MapReduce作业。我们如何做到这一点

到目前为止我做了什么

> - Setup Hadoop to run in Pseudo-distributed mode
> - Used "root" user credentials to set this up.
> - Added users hadoop1 and hadoop2 to a group called "hadoop".
> - Added root also to be part of the group "hadoop".
> - Created a folder called hdfstmp and set this as the path for hadoop.tmp.dir.
> - Started the cluster using bin/start-all.sh
> - Ran MapReduce jobs using hadoop1 and hadoop2 users.
我得到的错误如下:

Exception in thread "main" java.io.IOException: Permission denied
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:1006)
        at java.io.File.createTempFile(File.java:1989)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:119)
  • 为了克服这个错误,我给了组“hadoop”rwx对文件夹hdfstmp的权限。此文件夹上的权限类似于drwxrwxr-x
  • 使用hadoop1和hadoop2用户登录提交的MapReduce作业。作业运行良好,没有任何错误
但是,如果先执行stop-all.sh,然后再执行start-all.sh,则DataNode(有时甚至是NameNode)不会启动。当我检查日志时,我看到一个错误,如下所示:

2013-09-21 16:43:54518警告org.apache.hadoop.hdfs.server.datanode.datanode:dfs.data.dir中的目录无效:对/data/hdfstmp/dfs/data的权限不正确,预期为:rwxr-xr-x,实际为:rwxr-xr-x

现在,在不更改hdfstmp目录的组所有权的情况下,不同用户提交的MR作业不会运行。但是当NameNode重新启动时,我得到了如上所述的问题

我如何克服这个问题?对于同样的问题,最佳做法是什么

另外,是否有一种方法可以监控不同用户提交的作业?我假设Web UI应该允许我这样做。请确认

我感谢你在这个问题上能给我的任何帮助。谢谢


关于添加专用Hadoop系统用户的问题

我们将使用专用的Hadoop用户帐户来运行Hadoop。虽然这不是必需的,但建议使用它,因为它有助于将Hadoop安装与在同一台计算机上运行的其他软件应用程序和用户帐户(想想:安全性、权限、备份等)分开

这将把用户hduser和组hadoop添加到本地计算机

更改hadoop安装目录的权限

chown -R hduser:hadoop hadoop
最后更改hadoop临时目录权限

如果您的临时目录是/app/hadoop/tmp

#mkdir -p /app/hadoop/tmp
#chown hduser:hadoop /app/hadoop/tmp
如果你想加强安全,chmod从755到750

#chmod 750 /app/hadoop/tmp

当你修改tmp文件夹权限时-你修改了HDFS上的文件夹还是本地磁盘上的文件夹?克里斯-我修改了本地磁盘上的权限。谢谢你的回复。问题:如果我的/app/hadoop/tmp目录拥有755权限,这意味着只有所有者“hduser”可以在该目录中创建文件,“hadoop”组的成员(本例中为hadoop1和hadoop2)不能在该目录中创建文件。我的理解正确吗?如果是,则当用户hadoop1执行MapReduce作业时,中间数据必须写入“/app/hadoop/tmp”目录,但hadoop1没有写入权限。因此,将出现“权限被拒绝”错误。我的理解正确吗?如果hadoop1和hadoop2都是hadoop组的成员,那么他们有权读取和写入/app/hadoop/tmp中的文件。如果你得到一个权限被拒绝的错误,这意味着他们不是hadoop组的成员。我确信我已经正确设置了组,hadoop用户是hadoop目录的一部分。我尝试了对hadoop目录和hadoop.tmp.dir目录的755个权限,但仍然出现“权限被拒绝”错误。我是Linux新手,如果我错了,请纠正我:R-X不允许用户/组在该目录中写入文件,对吗?@user3031097您解决过这个问题吗?我在输出时遇到了与
mkdir:Permission denied:user=dijksterhuis,access=WRITE,inode=“/user”:hadoop:supergroup:drwxr-xr-x
相同的错误
#chmod 750 /app/hadoop/tmp