Hadoop:针对多个用户的伪分布式模式

时间:2013-11-25 11:39:07

标签: hadoop

我提前感谢您的帮助。

我使用root用户凭据在Pseudo Distributed模式下设置了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)
  • 为了克服这个错误,我给文件夹hdfstmp提供了组“hadoop”rwx权限。此文件夹的权限类似于drwxrwxr-x。
  • 使用hadoop1和hadoop2用户登录提交MapReduce作业。工作顺利,没有任何错误。

但是,如果我执行stop-all.sh然后执行start-all.sh,则DataNode(偶尔甚至是NameNode)也不会启动。当我检查日志时,我看到如下错误:

2013-09-21 16:43:54,518 WARN org.apache.hadoop.hdfs.server.datanode.DataNode:dfs.data.dir中的无效目录:/ data / hdfstmp / dfs / data的权限不正确,预期:rwxr-xr-x,而实际:rwxrwxr-x

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

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

另外,有没有办法监控不同用户提交的作业?我假设Web UI应该允许我这样做。请确认。

感谢您就此问题向我提供的任何帮助。感谢。

此致

1 个答案:

答案 0 :(得分:0)

添加专用的Hadoop系统用户

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

#addgroup hadoop
#adduser --ingroup hadoop hadoop1
#adduser --ingroup hadoop hadoop2

这会将用户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