我自制安装了hadoop,但现在有了权限控制问题 hadoop namenode -format和./start-all.sh命令。
我认为这是因为我将设置放在" core-site.xml"中。 " hadoop.tmp.dir"我把" / tmp / $ {name}"下。
现在它在namenode -format中给我一个错误,因为:无法创建文件夹,权限被拒绝。 即使我sudo这个命令,但在start-all.sh命令中,仍然有很多权限被拒绝。我尝试sudo start-all.sh但是密码(我只在mac上使用这个传递给我的管理员)但是也被拒绝了。
我认为这是因为许可问题。无论如何我可以解决它吗?
谢谢!
答案 0 :(得分:5)
在本地系统上,看起来您没有创建hduser用户。
作为一个典型的设置过程,创建一个hadoop组和添加到该组的hduser用户是一个很好的过程。
您可以使用以下命令使用root / super用户帐户执行此操作:
$ sudo adduser --ingroup hadoop hduser
这假设您已设置hadoop组。如果没有设置,您可以创建一个组:
$ sudo addgroup hadoop
答案 1 :(得分:0)
因此,当您运行Hadoop时,它会将内容存储在您在hdfs-site.xml文件中配置的数据,名称和tmp目录中。如果你没有设置这些设置,它们将指向$ {hadoop.tmp.dir} / dfs / data,在你的情况下为/ tmp dir。这不是您希望存储数据的位置。您首先需要将这些添加到您的hdfs配置文件中,以及其他设置。
在主:
上<property>
<name>dfs.data.dir</name>
<value>/app/hadoop/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/app/hadoop/name</value>
</property>
在奴隶:
上<property>
<name>dfs.data.dir</name>
<value>/app/hadoop/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>master:/app/hadoop/name</value>
</property>
现在一旦完成,您必须实际制作这些目录。所以在master上创建以下dirs: / app / hadoop / name,/ app / hadoop / data和/ app / hadoop / tmp。 在除了名称dir。
之外的从站上创建相同的现在您需要设置权限,以便Hadoop可以使用它们。 第二行只是为了确定。
sudo chown <hadoop user>:<hadoop user> /app/hadoop/name /app/hadoop/data /app/hadoop/tmp
sudo chmod 0777 /app/hadoop/name /app/hadoop/data /app/hadoop/tmp
试试看,看看它是否有效。如果问题不完整,我可以回答问题。