【问题标题】:Hadoop: start-dfs.sh permission deniedHadoop:start-dfs.sh 权限被拒绝
【发布时间】:2013-03-04 21:52:20
【问题描述】:

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

有没有人可以帮助我?

提前致谢!

【问题讨论】:

  • 1.您是否使用同一用户启动所有 hadoop 守护程序? 2. 机器上的无密码 SSH 设置是否正确?也就是说,你可以在不提示输入密码的情况下运行ssh localhost 吗?

标签: hadoop


【解决方案1】:

我遇到了同样的问题,所以尝试连接SSH并得到类似“not found,”的语句,所以我通过以下步骤前往ssh位置进行调试:

cd ~/.ssh

ssh-keygen -t rsa -p""

cat id_rsa.pub >> authorized_keys

...然后它起作用了...

【讨论】:

  • 什么时候是 ssh_keygen 和 ssh-keygen?我的 Ubuntu 16 安装上只安装了后者(带有连字符)。 ssh-keygen -t rsa -p"" 失败,因为没有 id_rsa 文件,并且在提示时我没有指定替代方案。
【解决方案2】:

在过去的几个小时里,我一直被同一个问题困扰,但最终解决了。 我的 hadoop 安装由与我用来运行 hadoop 的用户相同的用户提取。所以用户权限不是问题。
我的配置是这样的: Google Cloud 上的 Ubuntu linux 机器。

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

  1. ssh-keygen

2.它会询问复制密钥的文件夹位置,我输入了/home/hadoop/.ssh/id_rsa

3.它会要求输入密码,为简单起见将其留空。

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

  1. ssh 本地主机

  2. start-dfs.sh (现在应该可以了!)

【讨论】:

  • 我可以运行ssh localhost 没有任何问题或提示输入密码。但是我仍然无法运行 start-dfs.sh
  • 小心运行此代码,您可能会丢失一些配置。这里 .ssh/authorized 密钥的内容被覆盖。 Jacek的解决方案更好。
  • @Sören,使用>> 将内容附加到现有的authorized_keys 文件。它不会覆盖内容。
【解决方案3】:

您正在尝试通过 ssh 连接到您自己的机器(本地主机)并且缺少允许登录的 authorized_keys 文件。

SSH 中的此文件指定可用于登录配置该文件的用户帐户的 SSH 密钥。

按照以下两个步骤正确配置。

在终端中使用以下命令生成新的密钥生成器:

ssh-keygen

按回车键保留默认名称id_rsa.pub

现在注册生成的密钥文件:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

【讨论】:

  • 如果你看到sign_and_send_pubkey: signing failed: agent refused operation错误信息,那么你需要添加你刚刚创建的密钥:ssh-add; p.s.检查所有键的列表:ssh-add -l
【解决方案4】:

R hadoop 安装权限被拒绝问题,下面的命令适用于 start-all.sh

sudo chown -R hadoop /usr/local/hadoop/ 

【讨论】:

    【解决方案5】:

    尝试将文件夹的所有权:/var/log/hadoop/root 更改为用户:munichong。 与所有系统一样,日志目录需要由 hadoop 编辑。因此,它需要编辑 LOG 文件夹及其内容的权限。

    sudo 在这种情况下将不起作用,因为这需要即使在此脚本完成其工作(即在后台启动 HADOOP 服务)之后也具有更改文件夹内容的权限。

    【讨论】:

    • 您可以通过添加以下行将日志目录从默认 /var/log 更改为您在 hadoop-env.sh 文件中的自定义位置:export HADOOP_LOG_DIR=<Your Location>
    【解决方案6】:

    我现在也面临这个问题,在我回答这个问题之前,我使用下面的方法。

    1. sudo -s -H

    使用此代码以 root 用户身份登录

    1. ssh localhost

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

    1. ./sbin/start-dfs.sh

    ./sbin/start-yarn.sh

    “cd”到你的 Hadoop 安装路径,然后打印该代码来启动 HDFS&MapRedude,那么你就不会再遇到许可问题了。

    我猜这个问题的原因:

    我使用root用户启动Hadoop环境,所以几个文件夹是由root用户创建的,所以当我现在使用像'Jake'这样的自己的帐户时,我没有权限启动服务(在那个时候系统需要访问LOGS)

    【讨论】:

      【解决方案7】:

      我通过将所有文件的权限设置为777来解决它:

      sudo chmod 777 /usr/local/hadoop-2.7.6/* -R
      

      【讨论】:

        【解决方案8】:

        我认为问题在于 root 和用户的 ssh 连接。 这是我的副本https://askubuntu.com/questions/497895/permission-denied-for-rootlocalhost-for-ssh-connection 解决了我的问题。

        默认情况下,SSH 服务器拒绝基于密码的 root 登录。在 /etc/ssh/sshd_config 中,

        改变: PermitRootLogin without-password to PermitRootLogin 是

        并重启 SSH:sudo service ssh restart

        或者,您可以使用 SSH 密钥。如果您没有,请使用 ssh-keygen 创建一个(坚持默认的密钥,如果您愿意,可以跳过密码)。然后执行 sudo -s(或任何您喜欢的成为 root 的方法),并将 SSH 密钥添加到 /root/.ssh/authorized_keys:

        cat /home/user/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

        【讨论】:

          【解决方案9】:

          尝试更改存储 hdfs namenode 和 datanode 的位置的权限。

          hdfs-site.xml 中提到的位置

          那个位置应该有 755 的权限。 -rwxr-xr-x 与您运行 hadoop 的用户。

          还为日志位置设置相同的权限。

          希望对您有所帮助!

          【讨论】:

            【解决方案10】:

            必须这样做,就像上面的每个人一样:

            cd ~/.ssh
            
            ssh-keygen -t rsa -p""
            
            cat id_rsa.pub >> authorized_keys
            

            但这是关键:

            chmod 400 ~/.ssh/id_rsa
            

            【讨论】:

              猜你喜欢
              • 2018-06-19
              • 1970-01-01
              • 2021-07-12
              • 2015-08-30
              • 1970-01-01
              • 2021-09-05
              相关资源
              最近更新 更多