关于IP地址与主机名映射的/etc/hosts文件配置

为什么要这样做?

首先,在hadoop工作就像是一个社团帮派,master是老大,而slave1、slave2等就是master的小弟。但是,slave并没有像我们那么聪明一眼就能分辨出自己的老大,它们是以ip地址作为辨别的。那么,它们是一个社团就需要把它们集合到一起,这时就需要把它们的ip地址写到一个叫/etc/hosts的文件里,然后还要把主机名也写上进行映射,这样就可以用主机名进行任务分发或文件传输以及其他工作了。

查看主机名

输入“hostname”命令,即可查看主机名,不过以下是默认的主机名,如果在集群里使用这个默认名字会不方便管理,所以我们要修改名字。
在这里插入图片描述

配置/etc/hosts文件进行修改主机名以及IP和主机名的映射

执行以下命令进入配置文件,在末尾添加如下图IP地址+需要修改的主机名+别名(别名可以选填),其中用空格把这三部分连接。

vi /etc/hosts

关于IP地址与主机名映射的/etc/hosts文件配置_第1张图片
这是hadoop集群的ip与主机名映射,则集群的每个slave都必须拥有这份映射“社团成员目录”方可识别社团的所有社团成员。还有就是,只是单纯改各主机名的话,就只写我们那台的IP和需要改的主机名即可了。

验证

保存重启机器使配置文件生效后,执行以下命令进行将master上的/home/test文件拷贝到slave1上的/root目录:

scp /home/test root@slave1:/root

格式:scp 本地文件 目标虚拟机用户名@目标虚拟机主机名:目标路径
如果是拷贝的目录:scp -r 本地目录 目标虚拟机用户名@目标虚拟机主机名:目标路径
在这里传输文件时需要填写密码,往后可以实现免密登录等操作。

缺点

这样做的原因可能是LAN不像WAN那样有专门的DNS,需要通过先查找本地hosts文件,然后再确定目标主机IP。但这样做对后续是否产生不利但影响呢?如果集群中增加一台Slave,是不是要在集群中其他机器里添加这条记录?答案是肯定的,集群中增加一台Slave就要在每个节点机器上添加记录,假如是一个“大社团”就很不方便管理了。解决办法还是有的,就是通过bind9配置DNS服务器替代hosts的IP映射,需要的伙伴可以查找相关文献资料。

普及相关知识

  • /etc/sysconfig/network的作用是设定机器的主机名:hostname
  • /etc/hosts的作用是主机名与ip地址的匹配;
  • 当用户在进行网络连接时,首先查找/etc/hosts文件,寻找对应主机名(或域名)对应的IP地址。
  • 要测试两台机器之间知否连通,一般用"ping 机器的IP";
  • 以上说的IP地址实质就是LAN内的各主机的IP地址;
  • 主机名(hostname)和域名(Domain)的区别:主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应ip;域名通常在internet上使用,但如果本机不想使用internet上的域名解析,这时就可以更改hosts文件,加入自己的域名解析。
  • 如果没有DNS服务器的话,系统上的所有网络程序都通过查询该文件解析主机名对应的ip地址。

若有不足之处望留言!

——————END———————
Programmer:柘月十七

你可能感兴趣的:(hadoop,Linux)