胡必波 彭 梅 劉曉娟廣州工商學(xué)院
大數(shù)據(jù)實驗環(huán)境的搭建涉及Linux系統(tǒng)、虛擬機(jī)軟件、JDK、Hadoop、Spark、HBase、Hive等多種開源軟件的安裝,安裝過程涉及大量配置,不易快速集成和維護(hù),給Hadoop平臺的實踐課程教學(xué)帶來了很大的挑戰(zhàn)。廣州工商學(xué)院雖然引入了青軟QST大數(shù)據(jù)“云桌面”解決方案,學(xué)生在本地終端通過校園網(wǎng)連接到QST大數(shù)據(jù)服務(wù)器,中央服務(wù)器為其分配一個虛擬機(jī),學(xué)生在虛擬機(jī)上完成各種實驗操作。但這種方案受限于校園局域網(wǎng)絡(luò),而且機(jī)房統(tǒng)一上機(jī)的時間相對有限,不能很好地滿足教師和學(xué)生課后學(xué)習(xí)實踐大數(shù)據(jù)時的需求,仍然需要構(gòu)建單機(jī)實驗環(huán)境進(jìn)行線下輔助教學(xué)。本文通過實踐探索,利用Ambari快速部署Hadoop集群環(huán)境,簡化了集群供應(yīng),只需要一臺物理計算機(jī)就可以開展集群部署、監(jiān)控和管理等實驗,既方便教學(xué),又貼近實際生產(chǎn)應(yīng)用環(huán)境。
虛擬化技術(shù)是指通過虛擬化軟件VMM在一臺計算機(jī)上模擬出一個或多個虛擬化環(huán)境。虛擬化常見的類型有:系統(tǒng)虛擬化、服務(wù)器虛擬化、桌面虛擬化、存儲虛擬化、網(wǎng)絡(luò)虛擬化以及應(yīng)用虛擬化等,其中,系統(tǒng)虛擬化是指使用VMware Workstation等虛擬化軟件在物理計算機(jī)上虛擬出一個邏輯操作系統(tǒng)(虛擬機(jī))來安裝和使用另一個操作系統(tǒng)及其應(yīng)用程序,互不影響使用。
Apache Ambari是一種基于Web的工具,支持Apache Hadoop集群的安裝、部署、配置和管理,支持包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等大多數(shù)Hadoop組件。Ambari從集群節(jié)點和服務(wù)收集大量信息,并將其表現(xiàn)為容易使用的、集中化的接口,如Ambari Web、Restful API等;Ambari Web顯示諸如服務(wù)特定的摘要、圖表以及警報信息??赏ㄟ^Ambari Web對Hadoop集群進(jìn)行創(chuàng)建、管理、監(jiān)視、添加主機(jī)、更新服務(wù)配置等;也可以利用Ambari Web執(zhí)行集群管理任務(wù),例如,啟用Kerberos安全以及執(zhí)行Stack升級。任何用戶都可以查看Ambari Web特性。擁有administrator角色的用戶比operator或view-only的用戶能訪問的選項更多。例如,Ambari administrator可以管理集群安全,一個operator用戶可以監(jiān)控集群,而view-only用戶只能訪問系統(tǒng)管理員已授予的必要權(quán)限。
Ambari自身也是一個分布式架構(gòu)的軟件,主要由兩部分組成:Ambari Server和Ambari Agent。Ambari Server從整個集群中收集信息。每個主機(jī)上都有Ambari Agent,Ambari Server通過Ambari Agent控制每個主機(jī)。簡單來說,用戶通過Ambari Server通知Ambari Agent安裝對應(yīng)的軟件;Agent會定時發(fā)送各個機(jī)器中每個軟件模塊的狀態(tài)給Ambari Server,最終這些狀態(tài)信息會呈現(xiàn)在Ambari的GUI,方便用戶了解到集群的各種狀態(tài),并進(jìn)行相應(yīng)的維護(hù)。Ambari Server架構(gòu)如圖1所示。
圖1 Ambari Server架構(gòu)
本文以4臺節(jié)點為例,來組建Hadoop分布式集群,系統(tǒng)版本采用的是Linux發(fā)行版 CentOS7(64位)。根據(jù)如表1所示的資源配置來組建大數(shù)據(jù)基礎(chǔ)平臺。
表1 Hadoop集群主機(jī)規(guī)劃
(1)下載安裝包。通過ambari安裝需要下載下面的5個主要包:ambari-2.6.1.5+HDP-2.6.4.0+HDP-UTILS-1.1.0.22+HDPGPL-2.6.4.0+JDK1.8+MySQL5.6,所有的安裝包加起來共約9 G,建議從官網(wǎng)下載軟件包,然后上傳到服務(wù)器,通過配置本地源的方式來實現(xiàn)離線安裝。HDP是hortonworks的軟件棧,包含了hadoop生態(tài)系統(tǒng)的所有軟件項目,比如HBase、Zookeeper、Hive、Pig等,HDP-UTILS是工具類庫。
(2)關(guān)閉服務(wù)。為了方便集群節(jié)點的互相通信,應(yīng)先關(guān)閉各節(jié)點的firewalld、iptables、selinux等服務(wù)。此外,還應(yīng)關(guān)閉THP,否則Hadoop的系統(tǒng)CPU使用率很高。操作系統(tǒng)后臺的khugepaged進(jìn)程會一直掃描所有進(jìn)程占用的內(nèi)存,在可能的情況下,會把4k page交換為Huge Pages。在該過程中,對于操作中內(nèi)存的各種分配活動都需要各種內(nèi)存鎖,直接影響程序的內(nèi)存訪問性能,且該過程對于應(yīng)用是透明的,在應(yīng)用層面不可控制,對于專門為4k page優(yōu)化的程序來說,可能會造成隨機(jī)性能下降。同時,建議最大打開文件描述符數(shù)為10000或更多。
(3)配置同步時鐘。集群中的各節(jié)點需要安裝并啟動ntp服務(wù),以保證集群時間的一致。在各節(jié)點安裝ntp服務(wù)后,設(shè)置master為主服務(wù)器開啟nptd服務(wù),各子節(jié)點slave1、slave2、slave3設(shè)置同步。在master開啟ntp服務(wù)器以后,其余子節(jié)點就不需要開啟,如果發(fā)現(xiàn)NTP啟動之后時間并不同步,可直接使用定時手動同步的方式。
(4)配置SSH無密碼登陸。由于部署過程中,配置master節(jié)點無密碼登錄到其他節(jié)點,可通過復(fù)制master節(jié)點.ssh/id_rsa.pub至其他節(jié)點的.ssh/authorized _ keys文件中實現(xiàn)。在通過測試是否實現(xiàn)了無密碼登錄后,可將創(chuàng)建的秘鑰拷貝出來,因為后面ambari安裝時需要上傳該秘鑰。創(chuàng)建秘鑰是在隱藏文件夾/root/.ssh/下面的,所以,需要先把秘鑰拷貝到可見區(qū)域,然后拷貝到電腦上。只需保證master免密到其他節(jié)點(包含自身),不需要互通。
(5)制作本地源。在master需要先安裝httpd服務(wù)并設(shè)置為開機(jī)啟動,然后在/var/www/html根目錄下新建ambari目錄,開啟FTP服務(wù)后,將前面下載的ambari 2.6.0+ HDP 2.6.3+ HDP-UTILS 1.1.0這3個包拷貝到該目錄下,再進(jìn)行解壓縮操作,并通過http∶//192.168.137.140/ambari/查看訪問master是否能成功訪問。在master安裝本地源制作相關(guān)工具后,修改文件里面的源地址,將其拷貝到/etc/yum.repos.d/,最后拷貝分發(fā)到各子節(jié)點slave1、slave2、slave3。
(6)安裝ambari-server。執(zhí)行相關(guān)命令完成ambari -Server、ambari-agent安裝。ambari -Server有兩種安裝模式可供選擇,一種是默認(rèn)postgresql數(shù)據(jù)庫的安裝方式,但不推薦在生產(chǎn)環(huán)境中使用;還有一種方式是使用MySQL等第三方數(shù)據(jù)庫安裝方式。若采用第三方數(shù)據(jù)庫形式,需要在master主機(jī)先安裝配置好MySQL。MySQL安裝成功后,需要通過mysql-connection-java.jar包建立MySQL與ambari-server的連接,并在MySQL數(shù)據(jù)庫創(chuàng)建ambari數(shù)據(jù)庫及數(shù)據(jù)庫的用戶名和密碼、創(chuàng)建hive數(shù)據(jù)庫及hive庫的用戶名和密碼、創(chuàng)建oozie數(shù)據(jù)庫及oozie庫的用戶名和密碼。
執(zhí) 行“ambari-server start” 命 令, 登 錄http∶//192.168.137.140/8080,在“用戶名”的文本框中輸入“admin”,在“密碼”的文本框中輸入“admin”,可進(jìn)入Ambari管理界面。
在“選擇安裝棧”時,指定安裝源HDP和HDP -UTILS的位置。指定相應(yīng)的目標(biāo)主機(jī)并選擇手動注冊主機(jī),選擇所需要安裝的服務(wù)。本文需要安裝HDFS、YARN+MapReduce2、Zookeeper、Ambari Metrics、Hive、HBase、Mahout、Sqoop、Spark等服務(wù)。在整個過程需要設(shè)置Grafana Admin和Hive的密碼。
單擊頁面導(dǎo)航欄的“主界面”按鈕,在主界面可以查看集群狀態(tài)和監(jiān)控信息;單擊頁面導(dǎo)航欄的“主界面”按鈕,在主界面可以查看集群狀態(tài)和監(jiān)控信息,如圖2所示。至此,大數(shù)據(jù)基礎(chǔ)平臺已經(jīng)部署完畢了。
圖2 Ambari平臺主界面
Ambari的用戶圖形界面非常有助于平臺管理員去管理維護(hù)和監(jiān)控Hadoop集群。在Hadoop集群部署完成后,打開部署Ambari Server主機(jī)的8080端口。默認(rèn)的管理員用戶名為admin,密碼為admin。登錄后進(jìn)入Ambari管理的Hadoop集群主界面。該界面形象展示了集群服務(wù)的運行狀態(tài)、資源使用狀況、配置參數(shù)以及錯誤告警等。
(1)服務(wù)管理。在頁面左側(cè)的服務(wù)列表中,可以選中任何一個想要操作的服務(wù)。以HDFS為例,選擇HDFS的“概要”選項卡,顯示HDFS運行的進(jìn)程信息,包括運行狀態(tài)、資源使用情況以及監(jiān)控信息。
(2)主機(jī)管理。單擊頁面導(dǎo)航欄中“主機(jī)”按鈕,打開Ambari所管理的主機(jī)列表。進(jìn)入其中一臺主機(jī)中(如master),可以看到,該主機(jī)中所有進(jìn)程的運行狀態(tài)、主機(jī)資源使用情況、主機(jī)的IP地址、資源械等信息。
(3)進(jìn)程管理。每個服務(wù)都由相應(yīng)的進(jìn)程組成,如HDFS服務(wù),包含了NameNode、SNameNode、DateNode等進(jìn)程。進(jìn)入master節(jié)點中,找到需要進(jìn)行管理的進(jìn)程,如NameNode,該進(jìn)程后面有個“Started”按鈕,表示該進(jìn)程正在運行中,單擊該按鈕可以改變進(jìn)程的運行狀態(tài),如“重啟”“停止”“移動”“打開維護(hù)模式”“均衡HDFS”等。如圖3所示。
(4)配置管理。Ambari管理工具可以很方便地修改配置文件,并應(yīng)用到集群的每一臺主機(jī)中,尤其是當(dāng)集群中主機(jī)的數(shù)量非常多時。例如,需要修改集群HDFS文件系統(tǒng),Block的復(fù)制因子(Block replication)為2,手動部署集群的情況下,則要修改每一臺主機(jī)的hdfs-site.xml配置文件。如果一個集群有幾十臺或者幾百臺主機(jī),工作量將非常大。而Ambari集群管理工具則可以很好地應(yīng)對,由集群中的Ambari Server向每臺主機(jī)中的Ambari Agent發(fā)送相關(guān)的心跳信息,由此更新每臺主機(jī)中的配置文件。如圖4所示。
圖3 主機(jī)管理界面
圖4 配置管理界面
傳統(tǒng)的手動安裝、修改配置文件搭建hadoop平臺的方法,雖然能大致了解hadoop基本的部署過程,但是實際生產(chǎn)過程中不可能采用這種全手工的方法,后續(xù)還涉及安裝HBase/Hive/Spark/Storm之類的上層應(yīng)用,以及管理監(jiān)控平臺,過程相對繁瑣。本文利用優(yōu)秀的分布式集群管理工具Ambari部署工具來構(gòu)建大數(shù)據(jù)平臺并對集群進(jìn)行管理的方法,實現(xiàn)了自動化部署+管理監(jiān)控,大大提高部署Hadoop集群的效率及成功率,適用于在高校教學(xué)環(huán)境以及大規(guī)模Hadoop節(jié)點部署場景中使用,但也存在穩(wěn)定性差、部署的宿主機(jī)內(nèi)存要求較高、屏蔽很多細(xì)節(jié)、難以對Hadoop生態(tài)圈各組件的深入理解等缺點。因此,也不能完全摒棄傳統(tǒng)方法,而是將其作為自動化方法的補(bǔ)充,讀者可以根據(jù)實際情況選用。