浏览器访问 hdfs 页面时,出现以下问题
http error 500
problem accessing /nn_browsedfscontent.jsp. reason:
can't browse the dfs since there are no live nodes available to redirect to.
caused by:
java.io.ioexception: can't browse the dfs since there are no live nodes available to redirect to.
at org.apache.hadoop.hdfs.server.namenode.namenodejsphelper.redirecttorandomdatanode(namenodejsphelper.java:646)
at org.apache.hadoop.hdfs.server.namenode.nn_005fbrowsedfscontent_jsp._jspservice(nn_005fbrowsedfscontent_jsp.java:70)
at org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:98)
at javax.servlet.http.httpservlet.service(httpservlet.java:820)
at org.mortbay.jetty.servlet.servletholder.handle(servletholder.java:511)
at org.mortbay.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1221)
at org.apache.hadoop.http.lib.staticuserwebfilter$staticuserfilter.dofilter(staticuserwebfilter.java:109)
at org.mortbay.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1212)
at org.apache.hadoop.http.httpserver$quotinginputfilter.dofilter(httpserver.java:1081)
at org.apache.hadoop.http.nocachefilter.dofilter(nocachefilter.java:45)
at org.mortbay.jetty.servlet.servlethandler.handle(servlethandler.java:399)
at org.mortbay.jetty.security.securityhandler.handle(securityhandler.java:216)
at org.mortbay.jetty.servlet.sessionhandler.handle(sessionhandler.java:182)
at org.mortbay.jetty.handler.contexthandler.handle(contexthandler.java:766)
at org.mortbay.jetty.webapp.webappcontext.handle(webappcontext.java:450)
at org.mortbay.jetty.handler.contexthandlercollection.handle(contexthandlercollection.java:230)
at org.mortbay.jetty.handler.handlerwrapper.handle(handlerwrapper.java:152)
at org.mortbay.jetty.server.handle(server.java:326)
at org.mortbay.jetty.httpconnection.handlerequest(httpconnection.java:542)
at org.mortbay.jetty.httpconnection$requesthandler.headercomplete(httpconnection.java:928)
at org.mortbay.jetty.httpparser.parsenext(httpparser.java:549)
at org.mortbay.jetty.httpparser.parseavailable(httpparser.java:212)
at org.mortbay.jetty.httpconnection.handle(httpconnection.java:404)
at org.mortbay.io.nio.selectchannelendpoint.run(selectchannelendpoint.java:410)
at org.mortbay.thread.queuedthreadpool$poolthread.run(queuedthreadpool.java:582)
问题可能出现原因:
datanode 服务未启动成功
问题排查方案:
使用 jps 查看发现没有 datanode 进程
问题datanode 日志:
java.io.ioexception: incompatible clusterids in /home/hdfs/data: namenode clusterid = cid-4923bb76-3ceb-424d-a794-85e608f18307; datanode clusterid = cid-9487a0bb-c768-4673-a654-73dee9e1028e
at org.apache.hadoop.hdfs.server.datanode.datastorage.dotransition(datastorage.java:391)
at org.apache.hadoop.hdfs.server.datanode.datastorage.recovertransitionread(datastorage.java:191)
at org.apache.hadoop.hdfs.server.datanode.datastorage.recovertransitionread(datastorage.java:219)
at org.apache.hadoop.hdfs.server.datanode.datanode.initstorage(datanode.java:837)
at org.apache.hadoop.hdfs.server.datanode.datanode.initblockpool(datanode.java:808)
at org.apache.hadoop.hdfs.server.datanode.bpofferservice.verifyandsetnamespaceinfo(bpofferservice.java:280)
at org.apache.hadoop.hdfs.server.datanode.bpserviceactor.connecttonnandhandshake(bpserviceactor.java:222)
at org.apache.hadoop.hdfs.server.datanode.bpserviceactor.run(bpserviceactor.java:664)
at java.lang.thread.run(thread.java:745)
问题解决思路:
出现以上 error表示在 hdfs/data 目录下得 namenode 得 clusterid 和 datanode 下的 id 不一致造成的
问题解决方案:
1.删除 hadoop 临时目录下的所有文件重新格式化 namenode (不推荐此操作,由于 hdfs 中可能存在有原来的数据,如果执行此操作,会删除所有数据)
2.将 hadoop 临时目录下的 data 和 name 目录下的 current 文件夹下的 version 中得 clusterid 修改为一致即可