【问题标题】:hadoop daemons not startinghadoop 守护进程没有启动
【发布时间】:2012-08-04 00:44:33
【问题描述】:

我已经在 linux 集群中安装了 Hadoop。当我尝试通过命令启动服务器时 $bin/start-all.sh,我收到以下错误:

mkdir: cannot create directory `/var/log/hadoop/spuri2': Permission denied
chown: cannot access `/var/log/hadoop/spuri2': No such file or directory
/home/spuri2/spring_2012/Hadoop/hadoop/hadoop-1.0.2/bin/hadoop-daemon.sh: line 136: /var/run/hadoop/hadoop-spuri2-namenode.pid: Permission denied
head: cannot open `/var/log/hadoop/spuri2/hadoop-spuri2-namenode-gpu02.cluster.out' for reading: No such file or directory
localhost: /home/spuri2/.bashrc: line 10: /act/Modules/3.2.6/init/bash: No such file or directory
localhost: mkdir: cannot create directory `/var/log/hadoop/spuri2': Permission denied
localhost: chown: cannot access `/var/log/hadoop/spuri2': No such file or directory

我已将 conf/hadoop-env.sh 中的日志目录参数配置为 /tmp 目录,并且我已将 core-site.xml 中的“hadoop.tmp.dir”配置为 /tmp/ 目录。由于我无权访问 /var/log 目录,但 hadoop 守护进程仍在尝试写入 /var/log 目录并失败。

我想知道为什么会这样?

【问题讨论】:

    标签: hadoop mapreduce cloudera


    【解决方案1】:

    您必须将此目录写入“core.site.xml”文件而不是hadoop-env.sh

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <!-- Put site-specific property overrides in this file. -->
    
    <configuration>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/Directory_hadoop_user_have_permission/temp/${user.name}</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>The name of the default file system.  A URI whose
      scheme and authority determine the FileSystem implementation.  The
      uri's scheme determines the config property (fs.SCHEME.impl) naming
      the FileSystem implementation class.  The uri's authority is used to
      determine the host, port, etc. for a filesystem.</description>
    </property>
    
    </configuration>
    

    【讨论】:

    • .bashrc 文件中变量 $HADOOP_HOME 的位置是什么?
    • 我的 .bashrc 文件中没有 $HADOOP_HOME 条目,我无法编辑该文件,因为我没有权限。我所做的是使用 export 命令设置环境变量 HADOOP_HOME。但它也不起作用。
    • $HADOOP_HOME 指向了错误的地方,我把它指向了 Hadoop 安装文件夹,即。 bin文件夹的父目录HADOOP_HOME=${HOME}/spring_2012/Hadoop/hadoop/hadoop-1.0.2
    • 所以当你输入> echo $HADOOP_HOME 在你的shell中,它会打印什么?
    • 它打印出我安装 Hadoop 的正确位置,即。 /home/spuri2/spring_2012/Hadoop/hadoop/hadoop-1.0.2
    【解决方案2】:

    简而言之,我遇到了这个问题,因为在大学集群中安装了多个 hadoop。以 root 用户身份安装 hadoop 弄乱了我的本地 hadoop 安装。

    Hadoop-daemons 无法启动的原因是它无法写入某些具有 root 权限的文件。我以普通用户的身份运行 Hadoop。出现问题是因为我们大学的系统管理员以 root 用户身份安装了 Hadoop,所以当我开始本地安装 hadoop 时,root 安装配置文件优先于我的本地 hadoop 配置文件。花了很长时间才解决这个问题,但在以 root 用户身份卸载 hadoop 后,问题得到了解决。

    【讨论】:

      【解决方案3】:

      我曾经遇到同样的错误,如果您在配置标签下添加了然后在运行更改为超级用户之前:su - 用户名(这是拥有 hadoop 目录所有权的用户)然后尝试执行 start-all。嘘

      确保您在教程中提到的配置标签之间添加了必要的内容:

      http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

      【讨论】:

        最近更新 更多