Linux之hosts文件
一、序言:
今天同事部署环境遇到问题,
原因1:修改了主机名,在/etc/hosts文件中加了3台集群的ip和主机名,但是将默认的前两行也改了,没注意看改了哪里,
现象:
1、zookeeper单台可以启动,但是互相无法连通不能注册服务;
2、hadoop单台可以启动,但是使用hdfs dfs -report时没有3台的记录,且master上的数据占比为零:
原因2:我看了/etc/hosts后,直接将前两行删了,然后又报错:
现象:
namenode启动正常,每个从节点上nodemanager也正常启动,就是从节点上服务datanode无法全部正常启动,有时候只有一个节点上的datanode起来了,其他都没启动,或者从节点上的datanode全部无法启动,在slave节点上查看日志 vi hadoop-root-datanode-slave2.log 发现日志中报有如下错误:
java.net.BindException: Port in use: localhost:0
解决办法:
重新加入/etc/hosts中的前两行:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
题外话:
我的单机测试环境并没有加入这两行,而且装的时候还特意删掉了,当时是梦诗姐姐辅助安装的,我是不懂全部照做。hosts内容如下:
二、正文:
由于不了解这两行的意思,我去搜索了一下,解说如下,虽然现在还是不太明白,先放在这里吧,等我彻底明白的时候再来添笔记。
(转发http://www.cnblogs.com/xiaoit/p/3989026.html)
1、主机名:
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。
公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。
局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问。比如我们在局域网中可以为根据每台机器的功用来为其命名。
主机名相关的配置文件:/etc/hosts
2、主机名配置文件:
主机名的配置文件大多是/etc/hosts
hosts 配置文件是用来把主机名字映射到IP地址的方法,这种方法比较简单。但这种映射只是本地机的映射,也就是说每台机器都是独立的,所有的计算机都不能相互通过Hostname来访问。
例如:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost.localdomain localhost
192.168.1.195 debian.localdomain debian
一般情况下hosts的内容关于主机名(Hostname)的定义,每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址。
第二部份:主机名.域名,注意主机名和域名之间有个半角的点。
第二部份:主机名(主机名别名) ,其实就是主机名。
当然每行也可以是两部份,就是主机IP地址和主机名;比如 192.168.1.195 debian
再我们有三台主机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器,一台做SMB服务器,所以我们就可以这样来设计Hostname;
127.0.0.1 localhost.localdomain localhost
192.168.1.2 ftp.localdomain ftp
192.168.1.3 mail.localdomain mail
192.168.1.4 smb.localdomin smb
把这上面这个配置文件的内容分别写入每台机器的/etc/hosts内容中,这样这三台局域网的机器就可以通过Hostname来访问了。
3、主机名(Hostname)和域名(Domain)的区别
主机名就机器本身的名字,域名是用来解析到IP的。但值得一说的是在局域网中,主机名也是可以解析到IP上的;比如我们前面所说举的例子;
显示主机名:
# Hostname
root1
此主机的主机名是root1,不加参数是用来显示当前操作的主机的主机名。
临时设置主机名:
我们可以用 Hostname 后接主机名,这样就可以设置当前操作的主机的主机名,比如我们想把主机名设置为root2;
# Hostname root2
root2
通过Hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在;所以您想修改主机名,想一直有效的,还是用前面所说修改主机名配置文件 /etc/hosts;
显示主机IP:
[root@Linuxsir01 ~]# Hostname -i
192.168.10.3
2018年10月31日记
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------