【问题标题】:Hadoop fs -ls outputs current working directory's files rather than hdfs volume's filesHadoop fs -ls 输出当前工作目录的文件而不是 hdfs 卷的文件
【发布时间】:2017-12-28 18:15:55
【问题描述】:

已在 OpenSuse Tumbleweed 20170703 上使用 Hadoop 2.8.2 设置了单个伪分布式节点 (localhost)。Java 版本为 1.8.0_151。一般来说,它似乎设置正确。我可以格式化namenode,没有错误等。

但是,当我尝试 hadoop fs -ls 时,会返回当前工作目录中的文件/目录,而不是返回 hdfs 卷文件的预期行为(目前应该什么都没有)。

最初关注this guide for CentOS(根据需要进行更改)和Apache Hadoop guide

我假设这是一个配置问题,但我不明白为什么会这样。我按照下面的方法玩过core-site.xmlhdfs-site.xml,但没有运气。

/opt/hadoop-hdfs-volume/ 存在并分配给用户组hadoop 中的用户hadoop/opt/hadoop/ 目录(用于 bin 内容)也是如此。


编辑:

/tmp/hadoop-hadoop/dfs/namehdfs namenode -format 命令运行的地方。 /tmp/ 似乎也包含我的用户 (/tmp/hadoop-dijksterhuis) 和 hadoop 用户目录。

考虑到下面的*-site.xml 配置文件,这对我来说似乎很奇怪。

已尝试使用hadoop/sbin/ 目录中的.sh 脚本重新启动dfsyarn 服务。也重启了。运气不好!


核心站点.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-hdfs-volume/${user.name}</value>
    </property>
</configuration>

hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>${hadoop.tmp.dir}/dfs/data</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>${hadoop.tmp.dir}/dfs/name</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

有人有什么想法吗?如果需要,我可以提供更多详细信息。

【问题讨论】:

    标签: hadoop hdfs hadoop2


    【解决方案1】:

    设法通过another SO answer 破解修复:

    $HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop 添加到hadoop 用户的.bashrc

    这具有覆盖etc/hadoop-env.sh 中的值的效果,它一直将namenode 指向默认的tmp/hadoop-${user-name} 目录。

    source .bashrc 等等!问题已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多