胡必波 彭 梅 劉曉娟廣州工商學院
大數據實驗環境的搭建涉及Linux系統、虛擬機軟件、JDK、Hadoop、Spark、HBase、Hive等多種開源軟件的安裝,安裝過程涉及大量配置,不易快速集成和維護,給Hadoop平臺的實踐課程教學帶來了很大的挑戰。廣州工商學院雖然引入了青軟QST大數據“云桌面”解決方案,學生在本地終端通過校園網連接到QST大數據服務器,中央服務器為其分配一個虛擬機,學生在虛擬機上完成各種實驗操作。但這種方案受限于校園局域網絡,而且機房統一上機的時間相對有限,不能很好地滿足教師和學生課后學習實踐大數據時的需求,仍然需要構建單機實驗環境進行線下輔助教學。本文通過實踐探索,利用Ambari快速部署Hadoop集群環境,簡化了集群供應,只需要一臺物理計算機就可以開展集群部署、監控和管理等實驗,既方便教學,又貼近實際生產應用環境。
虛擬化技術是指通過虛擬化軟件VMM在一臺計算機上模擬出一個或多個虛擬化環境。虛擬化常見的類型有:系統虛擬化、服務器虛擬化、桌面虛擬化、存儲虛擬化、網絡虛擬化以及應用虛擬化等,其中,系統虛擬化是指使用VMware Workstation等虛擬化軟件在物理計算機上虛擬出一個邏輯操作系統(虛擬機)來安裝和使用另一個操作系統及其應用程序,互不影響使用。
Apache Ambari是一種基于Web的工具,支持Apache Hadoop集群的安裝、部署、配置和管理,支持包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等大多數Hadoop組件。Ambari從集群節點和服務收集大量信息,并將其表現為容易使用的、集中化的接口,如Ambari Web、Restful API等;Ambari Web顯示諸如服務特定的摘要、圖表以及警報信息。可通過Ambari Web對Hadoop集群進行創建、管理、監視、添加主機、更新服務配置等;也可以利用Ambari Web執行集群管理任務,例如,啟用Kerberos安全以及執行Stack升級。任何用戶都可以查看Ambari Web特性。擁有administrator角色的用戶比operator或view-only的用戶能訪問的選項更多。例如,Ambari administrator可以管理集群安全,一個operator用戶可以監控集群,而view-only用戶只能訪問系統管理員已授予的必要權限。
Ambari自身也是一個分布式架構的軟件,主要由兩部分組成:Ambari Server和Ambari Agent。Ambari Server從整個集群中收集信息。每個主機上都有Ambari Agent,Ambari Server通過Ambari Agent控制每個主機。簡單來說,用戶通過Ambari Server通知Ambari Agent安裝對應的軟件;Agent會定時發送各個機器中每個軟件模塊的狀態給Ambari Server,最終這些狀態信息會呈現在Ambari的GUI,方便用戶了解到集群的各種狀態,并進行相應的維護。Ambari Server架構如圖1所示。

圖1 Ambari Server架構
本文以4臺節點為例,來組建Hadoop分布式集群,系統版本采用的是Linux發行版 CentOS7(64位)。根據如表1所示的資源配置來組建大數據基礎平臺。

