参考博客:
【问题一:主机名和域名配置文件问题及hadoop的配置文件etc/hadoop/core-site.xml导致hadoop彻底不能启动】
博客:hadoop1.2.1伪分布模式配置
http://www.cnblogs.com/yjmyzz/p/3380627.html
博客:在对HDFS格式化,执行hadoop namenode -format命令时出现未知的主机名的问题
http://lxy2330.iteye.com/blog/1112806
【问题二:datanode问题】:
博客:Hadoop 启动节点Datanode失败解决:
http://www.linuxidc.com/Linux/2014-11/108822.htm
博客:关于namenode namespaceID与datanode namespaceID 不一致导致datanode无法启动的问题:
http://f.dataguru.cn/thread-24378-1-1.html
=========================================================================================================
主机名问题:hostname;】
修改主机名位置:【共三个地方】
1、/etc/sysconfig/network中修改hostname;
2、/etc/hosts
3、还有Windows中的hosts文件:添加“ip 域名”,用于外面访问!
原理:
我们通过执行hostname命令可以看到:
[shirdrn@localhost bin]# hostname
localhost.localdomain
也就是说,Hadoop在格式化HDFS的时候,通过hostname命令获取到的主机名是localhost.localdomain,然后在/etc/hosts文件中进行映射
的时候,没有找到,看下我的/etc/hosts内容:
[root@localhost bin]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost localhost
192.168.1.103 localhost localhost
也就说,通过localhost.localdomain根本无法映射到一个IP地址,所以报错了。
此时,我们查看一下/etc/sysconfig/network文件:
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
可见,执行hostname获取到这里配置的HOSTNAME的值。
解决办法:
修改/etc/sysconfig/network中HOSTNAME的值为localhost,或者自己指定的主机名,保证localhost在/etc/hosts文件中映射为正确的IP地
址,然后重新启动网络服务:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【hadoop安装目录下的/conf/core-site.xml文件的配置问题:】
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【datanode没有启动问题:】
导致原因:namenode和datanode的namespaceID不一致
解决办法【手动修改之后无效,一气之下,把name和data目录都删除,重新格式化namenode】:
1、直接删除name文件夹和data文件夹,重新格式化namenode
./bin/hadoop namenode -format
2、./bin/hadoop-daemon.sh start datanode
3、jps查看对应节点的进程是否启动