20131010配置hadoop集群遇到namespaceID、storage ID、防火墙的问题

1.  namenode和datanode的namespaceID不一致

java.io.IOException:Incompatible namespaceIDs in /root/tmp/dfs/data:namenode namespacesID=335454;datanode namespaceID=131321....

这个问题是多次格式化namenode造成的,有两种方法可以解决;第一删除datanode的所有资料(。。。。dfs/data下),第二种是修改datanode的namespaceID(位于${/hadoop/tmp/dir}/dfs/data/current/VERSION)或者修改namenode的namespaceID(位于${/hadoop/tmp/dir}/dfs/name/current/VERSION)。使其一致。

2. datanode间storageID相同

问题:2012-09-07 23:58:51,240 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: DataNode is shutting down: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.protocol.UnregisteredDatanodeException: Data node 192.168.100.11:50010 is attempting to report storage ID DS-1282452139-218.196.207.181-50010-1344220553439. Node 192.168.100.12:50010 is expected to serve this storage.

搭建集群时,直接克隆会出现这个问题。解决方法同上两种,最好修改${/hadoop/tmp/dir}/dfs/data/current/VERSION中的storageID,使其不同。第一种会导致hdfs数据丢失。

DataNode节点向NameNode节点注册,一是告诉NameNode节点自己提 供服务的网络地址端口,二是获取NameNode节点对自己的管理与控制。Datanode 注册只会被两个地方调用, Datanode启动和心跳收到注册命令。DatanodeRegistration这个类主要用于,当Datanode向Namenode发送注册信息 时,它要向Namenode提供一些自己的注册信息。同时这个类中还可以设置它的父类就是DatanodeID的Name、infoPort、 storageInfo这些内容。name 表示DataNode节点提供数据传输/交换的服务地址端口,storageID表示DataNode节点的存储器在整个HDFS集群中的全局编 号,infoPort表示查询DataNode节点当前状态信息的端口号,ipcPort表示DataNode节点提供 ClientDatanodeProtocol服务端口号。

(1) datanode启动是会加载DataStorage,如果不存在则会format

(2)初次启动DataStorage的storageID是空的,所以会生成一个storageID

         dnReg.storageID = "DS-" + rand + "-"+ ip + "-" + dnReg.getPort() + "-" +  System.currentTimeMillis();

(3)注册成功后该storageID会写入磁盘,永久使用。

所以修改rand部分就可以。

3. 集群重启时防火墙自动开启导致:

问题:

2012-07-04 18:43:30,475 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 8 time(s).
2012-07-04 18:43:31,475 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 9 time(s).
2012-07-04 18:43:31,479 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to /192.168.18.218:9000 failed on local exception: java.net.NoRouteToHostException: 没有到主机的路由
        at org.apache.hadoop.ipc.Client.wrapException(Client.java:775)
        at org.apache.hadoop.ipc.Client.call(Client.java:743)
解决方法:在root权限下关闭防火墙:service iptables stop

最好配置成机器重启默认防火墙关闭:
[root@junlings ~]# chkconfig iptables off   #开机不启动防火墙服务
[root@junlings ~]# chkconfig iptables on   #开机启动防火墙服务

4. name node  in safe mode即安全模式
问题:org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode 
解决:bin/hadoop dfsadmin -safemode leave 
用户可以通过dfsadmin -safemode value   来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get -   返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值