手机版
你好,游客 登录 注册
背景:
阅读新闻

Hadoop的host配置

[日期:2014-04-09] 来源:Linux社区  作者:Linux [字体: ]

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

ip hostname
172.31.1.1 Hadoop1
172.31.1.2 hadoop2
172.31.1.3 hadoop3

其中,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

linux
相关资讯       Hadoop配置 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款