孔瑞平 天津工業(yè)職業(yè)學(xué)院
1.Hadoop 框架
Hadoop 是Apache 旗下的一個分布式計算的開源平臺,它詳細的為用戶提供了系統(tǒng)底層的細節(jié),是一種分布式的基礎(chǔ)架構(gòu)。Hadoop 框架是采用JAVA 語言來編寫的,因此它具有較好的跨平臺性,且能夠很好的適用于各種廉價的集群中。
分布式文件系統(tǒng)HDFS 和分布式計算系統(tǒng)MR 是Hadoop 框架中兩個較為重要的組件,重要應(yīng)用在于這兩個重要組件的分布式處理功能。由于Hadoop 框架具有的明顯優(yōu)點,各個領(lǐng)域中已逐步在采用Hadoop 來處理大量的企業(yè)歷史數(shù)據(jù)等,其中以互聯(lián)網(wǎng)行業(yè)為主。目前,國內(nèi)大量應(yīng)用Hadoop框架來完成數(shù)據(jù)處理的主要有淘寶、中國移動、京東、華為和百度等大型網(wǎng)站。
2.Hadoop 核心組件
(1)MapReduce(分布式計算系統(tǒng)):MR 主要負責(zé)作業(yè)的批處理和分布式的計算,完成了海量數(shù)據(jù)的大量計算和處理工作。
(2)HDFS(分布式存儲系統(tǒng)):采用HDFS 實現(xiàn)了超大數(shù)據(jù)集的存儲,可采用廉價的成千上百臺普通服務(wù)器同時存儲大量數(shù)據(jù)。實際上,海量數(shù)據(jù)是同時存儲在很多臺分布式的主機中,實現(xiàn)了在集群主機之間很好的通過網(wǎng)絡(luò)共享文件系統(tǒng),但在用戶看來仍像是存儲在同一臺主機中。
(3)YARN:屬于Hadoop 框架的資源調(diào)度系統(tǒng),它主要負責(zé)調(diào)度集群中各主機的CPU、內(nèi)存等資源。
(4)HBase:是一種分布式的超大型數(shù)據(jù)庫,用戶在處理數(shù)據(jù)時主要依賴HBase 來實現(xiàn)隨機讀寫操作,而HDFS 只是實現(xiàn)了順序讀寫,不是真正意義上的存儲。
(5)Spark:Spark 的邏輯和MR 類似,不同點在于MR 是基于硬盤方面的計算,而Spark 框架是內(nèi)存方面的計算,所以從一定程度上來說,Spark 框架的性能占有優(yōu)勢。
(6)Hive:它主要實現(xiàn)了數(shù)據(jù)倉庫的作用。數(shù)據(jù)倉庫一般主要用于存儲海量的歷史數(shù)據(jù),用于企業(yè)決策、統(tǒng)計分析等情況下,從多種維度出發(fā)使用、分析、統(tǒng)計數(shù)據(jù),最終滿足用戶的數(shù)據(jù)處理要求。Hive 的功能主要是基于MR,把SQL 語句轉(zhuǎn)換為相應(yīng)的MR 作業(yè)。
(7)Flume:主要用做日志收集,負責(zé)收集分析流式數(shù)據(jù)時產(chǎn)生的眾多實時流數(shù)據(jù)。
1.安裝VMware 虛擬機
本部署采用的是VMware 14 版本的虛擬機,它要求本地主機的CPU 必須要支持虛擬化功能。按照步驟,設(shè)置虛擬機名稱、指定磁盤容量(如果機器許可, 可以設(shè)置為略大的空間,如30G)。為了性能考慮,將虛擬機磁盤存儲為單個文件,并進行光驅(qū)的鏡像索引。結(jié)合本機的性能設(shè)置,選擇合適的處理器數(shù)量和每個處理器的內(nèi)核數(shù)量,完成一系列的配置后成功安裝虛擬機軟件。
2.安裝centos7 系統(tǒng)
本文以centos7 版本進行研究,在安裝centos7 之前,需要保證BIOS 中虛擬化功能已正確打開。若虛擬機正確安裝后,但打開時沒有反應(yīng),一般是 Windows 防火墻的問題。首先要把防火墻關(guān)閉,如果表現(xiàn)正常了,再將VMware 加入到防火墻的例外中。
安裝CentOS 7 按需設(shè)置虛擬機的主機名、啟動后設(shè)置等,安裝成功后,能夠正常打開圖形化的Linux 桌面。然后,選擇合適的網(wǎng)絡(luò)工作模式,進行虛擬機網(wǎng)絡(luò)配置:當(dāng)你的電腦所處網(wǎng)絡(luò)不是DHCP方式,而是為每臺虛擬機固定IP 地址,采用NAT 模式。滿足以上條件,但仍上不去外網(wǎng),改用橋接方式,橋接方式需要處在DHCP 環(huán)境下,否則不設(shè)置靜態(tài)IP 地址,則不能連通網(wǎng)絡(luò)。配置完成后打開終端,測試網(wǎng)絡(luò)的連通性,達到虛擬機能和本地主機、外網(wǎng)之間都能夠正常通信。
按照以上方法,需要準(zhǔn)備好三臺虛擬主機,主機名分別為:master、slave1 和slave2,并確保三臺虛擬主機之間的網(wǎng)絡(luò)是連通的。
在部署Hadoop 之前,必須要明確其安裝方式,按照確定的運行模式進行相應(yīng)的環(huán)境變量等配置,完成Hadoop 平臺的部署。
1.選擇運行模式
在單機模式下,程序都運行同一個主機中。開發(fā)階段大多會選用單機模式來調(diào)試和運行程序;在集群模式中,將使用虛擬環(huán)境安裝多個虛擬主機,來模擬一個集群中的多臺主機。
2.運行 Hadoop 的用戶
一般情況下,需要指定系統(tǒng)的用戶來操作Hadoop 集群,本集群中三臺虛擬主機都默認使用stu 用戶 。
3.相關(guān)配置
Hadoop 框架主要使用XML 文件,來配置Hadoop 生態(tài)系統(tǒng)中的眾多組件,其中部分關(guān)鍵的XML 配置文件如下。
(1)core-site.xml:屬于hadoop 的核心配置文件 。
(2)hdfs-site.xml:是HDFS 組件的配置文件,主要用于完成HDFS 的相關(guān)配置。
(3)mapred-site.xml:是MR 組件的配置文件。
(4)yarn-site.xml:是YARN 組件的配置文件, 主要用于完成YARN 的相關(guān)配置。
以上XML 配置文件,全部保存在Hadoop 框架安裝路徑中的etc/hadoop 子目錄下。
在master 虛擬主機中,默認都是使用stu 用戶來操作。
1.通過Xshell 軟件,把Hadoop 的安裝包上傳到master 主機下的相應(yīng)目錄中。
2.通過tar 命令解壓至安裝的目錄中:tar zvxf 安裝文件的名稱。
3.配置JDK:基于JAVA 語言的Hadoop 框架,需要JDK 運行環(huán)境。Hadoop 局限于某個用戶,如果這個用戶在登錄后未進到shell的情況下需要環(huán)境生效,就需要同時配置.bash_ profile 文件。經(jīng)修改后,需要通過source 命令使得設(shè)置的環(huán)境變量生效。
4.配置虛擬機的環(huán)境變量
(1)配置 Hadoop 的 環(huán)境變量:在hadoop-env.sh 文件的JAVA_HOME 變量中,中加入JDK 的安裝路徑。命令為:export JAVA_HOME=/usr/java/jdk1.8.0_211。
(2)配置 Linux 的環(huán)境變量:編輯./bash_profile 文件,增加JAVA_HOME 和HADOOP_HOME 目錄,在PATH 路徑中添加JAVA_HOME/bin, HADOOP_HOME/bin, HADOOP_HOME/sbin。最后,使用source 命令讓環(huán)境變量生效。
5.運行和驗證:以stu 用戶來驗證環(huán)境變量是否設(shè)置成功,使用命令hadoop version 來驗證。
按照(一)中方法部署好master 虛擬主機后,打開master 主機,將已配置成功的hadoop 配置文件復(fù)制到集群中其他虛擬主機slave1 和slave2 中。復(fù)制完成后,所有虛擬主機的環(huán)境配置均完成,各虛擬主機相互之間的網(wǎng)絡(luò)也是互通的。最后,通過jps 命令查看集群中三臺虛擬主機的守護進程,來驗證Hadoop 部署是否成功。
為了實現(xiàn)集群中主機之間快速、方便的實現(xiàn)遠程訪問、批量復(fù)制文件等操作,本集群中的三臺虛擬主機必須正確實現(xiàn)ssh 免密登錄的功能。
免密登錄的實現(xiàn)思路如下。
1.為master 虛擬主機生成公鑰、私鑰文件:使用ssh-keygen-t rsa 命令。命令執(zhí)行后,回車三次,分別設(shè)置秘鑰的存儲路徑和密碼等。
2.將master 主機的公鑰內(nèi)容,復(fù)制給slave1 主機,并追加到其authorized_keys 文件下,從而實現(xiàn)了master 主機在遠程登錄slave1 主機時不再需要輸入賬號和口令。復(fù)制命令為:scp ~/.ssh/authorized_keys stu@slave1:~/。
3.接著為slave1 主機生成公鑰與私鑰, 同樣把該公鑰的文件復(fù)制給slave2 主機,并追加到其authorized_keys 文件下,從而實現(xiàn)了master 和slave1 主機在遠程登錄slave2 主機時不再需要輸入賬號和口令。復(fù)制命令為:scp ~/.ssh/authorized_keys stu@slave2:~/。
4.復(fù) 制slave2 主 機 的authorized_keys 文 件,給master 與slave1 主機,并存于.ssh 目錄目錄下,成功覆蓋兩臺接收主機的已有的authorized_keys 文件內(nèi)容。命令如下:
scp authorized_keys stu@slave1:~/.ssh/
scp authorized_keys stu@master:~/.ssh/
5.驗證免密是否實現(xiàn)之前,需要先檢查master、slave1 和slave2 三臺主機中秘鑰文件的權(quán)限。在master、slave1 和slave2 每臺虛擬主機中的.ssh/目錄下, 使用ls -l, authorized_keys 查看,確保各自的秘鑰文件的權(quán)限都必須是600,否則使用chmod 進行修改。
6.經(jīng)以上設(shè)置后,最后分別在三臺虛擬主機中查看authorized_keys 文件中的內(nèi)容, 此時該秘鑰中包含了三臺主機的公鑰信息,在master、slave1、slave2 分別進行查看: cat /home/stu/.ssh/authorized_keys。
7.驗證ssh 免密登錄:在三臺虛擬主機的終端中, 分別執(zhí)行以下命令: ssh master、ssh slave1、ssh slave2,查看是否自動的遠程登錄到了其他主機中。
經(jīng)驗證后,三臺主機之間進行遠程登錄時,都不再需要輸入對方的密碼,即可直接操作對方,最終實現(xiàn)了集群的ssh 免密登錄。
若以上設(shè)置沒有問題,仍不能遠程訪問彼此,需要檢查各虛擬機的防火墻是否處于關(guān)閉狀態(tài),關(guān)閉防火墻操作, CentOS 7 的防火墻以系統(tǒng)服務(wù)的形式存在,建議在root 用戶下執(zhí)行關(guān)閉操作,以上集群中的三臺虛擬主機都需要執(zhí)行該操作。
本文探討了虛擬環(huán)境下Hadoop 集群的快速部署方法,從單機模式向集群模式進行遞進式的探討,實現(xiàn)了Hadoop 集群的快速部署。