阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop的host配置

237次阅读
没有评论

共计 1517 个字符,预计需要花费 4 分钟才能阅读完成。

首先,你要先给你的所有机器分配好 IP 和 hostname。例如

iphostname
172.31.1.1Hadoop1
172.31.1.2hadoop2
172.31.1.3hadoop3

其中,hadoop1 是 master 机器,hadoop2 和 hadoop3 是两台 slave 机器。

你需要在每台机器的 /etc/hosts 中配置好这些内容,在文件末加上下面的三行

172.31.1.1hadoop1

172.31.1.2hadoop2

172.31.1.3hadoop3

同时,还需要将每台机器的 hostname 也改成一致的。请修改 /etc/sysconfig/network 文件的 HOSTNAME=*** 这一行,然后重启机器。

这里分享一个血的教训,在给 hostname 起名字的时候一定要注意,虽然 linux 支持一些特殊字符,但 Java 里面并不支持,所以 hostname 的命名一定要使用数字和字母(以点号分隔)。一开始我起的 hostname 包含了特殊字符下划线,导致 hadoop 运行时候的 reduce 阶段出错,折腾了一天。

原因:ReduceTask.java 中使用了 URI.getHost()函数,得到 host 这个字符串,但是getHost 函数在解析 host 出错时会返回 null,这就导致后面使用 host 字符串的时候会抛出 NullPointerException。给 host 赋值的代码是 java.net.URI.Parser.parseHostname(int, int)。各位有兴趣可以自己看看。

这里截取了注释给大家看一下

// hostname = domainlabel [“.”] | 1*(domainlabel “.”) toplabel [“.”]
// domainlabel = alphanum | alphanum *(alphanum | “-”) alphanum
// toplabel = alpha | alpha *(alphanum | “-”) alphanu
// hostname = domainlabel [“.”] | 1*(domainlabel “.”) toplabel [“.”]
// domainlabel = alphanum | alphanum *(alphanum | “-”) alphanum
// toplabel = alpha | alpha *(alphanum | “-”) alphanum
 
从这里可以看到,其实还有一个 ”-“ 允许在 toplabel 中使用的。
 

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1517字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中