java - 尝试格式化namenode但权限被拒绝?

标签 java hadoop hdfs permission-denied

除了以前问的问题

I am trying to format namenode in hdfs but says: permission denied

为此,我没有任何回应,但再次发布了我为删除权限以完成工作而进行的操作:

我试过命令:
以下两个命令均来自线程:Permission denied at hdfs

  • sudo -u hduser bash
  • 编辑hdfs-site.xml

    用作:hduser @ Ubuntu:/usr/hadoop/hadoop-2.7.1/etc/hadoop$ sudo gedit hdfs-site.xml
    在此我添加了权限为false:


  • <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>


    并再次运行命令:

    hduser@Ubuntu:/usr/hadoop/hadoop-2.7.1$ bin/hdfs namenode -format bin/hdfs: line 304: /root/software/jdk1.8.0_45/bin/java: Permission denied bin/hdfs: line 304: exec: /root/software/jdk1.8.0_45/bin/java: cannot execute: Permission denied



    当我与一起使用时sudo

    它给 :

    hduser@Ubuntu:/usr/hadoop/hadoop-2.7.1$ sudo bin/hdfs namenode -format bin/hdfs: line 304: /root/software/jdk1.8.0_45/bin/java: No such file or directory



    有什么解决方案。

    最佳答案

    用上一篇文章更新了我的答案:

    在这种情况下,您可以尝试在计算机中安装openjdk并将其设置为hadoop。

  • 要安装openjdk,请使用命令 sudo apt-get install openjdk-7-jdk 。它将安装在路径 / usr / lib / jvm 中。安装完成后,将文件〜/ .bashrc 中的JAVA_HOME环境变量更改为最新打开的jdk路径,并通过命令“ source〜/ .bashrc ”执行该文件。
  • 在系统级别设置环境后,我们也必须在hadoop环境中进行设置。打开文件 $ {HADOOP_HOME} /etc/hadoop/hadoop-env.sh ,并将变量JAVA_HOME的值更改为最新的打开的jdk路径

  • 希望这可以解决您的问题。

    注意:设置后,通过命令echo $ JAVA_HOME验证java路径。

    上一篇:

    这不是Hadoop的问题,因为hadoop进程无法执行Java本身。
  • 确保您具有jdk目录的执行权限。(导航到jdk目录的父目录后,键入' ll ',它将显示权限级别)。
  • 如果它不在可执行级别,请通过运行命令“sudo chmod -Rf a + x jdk_directory_name ”来更改对jdk目录执行的模式。

  • 仅供引用:不建议将jdk目录放在根文件夹中,因为hadoop或java可以由计算机上的任何用户运行。因此,您可以将jdk目录移动到/ usr / lib或/ opt /目录。

    关于java - 尝试格式化namenode但权限被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759020/

    相关文章:

    java - 从 wordnet 获取属性

    java - Hibernate 以错误的顺序执行删除级联

    hadoop - HBase LZO表扫描导致RegionServer关闭

    azure - 在Azure Hdinsight上将数据从HDFS加载到Hive时出错

    java - 杀死 Hadoop 2.2.0 配置弃用信息消息的确切步骤

    hadoop - 如何使用hdfs分割用户ID?

    java - 从 testNG.xml 文件中检索参数值

    java - 复制数组并使用 printall() 方法将其大小加 1 以返回新数组中的所有 int

    oracle - 无法使用 sqoop 列出 oracle 表名

    java - 使用org.apache.hadoop DistributedFileSystem时,线程 “main” java.lang.NullPointerException中的异常