我在笔记本电脑上安装Hadoop。 SSH工作正常,但我无法启动hadoop。
munichong@GrindPad:~$ ssh localhost
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com/
0 packages can be updated.
0 updates are security updates.
Last login: Mon Mar 4 00:01:36 2013 from localhost
munichong@GrindPad:~$ /usr/sbin/start-dfs.sh
chown: changing ownership of `/var/log/hadoop/root': Operation not permitted
starting namenode, logging to /var/log/hadoop/root/hadoop-munichong-namenode-GrindPad.out
/usr/sbin/hadoop-daemon.sh: line 136: /var/run/hadoop/hadoop-munichong-namenode.pid: Permission denied
usr/sbin/hadoop-daemon.sh: line 135: /var/log/hadoop/root/hadoop-munichong-namenode-GrindPad.out: Permission denied
head: cannot open `/var/log/hadoop/root/hadoop-munichong-namenode-GrindPad.out' for reading: No such file or directory
localhost: chown: changing ownership of `/var/log/hadoop/root': Operation not permitted
localhost: starting datanode, logging to /var/log/hadoop/root/hadoop-munichong-datanode-GrindPad.out
localhost: /usr/sbin/hadoop-daemon.sh: line 135: /var/log/hadoop/root/hadoop-munichong-datanode-GrindPad.out: Permission denied
localhost: /usr/sbin/hadoop-daemon.sh: line 136: /var/run/hadoop/hadoop-munichong-datanode.pid: Permission denied
localhost: head: cannot open `/var/log/hadoop/root/hadoop-munichong-datanode-GrindPad.out' for reading: No such file or directory
localhost: chown: changing ownership of `/var/log/hadoop/root': Operation not permitted
localhost: starting secondarynamenode, logging to /var/log/hadoop/root/hadoop-munichong-secondarynamenode-GrindPad.out
localhost: /usr/sbin/hadoop-daemon.sh: line 136: /var/run/hadoop/hadoop-munichong-secondarynamenode.pid: Permission denied
localhost: /usr/sbin/hadoop-daemon.sh: line 135: /var/log/hadoop/root/hadoop-munichong-secondarynamenode-GrindPad.out: Permission denied
localhost: head: cannot open `/var/log/hadoop/root/hadoop-munichong-secondarynamenode-GrindPad.out' for reading: No such file or directory
munichong@GrindPad:~$ sudo /usr/sbin/start-dfs.sh
[sudo] password for munichong:
starting namenode, logging to /var/log/hadoop/root/hadoop-root-namenode-GrindPad.out
localhost: Permission denied (publickey,password).
localhost: Permission denied (publickey,password).
我用过“sudo”。但是许可仍被拒绝。
有没有人可以帮助我?
提前致谢!
答案 0 :(得分:21)
我在最后几个小时遇到了同样的问题,但终于解决了。 我有同一个用户提取的hadoop安装,就像我用来运行hadoop一样。因此用户权限不是问题 我的配置是这样的: Google Cloud上的Ubuntu linux机器。
Hadoop安装/ home / Hadoop数据目录/ var / lib / hadoop 目录访问位是777所以任何人都可以访问。 我做了ssh到远程机器上对配置文件进行了更改并执行了start-dfs.sh,然后它给了我“权限被拒绝(公钥)” 所以这是解决方案: 在同一个ssh终端:
2.它会询问文件夹位置,它会复制密钥,我输入 /home/hadoop/.ssh/id_rsa
3.它会询问密码短语,为简单起见,请将其保留为空。
4. cat /home/hadoop/.ssh/id_rsa.pub>>的.ssh / authorized_keys中强> (要将新生成的公钥复制到用户home / .ssh目录中的auth文件)
ssh localhost
<强> start-dfs.sh 强> (现在应该可以了!)
答案 1 :(得分:14)
我遇到了同样的问题,所以试图连接SSH并得到如#34; not found,&#34;所以我通过以下步骤进入ssh位置进行调试:
cd ~/.ssh
ssh_keygen -t rsa -p""
cat id_rsa.pub >> authorized_keys
......然后它起作用了......
答案 2 :(得分:4)
尝试将文件夹的所有权/var/log/hadoop/root
更改为用户:munichong
。
与所有系统一样,需要通过hadoop编辑LOGS目录。因此,它需要具有编辑LOG文件夹及其内容的权限。
sudo
在这种情况下不起作用,因为这需要具有更改文件夹内容的权限,即使在此脚本完成其工作之后,即在后台启动HADOOP服务。
答案 3 :(得分:1)
我现在面临这个问题,在我提出这个问题之前,我使用下面的方法。
sudo -s -H
使用此代码以root用户身份登录
ssh localhost
使用ssh登录(如果您只是尝试使用单节点模式)
./sbin/start-dfs.sh
./sbin/start-yarn.sh
“cd”到您的Hadoop安装路线,然后打印该代码以启动HDFS&amp; MapRedude,那么您将不会再次遇到许可问题。
我猜这个问题的原因是:
我使用root用户初始化Hadoop环境,因此几个文件夹是由root用户创建的,所以当我现在使用我自己的帐户如'Jake'时,我没有启动服务的许可(期间)那个时候系统需要访问LOGS)
答案 4 :(得分:1)
您正试图SSH到自己的计算机(本地主机),并且缺少允许登录的authorized_keys
文件。
此SSH文件指定了可用于登录配置该文件的用户帐户的SSH密钥。
请按照以下两个步骤进行正确配置。
在终端中使用以下命令生成新的密钥生成器:
ssh-keygen
按Enter键以保留默认名称id_rsa.pub
现在注册生成的密钥文件:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
答案 5 :(得分:0)
我认为问题在于root和用户的ssh连接。 这是我的副本https://askubuntu.com/questions/497895/permission-denied-for-rootlocalhost-for-ssh-connection 解决了我的问题。
默认情况下,SSH服务器拒绝root用户的基于密码的登录。在/ etc / ssh / sshd_config中,
变化: PermitRootLogin没有密码到PermitRootLogin是
然后重启SSH:sudo service ssh restart
或者,您可以使用SSH密钥。如果你没有,请使用ssh-keygen创建一个(坚持使用密钥的默认值,如果你愿意,可以跳过密码)。然后执行sudo -s(或者你想成为root的首选方法),并将一个SSH密钥添加到/root/.ssh/authorized_keys:
cat /home/user/.ssh/id_rsa.pub&gt;&gt; /root/.ssh/authorized_keys
答案 6 :(得分:0)
我通过将所有文件的权限设置为777
来解决了该问题:
sudo chmod 777 /usr/local/hadoop-2.7.6/* -R
答案 7 :(得分:0)
R hadoop安装用于权限拒绝问题,以下命令适用于start-all.sh
sudo chown -R hadoop /usr/local/hadoop/
答案 8 :(得分:0)
尝试更改hdfs namenode和datanode的存储位置的权限。
hdfs-site.xml中提到的位置
该位置应具有755的许可。 -rwxr-xr-x与运行hadoop的用户。
还为日志位置设置了相同的权限。
希望这会有所帮助!
答案 9 :(得分:0)
必须这样做,就像上面的每个人一样:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string palabra = " ", letra = " ", guion = " _ ", letraUsada = " ", letraNoUsada = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int vidas = 5, lugarLetra = 0, longitud = 0;
char letraReemplazada = 'N', finJuego = 'N';
cout << "Ingresa la palabra secreta: ";
getline(cin, palabra);
system("cls");
for (int i = 1; i <= palabra.length(); i++)
{
cout << guion;
longitud++;
}
cout << "\n\n";
cout << "Empezemos a adivinar " << endl;
cout << endl;
while (finJuego == 'N')
{
cout << "Ingresa una letra: ";
cin >> letra;
cout << endl;
lugarLetra = letraNoUsada.find(letra, 0);
if (lugarLetra != string::npos)
{
letraNoUsada.replace(lugarLetra, 1, "*");
}
else
{
cout << "La letra " << letra << " ya ha sido ingresada. Escoja otra letra" << endl;
}
for (int x = 0; x < palabra.length(); x++)
{
if (palabra.substr(x, 1) == letra)
{
guion.replace(x, 1, letra);
letraReemplazada = 'Y';
}
}
};
return 0;
}
但这是关键:
cd ~/.ssh
ssh-keygen -t rsa -p""
cat id_rsa.pub >> authorized_keys