表1 Hadoop集群主機規劃
(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,建議從官網下載軟件包,然后上傳到服務器,通過配置本地源的方式來實現離線安裝。HDP是hortonworks的軟件棧,包含了hadoop生態系統的所有軟件項目,比如HBase、Zookeeper、Hive、Pig等,HDP-UTILS是工具類庫。
(2)關閉服務。為了方便集群節點的互相通信,應先關閉各節點的firewalld、iptables、selinux等服務。此外,還應關閉THP,否則Hadoop的系統CPU使用率很高。操作系統后臺的khugepaged進程會一直掃描所有進程占用的內存,在可能的情況下,會把4k page交換為Huge Pages。在該過程中,對于操作中內存的各種分配活動都需要各種內存鎖,直接影響程序的內存訪問性能,且該過程對于應用是透明的,在應用層面不可控制,對于專門為4k page優化的程序來說,可能會造成隨機性能下降。同時,建議最大打開文件描述符數為10000或更多。
(3)配置同步時鐘。集群中的各節點需要安裝并啟動ntp服務,以保證集群時間的一致。在各節點安裝ntp服務后,設置master為主服務器開啟nptd服務,各子節點slave1、slave2、slave3設置同步。在master開啟ntp服務器以后,其余子節點就不需要開啟,如果發現NTP啟動之后時間并不同步,可直接使用定時手動同步的方式。
(4)配置SSH無密碼登陸。由于部署過程中,配置master節點無密碼登錄到其他節點,可通過復制master節點.ssh/id_rsa.pub至其他節點的.ssh/authorized _ keys文件中實現。在通過測試是否實現了無密碼登錄后,可將創建的秘鑰拷貝出來,因為后面ambari安裝時需要上傳該秘鑰。創建秘鑰是在隱藏文件夾/root/.ssh/下面的,所以,需要先把秘鑰拷貝到可見區域,然后拷貝到電腦上。只需保證master免密到其他節點(包含自身),不需要互通。
(5)制作本地源。在master需要先安裝httpd服務并設置為開機啟動,然后在/var/www/html根目錄下新建ambari目錄,開啟FTP服務后,將前面下載的ambari 2.6.0+ HDP 2.6.3+ HDP-UTILS 1.1.0這3個包拷貝到該目錄下,再進行解壓縮操作,并通過http∶//192.168.137.140/ambari/查看訪問master是否能成功訪問。在master安裝本地源制作相關工具后,修改文件里面的源地址,將其拷貝到/etc/yum.repos.d/,最后拷貝分發到各子節點slave1、slave2、slave3。
(6)安裝ambari-server。執行相關命令完成ambari -Server、ambari-agent安裝。ambari -Server有兩種安裝模式可供選擇,一種是默認postgresql數據庫的安裝方式,但不推薦在生產環境中使用;還有一種方式是使用MySQL等第三方數據庫安裝方式。若采用第三方數據庫形式,需要在master主機先安裝配置好MySQL。MySQL安裝成功后,需要通過mysql-connection-java.jar包建立MySQL與ambari-server的連接,并在MySQL數據庫創建ambari數據庫及數據庫的用戶名和密碼、創建hive數據庫及hive庫的用戶名和密碼、創建oozie數據庫及oozie庫的用戶名和密碼。
執 行“ambari-server start” 命 令, 登 錄http∶//192.168.137.140/8080,在“用戶名”的文本框中輸入“admin”,在“密碼”的文本框中輸入“admin”,可進入Ambari管理界面。
在“選擇安裝棧”時,指定安裝源HDP和HDP -UTILS的位置。指定相應的目標主機并選擇手動注冊主機,選擇所需要安裝的服務。本文需要安裝HDFS、YARN+MapReduce2、Zookeeper、Ambari Metrics、Hive、HBase、Mahout、Sqoop、Spark等服務。在整個過程需要設置Grafana Admin和Hive的密碼。
單擊頁面導航欄的“主界面”按鈕,在主界面可以查看集群狀態和監控信息;單擊頁面導航欄的“主界面”按鈕,在主界面可以查看集群狀態和監控信息,如圖2所示。至此,大數據基礎平臺已經部署完畢了。

圖2 Ambari平臺主界面
Ambari的用戶圖形界面非常有助于平臺管理員去管理維護和監控Hadoop集群。在Hadoop集群部署完成后,打開部署Ambari Server主機的8080端口。默認的管理員用戶名為admin,密碼為admin。登錄后進入Ambari管理的Hadoop集群主界面。該界面形象展示了集群服務的運行狀態、資源使用狀況、配置參數以及錯誤告警等。
(1)服務管理。在頁面左側的服務列表中,可以選中任何一個想要操作的服務。以HDFS為例,選擇HDFS的“概要”選項卡,顯示HDFS運行的進程信息,包括運行狀態、資源使用情況以及監控信息。
(2)主機管理。單擊頁面導航欄中“主機”按鈕,打開Ambari所管理的主機列表。進入其中一臺主機中(如master),可以看到,該主機中所有進程的運行狀態、主機資源使用情況、主機的IP地址、資源械等信息。
(3)進程管理。每個服務都由相應的進程組成,如HDFS服務,包含了NameNode、SNameNode、DateNode等進程。進入master節點中,找到需要進行管理的進程,如NameNode,該進程后面有個“Started”按鈕,表示該進程正在運行中,單擊該按鈕可以改變進程的運行狀態,如“重啟”“停止”“移動”“打開維護模式”“均衡HDFS”等。如圖3所示。
(4)配置管理。Ambari管理工具可以很方便地修改配置文件,并應用到集群的每一臺主機中,尤其是當集群中主機的數量非常多時。例如,需要修改集群HDFS文件系統,Block的復制因子(Block replication)為2,手動部署集群的情況下,則要修改每一臺主機的hdfs-site.xml配置文件。如果一個集群有幾十臺或者幾百臺主機,工作量將非常大。而Ambari集群管理工具則可以很好地應對,由集群中的Ambari Server向每臺主機中的Ambari Agent發送相關的心跳信息,由此更新每臺主機中的配置文件。如圖4所示。

圖3 主機管理界面

圖4 配置管理界面
傳統的手動安裝、修改配置文件搭建hadoop平臺的方法,雖然能大致了解hadoop基本的部署過程,但是實際生產過程中不可能采用這種全手工的方法,后續還涉及安裝HBase/Hive/Spark/Storm之類的上層應用,以及管理監控平臺,過程相對繁瑣。本文利用優秀的分布式集群管理工具Ambari部署工具來構建大數據平臺并對集群進行管理的方法,實現了自動化部署+管理監控,大大提高部署Hadoop集群的效率及成功率,適用于在高校教學環境以及大規模Hadoop節點部署場景中使用,但也存在穩定性差、部署的宿主機內存要求較高、屏蔽很多細節、難以對Hadoop生態圈各組件的深入理解等缺點。因此,也不能完全摒棄傳統方法,而是將其作為自動化方法的補充,讀者可以根據實際情況選用。