H02-启动hdfs时可能遇到的几个问题
启动hdfs时,有时候可能会遇到这样几种情况:
1)在主节点上执行start-dfs.sh命令启动hdfs,无法启动datanode。
2)在主节点上行启动hdfs,启动成功了,在各个节点上使用jps命令也能查询到相应的SecondaryNameNode、NameNode和DataNode进程,但是通过5007页面上却查询不到datanode,或者执行hdfs dfsadmin -report(hadoop dfsadmin -report)命令是显示available datanode个数为0;
一、第一种情况
我没遇到过这种情况,不过我感觉第一步应该是先去看namenode的日志(日志在namenode节点的$HADOOP_HOME/logs目录下),另外也可以从以下几个方面排查问题:
1)看一下slaves文件有没有配置正确
2)检查从namenode节点到datanode节点的免密登录是否配置正确;
3)测试一下从namenode上能否ping通datanode,datanode节点的防火墙有没有关(或者如果你的本意就是不关闭防火墙,而是只给hadoop开启特定的端口的话,那就使用telnet命令检查一下从namenode节点到datanode节点的特定端口能不能连接上)
4)还有一种比较特殊的情况,就是你的namenode和datanode节点上,用于安装hadoop环境的用户不一样,比如在namenode节点上用u1用户安装hadoop环境,而在datanode节点上则是用u2用户安装的hadoop环境。这种时候就会有问题,因为当你在namenode上启动hdfs时,肯定是用u1用户执行的命令(因为你是用u1用户安装的hadoop嘛,环境变量是配在这个用户下的),那么当namenode节点要远程登录到datanode节点上去启动datanode时,namenode默认是会使用当前用户也就是u1用户去登录datanode节点的,这个时候就会出错,因为datanode节点上没有u1用户,根本无法登录上datanode,更别说去启动datanode了。对于这个问题,我在网上偶然看到有人的解决方法是在配置masters和slaves时,不单单是写IP(比如192.168.137.22),而是要写上用户名,比如“u2@192.168.137.22”。正如我所说的,这是个比较特殊的问题,最好还是将hadoop集群的所有节点的安装用户保持一致。另外我感觉如果集群中的不同节点是用不同用户来安装hadoop环境的话,根本无法安装成功,虽然我在网上看到有朋友说他这么安装也成功了……我觉得无法安装成功是因为,这么来安装hadoop集群环境的话,首先namenode节点到datanode节点的免密登录就没法配置,因为在namenode节点上是以u1用户生成的公钥,因此在namenode节点上无法以u2用户的身份免密登录datanode节点——额…至少以我目前了解的ssh免密登录设置的知识来说是不行的…………
二、第二种情况
就我遇到错误,下面记录一下,错误从datanode的日志中可以查看到(日志在datanode节点的$HADOOP_HOME/logs目录下)
1)INFO org.apache.hadoop.ipc.RPC: Server at node1/192.168.137.21:9000 not available yet, Zzzzz...

目前我在hadoop1.2.1版本中遇到过这个问题,在hadoop二点几版本中暂时没遇到过。该问题的解决可参考《org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决》,不过我的解决方法跟这篇博文有些许不一样,我只将hdfs主节点的/etc/hosts文件中的“127.0.0.1 主节点主机名”这一行给注释掉(如下图),然后重启hdfs集群就可以了,不需要每个节点都做修改,并且我也没有重新格式化hdfs。因为我感觉从datanode日志上可以看出,是datanode去连接namenode节点时出现了问题,datanode节点去解析namenode的hosts文件时解析不正确了,所以才导致问题的发生,跟datanode节点的hosts文件应该是没有关系的。并且不用重新格式化是因为我感觉……不知道怎么说,总之感觉还是……没关系…………

