我提前感谢您的帮助。
我使用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)
但是,如果我执行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应该允许我这样做。请确认。
感谢您就此问题向我提供的任何帮助。感谢。
此致
答案 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