• hadoop 运行 datanode , mac 系统


    问题描述

    今天使用 hadoop 时,发现无法通过下面命令上传文件到 hadoop 文件系统,会报错。

    bin/hadoop fs -put input . 

    运行 jps 后,输出如下:

    2979 ResourceManager
    2644 NameNode
    3078 NodeManager
    3113 Jps
    2858 SecondaryNameNode

    可见 datanode 挂掉了。

    用下面的命令重启 hadoop ,重启后仍然没有 datanode 的进程。

    sbin/stop-all.sh
    sbin/start-all.sh

    原因思考

    近期同时安装了多个版本的 hadoop ,并且安装后重新格式化过 hdfs ,这个可能是引起问题的原因。

    解决方法

    本人使用的是 hadoop 2.7.2 版本。

    1. 关闭集群

    sbin/stop-all.sh

    2. 在配置文件 etc/hadoop/hdfs-site.xml 中找到 dfs.name.dir / dfs.data.dir 的路径。我的配置如下

    <configuration>
       <property>
          <name>dfs.name.dir</name>
          <value>file:///Users/grs/hadoopinfra/hdfs/namenode </value>
       </property>
       
       <property>
          <name>dfs.data.dir</name> 
          <value>file:///Users/grs/hadoopinfra/hdfs/datanode </value> 
       </property>
    </configuration>

    3. 将上述路径的的目录重命名,如将 Users/grs/hadoopinfra 重命名为 Users/grs/hadoopinfra.bak_20160410 ,或者全部删掉(rm -R)

    4. 格式化 namenode 

    bin/hadoop namenode -format

    5. 最后,重启

    sbin/start-all.sh

    运行效果

    运行 jps 能看到 datanode 的进程。

    2738 DataNode
    2979 ResourceManager
    3203 Jps
    2644 NameNode
    3078 NodeManager
    2858 SecondaryNameNode

    也能成功上传文件

    grs:hadoop grs$ hadoop dfs -put input ./
    DEPRECATED: Use of this script to execute hdfs command is deprecated.
    Instead use the hdfs command for it.
    
    16/04/10 15:17:07 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    grs:hadoop grs$ 

    参考资料 : 

    No data nodes are started, stackoverflow 

  • 相关阅读:
    关于PHPExcel直接读取Excel文件两种方法
    关于CSS
    PHP数组——自定义排序
    MYSQL常用函数
    uniapp 子组件给子组件传值
    uniapp 子组件给父组件传值
    uniapp 父亲给子组件传值
    uniapp 百度小程序 navigator跳转页面&传参
    uniapp 百度小程序预览图片
    js filter过滤,map映射 filter和map的用法
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5374234.html
Copyright © 2020-2023  润新知