關於IP地址與主機名映射的/etc/hosts文件配置

爲什麼要這樣做?

首先,在hadoop工作就像是一個社團幫派,master是老大,而slave1、slave2等就是master的小弟。但是,slave並沒有像我們那麼聰明一眼就能分辨出自己的老大,它們是以ip地址作爲辨別的。那麼,它們是一個社團就需要把它們集合到一起,這時就需要把它們的ip地址寫到一個叫/etc/hosts的文件裏,然後還要把主機名也寫上進行映射,這樣就可以用主機名進行任務分發或文件傳輸以及其他工作了。

查看主機名

輸入“hostname”命令,即可查看主機名,不過以下是默認的主機名,如果在集羣裏使用這個默認名字會不方便管理,所以我們要修改名字。
在這裏插入圖片描述

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

執行以下命令進入配置文件,在末尾添加如下圖IP地址+需要修改的主機名+別名(別名可以選填),其中用空格把這三部分連接。

vi /etc/hosts

hosts文件
這是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:柘月十七

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章