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