zoukankan      html  css  js  c++  java
  • 运行Hadoop遇到的问题

    1, 伪分布式模式不能用root??

           以root执行start-all.sh出现

           localhost: Unrecognized option: -jvm

           localhost: Could not create the Java virtual machine.

           下面是别人的解决方案:(可以修改的地方有两个)

           第一个(次要的):$HADOOP_HOME/conf/hadoop-env.sh

             修改参数: export HADOOP_HEAPSIZE=256 #默认值为1000M,为Java虚拟机占用的内存的大小

           第二个(主要的):查看$HADOOP_HOME/bin/hadoop 源码:

                  if [[ $EUID -eq 0 ]]; then

                  HADOOP_OPTS="$HADOOP_OPTS -jvm server $HADOOP_DATANODE_OPTS"

                  else

                  HADOOP_OPTS="$HADOOP_OPTS -server $HADOOP_DATANODE_OPTS"

                  fi

           如果以root身份启动,则hadoop启动java虚拟机时,会带上-jvm参数。

           不同的java版本,启动参数可能会不一致,由此导致以上问题。

    2, 当配置成伪分布式模式时为何不能用单机模式了??

           (条件:/lzh/input存在,hdfs中不存在input)

           当执行hadoop jar /usr/hadoop-1.0.1/hadoop-examples-1.0.1.jar wordcount input output 出错,

       提示为:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/user/input

           原因:当配置成伪分布式模式后,操作都是在hdfs中进行的。

    3, 启动不了namenode。查看日志中:

           ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:

                  Incompatible namespaceIDs in /home/admin/joe.wangh/hadoop/data/dfs.data.dir:

                  namenode namespaceID = 898136669; datanode namespceID = 21274440a65

           原因:多次执行hadoop namenode –format,每次namenode format会重新创建一个namenodeId,

         而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,

         但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录.

    4, 在格式化namenode时出现以下问题:

           ERROR namenode.NameNode: java.io.IOException: Cannot create directory /tmp/hadoop-lzh/dfs/current

           请注意 /home/hadoop 的权限,因为您用的是user身份,理论上无法写入/home/hadoop

           #########################

           解法一:帮 /home/hadoop 加入其他使用者也可以写入的权限

                  sudo chmod -R a+w /home/hadoop/tmp

           解法二:改用 user 身份可以写入的路径 hadoop.tmp.dir 的路径 - 修改 core-site.xml

                  <property>

                         <name>hadoop.tmp.dir</name>

                         <value>/tmp/hadoop-${user.name}</value>

                  </property>

         ######################### 

         上面是别人的做法,我的做法是用root权限:chmod  757  /tmp。问题解决。

    5, 安装hadoop-1.0.1后,执行命令出现$HADOOP_HOME is deprecated.

      这不是错误,可以修改bin/hadoop-config.sh,注释掉$HADOOP_HOME is deprecated的内容

    6, 向hdfs添加文件或删除文件时,出现Name node is in safe mode错误:

          rmr: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode

          解决的命令:

        #关闭safe mode

        bin/hadoop dfsadmin -safemode leave

      更多safemode内容参考  http://hi.baidu.com/tekkie1987/blog/item/fe5c1883cb18639ff603a612.html

    7,  [lzh@localhost ~]$ hadoop dfs -cat /user/lzh/datajoininput/Orders.txt
      12/04/19 12:25:05 INFO hdfs.DFSClient: No node available for block: blk_9063348294419704403_1006 file=/user/lzh/datajoininput/Orders.txt
      12/04/19 12:25:05 INFO hdfs.DFSClient: Could not obtain block blk_9063348294419704403_1006 from any node: java.io.IOException: No live nodes contain current                           block. Will get new block locations from namenode and retry...

      [lzh@localhost ~]$ hadoop fsck /user/lzh
      FSCK started by lzh from /127.0.0.1 for path /user/lzh at Thu Apr 19 12:31:34 CST 2012.
      /user/lzh/datajoininput/Customers.txt: CORRUPT block blk_5873732074349204741
      /user/lzh/datajoininput/Customers.txt: MISSING 1 blocks of total size 113 B..
      /user/lzh/datajoininput/Orders.txt: CORRUPT block blk_9063348294419704403
      /user/lzh/datajoininput/Orders.txt: MISSING 1 blocks of total size 88 B.....
      

      原因:hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,因为linux每次重启,文件就可能被删除。也因此导致上面的6出现

      解决办法:修改conf/core-site.xml,添加如下代码:

        <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/hadooptemp/hadoop-${user.name}</value>
            </property>

        然后再执行 hadoop namenode -format

    8,  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

      1运行前设置参数,在Argument标签页下的vm arguments框里输入-Xmx512m, 保存运行。

      2设置环境变量

      JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

      注: -Xms <size> 设置JVM初始化堆内存大小;-Xmx <size> 设置JVM最大的堆内存大小

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/liangzh/p/2434602.html
Copyright © 2011-2022 走看看