前言html
上一篇咱們講解了Hadoop單節點的安裝,而且已經經過VMware安裝了一臺CentOS 6.8的Linux系統,我們本篇的目標就是要配置一個真正的徹底分佈式的Hadoop集羣,閒言少敘,進入本篇的正題。java
技術準備node
VMware虛擬機、CentOS 6.8 64 bitgit
安裝流程vim
咱們先來回顧上一篇咱們完成的單節點的Hadoop環境配置,已經配置了一個CentOS 6.8 而且完成了java運行環境的搭建,Hosts文件的配置、計算機名等諸多細節。瀏覽器
其實完成這一步以後咱們就已經完成了Hadoop集羣的搭建的一半的工做了,由於咱們知道經過虛擬機搭建所搭建的好處就是直接拷貝機器。多臺同步進行操做,減小分別配置的時間消耗浪費。這也是虛擬化技術所帶來的優點。安全
下面,我們進去分佈式系統的詳細操做過程。服務器
一、首先須要在VMWare中將以前建立的單實例的計算機進行拷貝。網絡
這裏根據以前第一篇文章的規劃,咱們至少須要再克隆出三臺計算機,做爲DataNode數據節點的數據存儲。以前的上一臺機器做爲Master主節點進行管理。架構
這裏先來梳理一下整個Hadoop集羣的物理架構圖,你們有一個直接的觀念和認識,上表中已經和明確了,總共須要5臺服務器來使用,四臺用來搭建Hadoop集羣使用,另一臺(可選)做爲MySQL等外圍管理Hadoop集羣來使用。
咱們在開發的時候通常也是直接經過鏈接外圍的這臺機器來管理Hadoop整個集羣。
根據上面的物理規劃圖應該對整個架構有一個清晰的認識了,好,我們進行實操。
關於在VMWare中進行虛擬機的拷貝是一個比較簡單的過程。截圖以下:
而後,就是下一步就好了,這裏須要記住的是,必定要選擇克隆一個完整的而不是快照。
而後,根據計算機名輸入機器名就能夠了。克隆以後的機器以下:
二、配置各個Slave節點的機器信息。
關於各個Slave服務器的配置基本分爲以下基本部分:
首先,進入各個機器中更改Hosts文件和計算機名,在上一篇文章我已經介紹過了,你們能夠上一篇翻閱,這裏直接寫出腳本以下:
vim /etc/sysconfig/network
vim /etc/hosts
計算機名和Hosts配置文件按照以前規劃完成就好了,一樣網絡的IP地址也是按照規劃設置成固定的地址。
在配置完這一切以後,重啓完各個機器以後,確保各個節點之間能夠ping 通(重點!!!)。
而後剩下的內存配置,直接關閉掉虛擬機,在VMWare中進行設置就能夠了,很簡單。
這裏根據須要自行調整,而後若是能夠的話,儘可能將主節點Master的CUP處理器設置成多路多核,這樣設置的緣由,我第一篇文章中就已經詳細分析過了。
至此,各個服務器的基礎配置已經完成了。
通過上面一系列流程,你們是否是發現經過虛擬機拷貝這種方式省去了好多額外的配置時間,好比:裝操做系統、下載Hadoop安裝包、搭建Java環境等。
三、配置SSH無密碼配置。
先來解釋下SSH的概念和用途;
SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲創建在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其餘操做平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎全部UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其餘平臺,均可運行SSH。
上面就是SSH的官方含義了,摘自百度百科。
下面,我來總結下SSH在Hadoop集羣中的用途。
所謂的SSH簡單一句話就是:同一用戶無密碼登陸到各臺機器。 其實,就是全部的Hadoop集羣中做爲分佈式的一個計算框架,須要對各個節點的服務進行操做,而操做的過程當中須要統一由一個相同的用戶進行操做,可是同一用戶登陸不一樣的服務器都須要密碼或者密鑰進行身份驗證。爲了不這個驗證過程就使用了統一的一種安全協議:SSH。
其實,SSH的原理很簡單,就是提早將統一用戶的密碼進行加密造成密鑰進行分發,而後分發到各個服務器中,各個服務器對這個祕鑰加入到當前的系統用戶組中,這樣這個用戶登陸的時候就不須要輸入密碼進行登陸操做了。
但願,我上面的講解各位看官能看明白裏面的含義。
下面我們來實際操做:
vim /etc/ssh/sshd_config
將上面的這三行數據的註釋「#」去掉進行,保存。這裏記住了!全部的機器都要這麼依次進行設置。
簡要的解釋下上面三行數據的含義:一、第一個RSAAuthentication是指開啓SSH驗證,二、PubkeyAuthetication是指能夠經過公鑰進行驗證,三、AuthorizedkeysFile則指的的是公鑰存放的位置。
記住,完成配置以後,重啓該服務,腳本以下:
/sbin/service sshd restart
能夠驗證下,好比這裏我這裏直接SSH登陸本機系統:
ssh localhost
這裏能夠看到,丫讓我輸入密碼,因此說這裏只是開啓了SSH驗證,可是沒有生成密鑰,進行設置。
這個步驟就是上面我分析的過程,咱們須要在Master節點上生成Hadoop用戶的公鑰,而後將這個公鑰分發給各個slave節點,而後這樣在Master機器上就能夠用Hadoop無密碼登陸到各個salve機器上面了。
步驟以下:
ssh-keygen -t rsa -P ''
這裏的-P後面‘P’是大寫的。
上面我用紅框勾出的路徑就是公鑰和私鑰生成的默認路徑。
而後,下一步就是將這個公鑰複製到各個slave節點中去、
經過如下Linux命令進行遠程文件的複製,腳本命令以下:
scp ~/.ssh/id_rsa.pub 遠程用戶名@遠程服務器IP:~/
咱們這裏面要複製的公鑰文件存在默認的路徑「/home/hadoop/.ssh」,因此執行的命令就是
scp ~/.ssh/id_rsa.pub hadoop@192.168.1.51:~/
而後,咱們須要登陸192.168.1.51的salve01的機器將剛纔生成的公鑰加入的本地的權限驗證組裏面去。
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
上面的命令是要在Slave01的機器上進行的,而且使用hadoop用戶今次那個操做。
最後,咱們來回到Master機器上面進行,ssh驗證。
SSH驗證的命令很簡單,格式以下:
SSH <遠程IP && 域名>
因此,這裏我們在master機器上登陸slave01機器上實驗下,看是否還須要進行密碼輸入。
ssh slave01.hadoop
經過上面的命令窗口能夠看到,咱們已經成功的從Master機器上面無密碼的登陸到Slave01機器上面了。那麼說明剛纔的配置生效了。
這裏須要配置的剩下的兩個Slave節點進行無密碼登陸了,詳細的操做過程參照上面的流程就能夠了,須要的注意的是:在Master生成密鑰只須要生成一次就能夠了,不要再次生成!由於每次生成覺得着全部的節點都須要從新配置。
配置完成以後的效果,就是要保證在master機器上面的hadoop用戶可以無需密碼的登陸到各個slave節點上進行操做就能夠。
通過上面的操做,已經確保咱們的Master機器能夠毫無障礙的操做各個子節點Slave了。
咱們知道,通過上面的一系列操做以後,咱們的Master主節點能夠順利的操控各個Slave節點了,可是,這裏須要注意的是,爲了保證各個Slave機器和Master機器進行通訊。
須要保證各個Slave節點可以無密碼登陸Master機器,操做步驟如上面。
這麼操做的理由很簡單,各個Slave子節點幹完Master分配的任務以後,須要有權限反饋至他們的老大Master!
好了,到此,咱們已經完成了整個集羣的SSH配置了。
這裏再次強調,上面的步驟要必定完成驗證,要不之後的Hadoop操做會很出現各類詭異的問題,讓你措手不及,這都是經驗!!
四、配置Hadoop集羣配置。
好了,到此咱們須要對各個機器上面的Hadoop進行配置了。咱們知道這裏的全部的機器都是從一臺機器上面的拷貝過來,由於咱們在這個機器上面已經安裝了單實例的Hadoop,參照上一篇文章。
那麼,下一步的步驟就是將這個單節點的配置成一個真正的分佈式集羣,充分利用咱們剛纔搭建的幾臺Server進行性能的最大發揮。
這裏的配置不是不少,只須要更改一下幾個文件就能夠了。
這個只須要在Master的機器上面進行就能夠了,固然,若是不介意能夠保持全部的機器上面的Hadoop配置同樣就能夠了。執行命令以下
vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves
而後,將各個Slave的IP或者機器名寫入就能夠了,一臺機器一行數據。這裏我寫的是IP.
這樣就能夠了。
關於這個值我以前已經解釋過了,由於咱們如今不是單臺機器了,因此將這個節點更改爲3或者更大的數,由於我們就四臺機器,因此這裏就配置成3能夠了。記住:只能是奇數!
vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
這裏須要注意的是,全部的機器都要這樣配置。
5、啓動Hadoop集羣,驗證是否成功。
到此,咱們基本完成了一個Hadoop徹底分佈式的集羣配置。下面的內容就是咱們來驗證一下是否可用。
驗證方式就很簡單了,首先咱們先來執行一個HDFS格式的命令,這個在上一篇咱們已經分析過了,由於,我們這裏改爲徹底分佈式的集羣,因此這裏須要從新格式。
bin/hadoop namenode -format
啓動整個集羣的HDFS,在Master機器上面,用hadoop用戶操做,命令以下:
start-dfs.sh
咱們經過瀏覽器來查看整個集羣的HDFS狀態,地址爲:http://192.168.1.50:50070/dfshealth.html#tab-overview
能夠看到,當前咱們的Hadoop集羣的HDFS集羣已經成功啓動,而後咱們來看整個集羣的存儲和節點數;
從上面的截圖咱們能夠看到,當前的集羣存在四個DataNode節點,就是剛纔咱們配置的Slave文件的IP.這說明咱們配置的集羣HDFS可以正常運行。
一樣的方式,咱們首先來啓動Yarn.腳本以下:
start-yarn.sh
咱們經過瀏覽器來查看整個集羣的Hadoop集羣狀態,地址爲:http://192.168.1.50:8088/
能夠看到,當前的Hadoop集羣已經存在四個正在運行的節點,並且跑的很Happy.後面的文章我將跟你們分析如何使用這個Hadoop集羣。
結語
此篇先到此吧,關於Hadoop大數據集羣的搭建後續依次介紹,好比利用Zookeeper搭建Hadoop高可用平臺、Map-Reducer層序的開發、Hive產品的數據分析、Spark的應用程序的開發、Hue的集羣壞境的集成和運維、Sqoop2的數據抽取等,有興趣的童鞋能夠提早關注。
本篇主要介紹了搭建一個徹底分佈式的Hadoop集羣,後面咱們會逐漸完善它,我會教你如何一步步的使用徹底分佈式的Hadoop集羣,而後教你如何使用它,騷年...不要捉急...讓思惟飛一會...
有問題能夠留言或者私信,隨時恭候有興趣的童鞋加大數據平臺深刻研究。共同窗習,一塊兒進步。
文章的最後給出上一篇的基礎篇:
若是您看了本篇博客,以爲對您有所收穫,請不要吝嗇您的「推薦」。