前言
上一篇我們講解了Hadoop單節點的安裝,并且已經通過VMware安裝了一臺CentOS 6.8的Linux系統,咱們本篇的目標就是要配置一個真正的完全分布式的Hadoop集群,閑言少敘,進入本篇的正題。
技術準備
VMware虛擬機、CentOS 6.8 64 bit
安裝流程
我們先來回顧上一篇我們完成的單節點的Hadoop環境配置,已經配置了一個CentOS 6.8 并且完成了java運行環境的搭建,Hosts文件的配置、計算機名等諸多細節。
其實完成這一步之后我們就已經完成了Hadoop集群的搭建的一半的工作了,因為我們知道通過虛擬機搭建所搭建的好處就是直接拷貝機器。多臺同步進行操作,減少分別配置的時間消耗浪費。這也是虛擬化技術所帶來的優勢。
下面,咱們進去分布式系統的詳細操作過程。
1、首先需要在VMWare中將之前創建的單實例的計算機進行拷貝。
這里根據之前第一篇文章的規劃,我們至少需要再克隆出三臺計算機,作為DataNode數據節點的數據存儲。之前的上一臺機器作為Master主節點進行管理。
這里先來梳理一下整個Hadoop集群的物理架構圖,大家有一個直接的觀念和認識,上表中已經和明確了,總共需要5臺服務器來使用,四臺用來搭建Hadoop集群使用,另外一臺(可選)作為MySQL等外圍管理Hadoop集群來使用。
我們在開發的時候一般也是直接通過連接外圍的這臺機器來管理Hadoop整個集群。
根據上面的物理規劃圖應該對整個架構有一個清晰的認識了,好,咱們進行實操。
關于在VMWare中進行虛擬機的拷貝是一個比較簡單的過程。截圖如下:
然后,就是下一步就行了,這里需要記住的是,一定要選擇克隆一個完整的而不是快照。
然后,根據計算機名輸入機器名就可以了。克隆之后的機器如下:
2、配置各個Slave節點的機器信息。
關于各個Slave服務器的配置基本分為如下基本部分:
- 首先需要手動更改各個從節點的計算機名和Hosts文件(必須!)
- 然后配置各個從節點的內存值,在第一篇的文章中我已經分析過了,這里可以將這里的內存值設置的比Master節點少點,(土豪公司忽略!)
- 最后配置的就是存儲了,這個自己根據之前的計算公式計算出來就可以了。
首先,進入各個機器中更改Hosts文件和計算機名,在上一篇文章我已經介紹過了,大家可以上一篇翻閱,這里直接寫出腳本如下:
vim /etc/sysconfig/network
vim /etc/hosts
計算機名和Hosts配置文件按照之前規劃完成就行了,同樣網絡的IP地址也是按照規劃設置成固定的地址。
在配置完這一切之后,重啟完各個機器之后,確保各個節點之間可以ping 通(重點!!!)。
然后剩下的內存配置,直接關閉掉虛擬機,在VMWare中進行設置就可以了,很簡單。
這里根據需要自行調整,然后如果可以的話,盡量將主節點Master的CUP處理器設置成多路多核,這樣設置的原因,我第一篇文章中就已經詳細分析過了。
至此,各個服務器的基礎配置已經完成了。
經過上面一系列流程,大家是不是發現通過虛擬機拷貝這種方式省去了好多額外的配置時間,比如:裝操作系統、下載Hadoop安裝包、搭建Java環境等。
3、配置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的原理很簡單,就是提前將統一用戶的密碼進行加密形成密鑰進行分發,然后分發到各個服務器中,各個服務器對這個秘鑰加入到當前的系統用戶組中,這樣這個用戶登錄的時候就不需要輸入密碼進行登錄操作了。
希望,我上面的講解各位看官能看明白里面的含義。
下面咱們來實際操作:
- 首先進行sshd的配置文件的修改,去掉默認注釋,開啟SSH驗證功能(以root用戶進行操作)。
vim /etc/ssh/sshd_config
將上面的這三行數據的注釋“#”去掉進行,保存。這里記住了!所有的機器都要這么依次進行設置。
簡要的解釋下上面三行數據的含義:1、第一個RSAAuthentication是指開啟SSH驗證,2、PubkeyAuthetication是指可以通過公鑰進行驗證,3、AuthorizedkeysFile則指的的是公鑰存放的位置。
記住,完成配置之后,重啟該服務,腳本如下:
/sbin/service sshd restart
可以驗證下,比如這里我這里直接SSH登錄本機系統:
ssh localhost
這里可以看到,丫讓我輸入密碼,所以說這里只是開啟了SSH驗證,但是沒有生成密鑰,進行設置。
- 加工生成證書公私鑰,分發到各個服務器(以Hadoop用戶操作)。
這個步驟就是上面我分析的過程,我們需要在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節點配置完成。
這里需要配置的剩下的兩個Slave節點進行無密碼登錄了,詳細的操作過程參照上面的流程就可以了,需要的注意的是:在Master生成密鑰只需要生成一次就可以了,不要再次生成!因為每次生成以為著所有的節點都需要重新配置。
配置完成之后的效果,就是要保證在master機器上面的hadoop用戶能夠無需密碼的登錄到各個slave節點上進行操作就可以。
經過上面的操作,已經確保我們的Master機器可以毫無障礙的操作各個子節點Slave了。
- 參照上面的步驟將各個Slave節點SSH到Master機器。
我們知道,經過上面的一系列操作之后,我們的Master主節點可以順利的操控各個Slave節點了,但是,這里需要注意的是,為了保證各個Slave機器和Master機器進行通信。
需要保證各個Slave節點能夠無密碼登錄Master機器,操作步驟如上面。
這么操作的理由很簡單,各個Slave子節點干完Master分配的任務之后,需要有權限反饋至他們的老大Master!
好了,到此,我們已經完成了整個集群的SSH配置了。
這里再次強調,上面的步驟要一定完成驗證,要不以后的Hadoop操作會很出現各種詭異的問題,讓你措手不及,這都是經驗!!
4、配置Hadoop集群配置。
好了,到此我們需要對各個機器上面的Hadoop進行配置了。我們知道這里的所有的機器都是從一臺機器上面的拷貝過來,因為我們在這個機器上面已經安裝了單實例的Hadoop,參照上一篇文章。
那么,下一步的步驟就是將這個單節點的配置成一個真正的分布式集群,充分利用我們剛才搭建的幾臺Server進行性能的最大發揮。
這里的配置不是很多,只需要更改一下幾個文件就可以了。
- 首先進行slaves文件的配置,指定該集群的各個Slave節點的位置(以hadoop用戶進行操作)。
這個只需要在Master的機器上面進行就可以了,當然,如果不介意可以保持所有的機器上面的Hadoop配置一樣就可以了。執行命令如下
vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves
然后,將各個Slave的IP或者機器名寫入就可以了,一臺機器一行數據。這里我寫的是IP.
這樣就可以了。
- 然后,在更改hdfs-site.xml文件中的dfs.replication屬性值。
關于這個值我之前已經解釋過了,因為我們現在不是單臺機器了,所以將這個節點更改成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是否正常可用。
啟動整個集群的HDFS,在Master機器上面,用hadoop用戶操作,命令如下:
start-dfs.sh
我們通過瀏覽器來查看整個集群的HDFS狀態,地址為:http://192.168.1.50:50070/dfshealth.html#tab-overview
可以看到,當前我們的Hadoop集群的HDFS集群已經成功啟動,然后我們來看整個集群的存儲和節點數;
從上面的截圖我們可以看到,當前的集群存在四個DataNode節點,就是剛才我們配置的Slave文件的IP.這說明我們配置的集群HDFS能夠正常運行。
- 然后,我們來驗證一下整個集群的YARN分布式計算框架是否正常可用。
同樣的方式,我們首先來啟動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集群,然后教你如何使用它,騷年...不要捉急...讓思維飛一會...
有問題可以留言或者私信,隨時恭候有興趣的童鞋加大數據平臺深入研究。共同學習,一起進步。
文章的最后給出上一篇的基礎篇:
如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。
文章列表