本文用到的实验环境为ubuntu12.04、hadoop-1.2.1,其他的环境可以作为参考:
问题一:启动Hadoop,出现没有JobTracker和TaskTracker?
问题详细描述:我hadoop所有相关的操作多安装好了,例如:JDK、免密码ssh登录、hadoop相关的配置信息(core-site.xml、mapred-site.xml、hdfs-site.xml、masters、slvases、hadoop-env.sh),全部部署好后,登录名字节点,进行格式化集群,之后开启hadoop,
格式化集群命令:
hadoop namenode -format
开启hadoop命令:(如果配置了hadoop环境变量,就可以直接用如下命令,如果没有要进入到hadoop的安装目录下的bin路径中,用如下命令)
start-all.sh
之后用jps在各个节点进行检测,发现在名字节点没有JobTracker进程,在数据节点没有TaskTracker进程。
解决方案:JobTracker进程和TaskTracker进程是任务监控进程,开启hadoop看不到的话,只能是配置文件的问题,打开相应的文件路径
(/home/hadoop/hadoop-1.2.1/conf/mapred-site.xml),文件内容如下所示:
<configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration> |
其中的master前面多了一个空格,出掉前面的空格,在从新启动hadoop,就把这个问题解决了。
参考文献:
http://blog.csdn.net/mydreamongo/article/details/8146036
http://blog.csdn.net/lawrencesgj/article/details/8292780
http://www.rigongyizu.com/hadoop-start-50030-50070-cannot-listen/
http://blog.itpub.net/354732/viewspace-721504/
问题二:启动Hadoop,出现没有DataNode?
问题详细描述:我hadoop所有相关的操作多安装好了,例如:JDK、免密码ssh登录、hadoop相关的配置信息(core-site.xml、mapred-site.xml、hdfs-site.xml、masters、slvases、hadoop-env.sh),全部部署好后,登录名字节点,进行格式化集群,之后开启hadoop,
格式化集群命令:
hadoop namenode -format
开启hadoop命令:(如果配置了hadoop环境变量,就可以直接用如下命令,如果没有要进入到hadoop的安装目录下的bin路径中,用如下命令)
start-all.sh
之后用jps在各个节点进行检测,发现在名字节点有JobTracker进程、Jps进程、SecondaryNameNode进程、NameNode进程四个进程,在数据节点有TaskTracker进程和Jps进程,但是没有DataNode进程。
问题分析:这个问题,主要是在多次重复进行hadoop格式化操作引起的,在重复进行hadoop格式化后,namespaceID号变了,但是在数据节点相应的节点号没有改变,从而在启动hadoop集群的时候,就早不到数据节点的数据块,因此就不会再数据节点上出现DataNode进程。
解决方案:打开安装hadoop的安装路径,记得你在进行hadoop环境配置的时候,你创建了一个data文件,其中有如下文件信息(/home/hadoop/hadoop-1.2.1/data/hdfs/tmp、/home/hadoop/hadoop-1.2.1/data/hdfs/name、/home/hadoop/hadoop-1.2.1/data/hdfs/data)
第一步:在名字节点(主节点),找到namespaceID号,文件路径为:
/home/hadoop/hadoop-1.2.1/data/hdfs/name/current/VERSION
查看命令:
cat VERSION
找到namespaceID=1741324013
修改命令:
sudo gedit VERSION
同理打开相应的数据节点,修改相应的文件,文件路径为:
/home/hadoop/hadoop-1.2.1/data/hdfs/data/current/VERSION
查看命令:
cat VERSION
找到namespaceID=1983255719
修改命令:(修改这个数字与名字节点的查找的namespaceID数字一样的ID号)
sudo gedit VERSION
进行上面操作之后,在从新开启Hadoop集群,请不要在格式化了,不然又得这样重复操作。
问题三:hadoop常见的端口号,及对应的解释?
默认端口 | 设置位置 | 描述信息 |
9000 | namenode | 交互端口 |
8020 | namenode | RPC交互端口 |
8021 | JT RPC | 交互端口 |
50030 | mapred.job.tracker.http.address JobTracker administrative web GUI | JOBTRACKER的HTTP服务器和端口 |
50070 | dfs.http.address NameNode administrative web GUI | NAMENODE的HTTP服务器和端口 |
50010 | dfs.datanode.address DataNode control port | DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求 |
50020 | dfs.datanode.ipc.address DataNode IPC port, used for block transfer | DATANODE的RPC服务器地址和端口 |
50060 | mapred.task.tracker.http.address Per TaskTracker web interface | TASKTRACKER的HTTP服务器和端口 |
50075 | dfs.datanode.http.address Per DataNode web interface | DATANODE的HTTP服务器和端口 |
50090 | dfs.secondary.http.address Per secondary NameNode web interface | 辅助DATANODE的HTTP服务器和端
|
参考文献:
http://hi.baidu.com/chemical_liang/item/64e1b7eb3045143986d9deeb
问题四:网上blog友总结的hadoop常见问题汇总(网友原创,可行度还是蛮高)
1.datanode节点TaskTracker任务启动,但是DataNode任务未启动
这一般是由于对hadoop进行升级后导致的,需要删除hadoop.tmp.dir所对应的文件夹,然后再对namenode进行重新格式化,删除之前先将数据导出,要不然数据就没了
2./lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
缺少 glibc.i686组件
命令:yum installglibc.i686
3. hadoop-site.xml:1:1: 文件提前结束
hadoop目录下面conf文件夹中多了一个hadoop-site配置文件,在0.20.2版本之前,conf里面有一个 hadoop-site.xml文件,在0.20.0之后的版本 conf下没有这个hadoop-site.xml文件,取而代之的是三个文件,core-site.xml,hdfs-site.xml,mapred.xml
解决方法:删除conf文件夹下面的hadoop-site.xml就行
4.用eclipse连接集群查看文件信息提示9001端口拒绝连接的错误
Cannot connectto the Map/Reduce location: hadoop1.0.3
Call tolocalhost/127.0.0.1:9001 failed on connection exception:java.net.ConnectException: 拒绝连接
解决办法:配置都很正常,就是连接不了。后来重新配置hadoop location,把Map/Reduce Master 和 DFS Master中的Host由localhost改成了ip地址(192.168.33.164),然后问题就解决了。奇怪,localhost不就是本机嘛,而namenode主机(192.168.33.164)也是本机。
参考网址:
http://www.cnblogs.com/siwei1988/archive/2012/07/10/2585002.html
问题五:hadoop节点重启步骤
对于datanode可以在master中配置,然后在maste启动的时候,一并去启动这些节点 。
对于死掉的节点,也可以通过以下命令启动 。
重启挂掉的节点进入到 挂掉的机器
重启命令:
bin/hadoop-daemon.shstart datanode //启动数据节点
bin/hadoop-daemon.shstart tasktracker //启动任务管理器
此时再在master上使用 ./hadoop dfsadmin -report 是就会发现这些节点已经启动起来 。
参考文章:
http://blog.csdn.net/chenyi8888/article/details/7564943