我是靠谱客的博主 清新店员,最近开发中收集的这篇文章主要介绍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 - 等待,一直到安全模式结束。

最后

以上就是清新店员为你收集整理的20131010配置hadoop集群遇到namespaceID、storage ID、防火墙的问题的全部内容,希望文章能够帮你解决20131010配置hadoop集群遇到namespaceID、storage ID、防火墙的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部