Hadoop:start-dfs.sh权限被拒绝

时间:2013-03-04 21:52:21

标签: hadoop

我在笔记本电脑上安装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”。但是许可仍被拒绝。

有没有人可以帮助我?

提前致谢!

10 个答案:

答案 0 :(得分:21)

我在最后几个小时遇到了同样的问题,但终于解决了。 我有同一个用户提取的hadoop安装,就像我用来运行hadoop一样。因此用户权限不是问题 我的配置是这样的: Google Cloud上的Ubuntu linux机器。

Hadoop安装/ home / Hadoop数据目录/ var / lib / hadoop 目录访问位是777所以任何人都可以访问。 我做了ssh到远程机器上对配置文件进行了更改并执行了start-dfs.sh,然后它给了我“权限被拒绝(公钥)” 所以这是解决方案: 在同一个ssh终端:

  1. SSH-密钥生成
  2. 2.它会询问文件夹位置,它会复制密钥,我输入 /home/hadoop/.ssh/id_rsa

    3.它会询问密码短语,为简单起见,请将其保留为空。

    4. cat /home/hadoop/.ssh/id_rsa.pub>>的.ssh / authorized_keys中 (要将新生成的公钥复制到用户home / .ssh目录中的auth文件)

    1. ssh localhost

    2. <强> 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)

我现在面临这个问题,在我提出这个问题之前,我使用下面的方法。

  1. sudo -s -H
  2. 使用此代码以root用户身份登录

    1. ssh localhost
    2. 使用ssh登录(如果您只是尝试使用单节点模式)

      1. ./sbin/start-dfs.sh
      2. ./sbin/start-yarn.sh

        “cd”到您的Hadoop安装路线,然后打印该代码以启动HDFS&amp; MapRedude,那么您将不会再次遇到许可问题。

        我猜这个问题的原因是:

        我使用root用户初始化Hadoop环境,因此几个文件夹是由root用户创建的,所以当我现在使用我自己的帐户如'Jake'时,我没有启动服务的许可(期间)那个时候系统需要访问LOGS)

        enter image description here

答案 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