前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop的host配置

Hadoop的host配置

作者头像
星哥玩云
发布2022-06-30 21:06:08
1.5K0
发布2022-06-30 21:06:08
举报
文章被收录于专栏:开源部署开源部署

首先,你要先给你的所有机器分配好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 中使用的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档