有hadoop的Live Nodes为1引起的思考

来源:互联网 发布:仿三菱plc源码书籍 编辑:程序博客网 时间:2024/05/20 09:07

2013年5月13日,星期一

之前配置了Hadoop集群,有5个节点,一个master和四个slave,然后使用命令bin/start-all.sh开启集群,然后用命令jps查看开启了哪些些服务,看到JobTracker、NameNode、SecondaryNameNode、TaskTracker、DataNode以及Jps,这时以为一切都是顺利的,开始运行MapReduce应用程序。

刚开始开启master和slave1、slave2,在这之间应用程序运行的还不错,没有问题,然后结果也是正确的,就是当增加slave3或者slave3、slave4时,运行的效率不是很高,似乎Hadoop的优势没有体现出来。

后来,查看http://localhost:50070时,发现Cluster Summary下的Live Nodes为1,弄了好半天还是1,就想当时增加节点数后应用程序运行效率没有提高是不是与此有关!然后上网查了一通,下面这个网址http://www.codesky.net/article/201203/172487.html 里有一种解决方法,但是我试过之后还是不行。

后来我查看Live Nodes,发现开启的那个只有master节点,然后我将集群中每个节点的hadoop文件下的conf配置文件夹中的slaves文件中有关master那项注释掉,然后重启集群,这时发现Live Nodes为0,一直都是0。那么我就猜想是不是集群中DataNode根本就没启动

上网查资料,说是多次格式化HDFS造成的,一般的做法是:1.删除hadoop.tmp.dir中有关hadoop的所有文件 2. 第二种方法是修改每个DataNode的namespaceID(位于/hdfs/data/current/VERSION文件中)<优先>或修改NameNode的namespaceID(位于/hdfs/name/current/VERSION文件中),使其一致。但是还是不行。郁闷……

这时我看了网上说如何在集群中添加一个节点而且不用关闭集群的方法,具体是方法可以参考http://blog.csdn.net/kongxx/article/details/6896230。做法的思想就是在master节点的hadoop文件的conf目录中的slaves里添加要加入节点的IP,然后打开新增节点的DataNodeTaskTracker,这里我遇到了个问题。当我使用jps命令查看打开的任务时,显示如下:

TaskTracker

Jps

Could not synchronized with target

(不知道为什么图片没有上传上去,唉)

然后上网搜索”Could not synchronize with target”,有人说查看一下日志可以发现问题,然后我到logs中查看日志,

说的是找不到用户名acmer-OptiPlex-380,再上网查资料。下面两个网址都是解决此问题的方法:http://blog.csdn.net/chjjunking/article/details/6894097(hadoop中配置的问题namenode无法启动),http://blog.csdn.net/shirdrn/article/details/6562292(Hadoop格式化HDFS报错java.net.UnknownHostException: localhost.localdomain:localhost.localdomain)。两个方法都是说问题在与于/etc/sysconfig/network中HOSTNAMEhosts中没有对应的ip所以解析不了,然后做法基本一致。然后我用了另外一种方法,即在/etc/hosts中添加一行:

127.0.0.1localhost localhost(这里具体看你的主机名叫什么),然后在从节点上再次开启DataNodeTaskTrackerjps一下,发现这次DataNodeTaskTracker都启动了,并且没有再出现等一下jpsDataNode不见或者”Could not synchronize with target”的问题。

回到master节点,然后就可以在namenode机器上运行balancer,执行负载均衡 

bin/hadoop  balancer

(或者:bin/start-balancer.sh)

由于我之前已经将各个slave节点的DataNode和NameNode的namespaceID改来和master节点一样了,这里就不用再做此操作了,记着这部是要做的哦!

使用命令hadoop dfsadmin –report一下,或者在http://localhost:50070中,查看Live Nodes的数目,发现不再是1了,说明成功了。

最后看一下50070的Live Nodes的具体情况,可以查看节点的Used情况和Remaining情况(这里写的仓促,没有把图片贴上去,有时间换一下)。

 

 

原创粉丝点击