君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
1. hadoop启动过程中发现datanode启动不起来,查看log会发现有如下异常:
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode namespaceID = 240012870; datanode namespaceID = 1462711424 .
       问题:Namenode上namespaceID与datanode上namespaceID不一致。

  问题产生原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。

  解决办法:参考该网址 http://blog.csdn.net/wh62592855/archive/2010/07/21/5752199.aspx  给出两种解决方法,我们使用的是第一种解决方法:即:

  (1)停掉集群服务

  (2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/ (注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本).

  (3)格式化namenode.

  (4)重新启动集群。

  问题解决。

  这种方法带来的一个副作用即是,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。

2. hbase启动zookeeper时候报错:
java.io.IOException: Could not find my address: localhost in list of ZooKeeper quorum servers
        at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.writeMyID(HQuorumPeer.java:134)
        at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.main(HQuorumPeer.java:61)
这个具体原因我还不理解,我现在将所有的涉及到本机名的地方全部改成localhost就解决了,不用其他名字了。
3. 查看hdfs文件系统是报错连接异常。
[root@localhost bin]# ./hadoop fs -ls /
12/12/13 11:04:45 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 0 time(s).
12/12/13 11:04:46 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 1 time(s).
12/12/13 11:04:47 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 2 time(s).
12/12/13 11:04:48 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 3 time(s).
12/12/13 11:04:49 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 4 time(s).
12/12/13 11:04:50 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 5 time(s).
12/12/13 11:04:51 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 6 time(s).
12/12/13 11:04:52 INFO ipc.Client: Retrying connect to server: localhost/10.10.97.5:9000. Already tried 7 time(s).
       问题:客户端无法连接到服务器端。

  问题产生原因:hdfs系统没有开启。hdfs文件系统是文件操作的基础,如果该文件系统尚未打开,自然也就无法完成对该系统上文件的一系列操作。此外,查看start-all脚本(vim start-all.sh),你会发现,hadoop最先开启的是dfs,也就是说hdfs系统是其他服务的基础,需要先将这部分功能开启。

  解决办法:开启hdfs,使用./start-dfs.sh或者直接用./start-all.sh来开启hdfs文件系统。

4. 在分布式hadoop+hbase配置过程中,经常出现HRegionServer启动失败,过一会之后发现主服务器里的HMaster也随之关闭
       问题:HRegionServer启动失败,过一会主服务器里的HMaster也随之关闭,查看日志会发现如下情况:
2012-12-12 17:22:20,707 INFO org.apache.zookeeper.ZooKeeper: Initiating client connection, connectString=gb24:2181,gb23:2181 sessionTimeout=60000 watcher=regionserver:60020
2012-12-12 17:22:20,718 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server gb24/10.10.102.24:2181
2012-12-12 17:22:20,723 WARN org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1119)

  问题产生原因:日志中有一部分说每次连接尝试是有一个sessionTimeout的,为1min,但是每次都会因为超时而失败。其原因是两台服务器的时间没同步,而所有的时间戳都是根据本机时间进行打的,所以导致每次连接都会超时。而尝试多次之后,HRegionServer就会放弃启动,而主节点的HMaster等待一段时间后,也会自动关闭。

  解决办法:将各个节点的时间进行同步处理。

posted on 2013-06-17 02:28  刺猬的温驯  阅读(950)  评论(0)    收藏  举报