在集羣中, 一臺服務器在集羣中扮演的角色, 由該服務器上啓動的進程決定. 即角色 = 進程.java
單臺服務器上運行多個進程(角色). 通常學習Hadoop時經常使用這種模式.node
工做中應該使用的模式, 不一樣角色運行在不一樣的服務器上.linux
雖然徹底分佈式是在實際工做中使用的模式, 但它並非可靠的. 緣由很簡單, 就是集羣會發生單點故障, 若是namenode節點故障, 掛掉後, 那麼這麼集羣就不可用, 不能被外部訪問. 所以, 通常都會對集羣作HA.web
鏈接工具備不少, 推薦使用XShell, 也可以使用其餘的, 因人而異.數據庫
上傳工具也有不少, 推薦Xftp和fileZilla.
編程
除僞分佈式用到一個節點外, 其他兩種模式咱們都是使用的四節點, 給它們命名爲node01, node02, node03, node04.(命名可任意)vim
首先, 須要先建立node01節點, 建立過程即在虛擬機中安裝CentOS, 不會的可自行必應. 其他三個節點等咱們配好一些通用配置後, 用VMware自帶的克隆功能來生成便可.centos
cd /etc/sysconfig/network-scripts/ 進入該目錄, 找到ifcfg-eth0的文件,用vim打開修改 將ONBOOT=no 改成yes 設置其跟隨開機自啓動 將BOOTPROTP=dhcp改成static 設置ip的獲取由隨機改成固定 再在以後加上一下內容 IPADDR=192.168.75.133 手動設置的固定ip PREFIX=24 GATEWAY=192.168.75.2 網關ip. 打開VMware的虛擬網絡編輯器, 選中nat模式查看nat設置中會有 DNS1=8.8.8.8 設置dns service network restart 保存退出後, 重啓網絡服務
注意 : 添加修改時, 不要加上說明用的中文服務器
網絡設置好以後, 就能夠在本地機中用XShell遠程鏈接虛擬機了. 怎麼鏈接自行bing, 咱們對虛擬機的操做一般是在鏈接工具上操做.網絡
節點安裝ntp命令 yum install ntp -y 上網查找最新的時間服務器ntp1.aliyun.com, 可選擇其餘家的 同步時間 ntpdate ntp1.aliyun.com
使用上傳工具將jdk和hadoop的包傳到虛擬機中, 這裏筆者將jdk傳到/usr/local目錄中, 將hadoop傳到/opt/software/hadoop目錄中, 路徑因我的配置而異, 要記得本身存放的位置, 後文會對這些路徑進行配置, 到時需修改成與我的配置相關的路徑, 後續內容再也不重複此點.
進入jdk存放的位置 cd /usr/local 解壓安裝包 tar -zxf jdk-8u181-linux-x64.tar.gz 給解壓出來的文件設置權限 chmod -R 777 jdk1.8.0_181 配置java環境變量 vim /etc/profile 在文件最後插入 export JAVA_HOME=/usr/local/jdk1.8.0_181 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin 讓修改的文件生效 source /etc/profile 控制檯輸入java -version 來查看jdk是否生效.若是提示java版本則代表成功
vmware中克隆節點
克隆三個節點完成之後, 此時克隆的三個節點的主機名, 靜態ip地址, 網卡物理地址與第一個一致, 先修改一下它們:
先設置節點網卡 vim /etc/udev/rules.d/70-persistent-net.rules
打開以後, 會有兩個網卡的信息
其中, eth0 是克隆的node01節點的信息, 因此這裏咱們要刪除這一行, 而後把eth1改成eth0, 同時複製ATTR(address)中的內容, 即克隆出來的虛擬機網卡的物理地址.
而後配置ip, 分別在每個節點上執行
vim /etc/sysconfig/network-script/ifcfg-eth0 將HWADDR修改成剛纔複製的內容 再修改IPADDR的Ip地址, 只需該最後三位便可, 保證每一個節點的Ip不一樣
在修改主機名 vim /etc/sysconfig/network 將NETWORKING設置爲yes 打開網絡 將HOSTNAME分別設爲node02, node03, node04 重啓後生效
爲了讓節點之間可以互相訪問到, 須要對每一個節點的位置進行配置
vim /etc/hosts 打開hosts文件 在四個節點中同時加入下列內容 192.168.75.133 node01 192.168.75.134 node02 192.168.75.135 node03 192.168.75.136 node04 其中ip 爲各位本身配置的ip
全部節點執行 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 生成公鑰和私鑰
根據模式的不一樣, 將公鑰加入節點的方式不一樣:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
node01 節點上執行 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04 node02節點上執行 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
注:全部存儲的公鑰信息都可在 ~/.ssh/authorized_keys文件中查看
關閉全部節點的防火牆
service iptables stop
永久關閉
chkconfig iptables off
這麼配下來, 大部分配置文件須要source命令使其生效, 建議重啓虛擬機.