2)java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/tmp/dfs/data: namenode clusterID = CID-8e201022-6faa-440a-b61c-290e4ccfb006; datanode clusterID = clustername
这个问题我遇到的时候没有留下截图,后面由于其他原因导致集群启动不成功之后上网找解决方法时恰好看到有人贴出来了,所以也记录一下。
出现该问题是因为hdfs格式化次数太多了出了问题,导致子节点的cluster_id跟主节点的cluster_id不一致,所以导致子节点无法向主节点发送心跳信息,那么对主节点来说,该子节点就是dead的了。
这个问题的解决方法参考《Hadoop安装遇到的各种异常及解决办法》中的第二点异常。
3)这也是个没有保留出错日志信息的问题。出错是因为我的子节点的core-site.xml文件中fs.defaultFS项配置错了。
所以如果遇到了“datanode节点启动成功,但是namenode节点却检测不到该datanode”的情况时,可以检查一下此项配置,因为core-site.xml文件中的fs.defaultFS项配置就是记录集群中namenode节点的位置,如果配置错了,datanode就无法向正确的namenode节点发送心跳信息,namenode自然感知不到该datanode的存在了。
暂时记录这么多了……
H02-启动hdfs时可能遇到的几个问题的更多相关文章
- 错误解决记录-------------验证启动HDFS时遇到的错误
主要解决验证启动HDFS时: 1) jps:bash: jps: command not found... 原因:主要是java/bin 环境变量没配置好. 解决办法: 在 ~/.bash_prof ...
- Hadoop启动HDFS时DataNode未启动
在用$HADOOP_HOME/sbin/start-dfs.sh启动HDFS时发现只有NameNode和SecondaryNameNode启动,没有DataNode. 查看logs下的DataNode ...
- 启动HDFS时datanode无法启动的坑
启动HDFS 启动hdfs,进入sbin目录,也可以执行./start-all.sh - $cd /app/hadoop/hadoop-2.2.0/sbin - $./start-dfs.sh 在此之 ...
- 格式化hdfs后,hadoop集群启动hdfs,namenode启动成功,datanode未启动
集群格式化hdfs后,在主节点运行启动hdfs后,发现namenode启动了,而datanode没有启动,在其他节点上jps后没有datanode进程!原因: 当我们使用hdfs namenode - ...
- 启动HDFS之后一直处于安全模式org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.
一.现象 三台机器 crxy99,crxy98,crxy97(crxy99是NameNode+DataNode,crxy98和crxy97是DataNode) 按正常命令启动HDFS之后,HDFS一直 ...
- VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号
VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号,下载一些.dll文件,点取消后也能继续调试,但特别慢.解决方法:工具-选项,或者调试-选项和设置,将调试下的& ...
- Eclipse启动Tomcat时发生java.lang.IllegalArgumentException: <session-config> element is limited to 1 occurrence
在学习struts 2时,为了方便,直接从下载的struts的apps目录下的struts2-blank.war压缩包下的WEB-INF\复制的web.xml,当我启动Tomcat时,发生 java. ...
- 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法
启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时报错的解决(mysql 5.0.45 redhat as 43) ====================== ...
- [转]Eclipse启动Tomcat时45秒超时解决方法
原文地址:http://it.oyksoft.com/post/6577/ Eclipse启动Tomcat时,默认配置的启动超时时长为45秒.假若项目启动超过45秒将会报错.两种解决方法:1.改XML ...
随机推荐
- 2018.09.12 earthquake(最优比率生成树)
描述 地震已经破坏了农夫约翰所有的农场以及所有连接农场的道路.作为一个意志坚强的人,他决定重建所有的农场.在重建全部N(1 <= N <= 400)个农场之前,首先必须把所有农场用道路连接 ...
- Linux IPC 之信号量
信号量(也叫信号灯)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语. 信号量是进程/线程同步的一种方式,有时候我们需要保护一段代码,使它每次只能被一个执行进程/线程运行,这种工作就需 ...
- 解决yum安装时 Cannot retrieve repository metadata (repomd.xml) for repository
打开/etc/yum.repos.d/CentOS6-Base-163.repo 将下面的baseUrl的地址换成网上最新 # CentOS-Base.repo## The mirror system ...
- deploy myeclipse j2ee project to server 按了没反应 怎么办
解决办法: 1.如果工作空间的问题,那么需要删除你工作空间的一个文件就可以解决了. 这个文件在Myeclipse工作区(workspace) .metadata\.plugins\org.eclips ...
- Creating a Simple Web Service and Client with JAX-WS
Creating a Simple Web Service and Client with JAX-WS 发布服务 package cn.zno.service.impl; import javax. ...
- (KMP 求循环节)The Minimum Length
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70325#problem/F The Minimum Length Time Limit: ...
- HDU4081 Qin Shi Huang's National Road System 2017-05-10 23:16 41人阅读 评论(0) 收藏
Qin Shi Huang's National Road System ...
- Codeforces777E. Hanoi Factory 2017-05-04 18:10 42人阅读 评论(0) 收藏
E. Hanoi Factory time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 昨晚上熬夜写了[Openwrt项目开发笔记]:O ...
- dorado-menu
1.menu控件是一个下拉菜单控件,可以设置数icon(图标),click事件,Dorado事件中都有self和arg两个参数,其中self是当前控件本身 2.menu控件可以和toolBar结合使用 ...