劉順
(四川信息職業技術學院信息工程系,四川 廣元628017)
近年來,隨著計算機、智能終端的普及,每天產生了大量數據,數據規模成幾何增長,為了滿足海量數據的存儲和分析,這就需要大量的計算機協同工作,隨著信息技術的飛速發展,各種網絡應用帶來了數據規模的高速增長,為了滿足海量數據存儲和分析需求,需要使大量計算機協同工作共同完成空前復雜的任務,基于這些原因Apache 軟件基金會旗下的一個開源分布式計算平臺,它就是Hadoop。該平臺是基于Java 語言開發的,核心是HDFS 和MapReduce。HDFS 具有高容錯性和高擴展性等優點,允許用戶將Hadoop 部署在價格低廉的服務器上,形成分布式系統MapReduce。用戶根本不用關心底層實現的技術,就可以實現程序的開發和調用。因此用戶通過Hadoop 可以輕松的組織計算機資源,搭建自己的分布式計算平臺,完成海量數據的處理。
Hadoop 的原理很簡單,其中最核心的就是底層的HadoopDistributedFile System(HDFS)這個文件,它分布在計算機集群內所有的節點上。HDFS(對于本文)的上一層是MapReduce引擎,通過對Hadoop 分布式計算平臺最核心的分布式文件系統HDFS、MapReduce 處理過程,這些基本涵蓋了Hadoop 分布式平臺的所有技術核心。
對于Hadoop 的集群來講,可分成兩大類角色:Master 和Salve。一個HDFS 集群是由一個NameNode 和若干個DataNode組成的。本章將從搭建環境準備以及具體的搭建、配置內容展開,對整個搭建過程進行展示。
本項目僅僅只是測試Hadoop 的相關功能,虛擬機不需要良好的性能,只要滿足最低要求即可,我們選擇的是單核CPU,1G的內存空間,一張網卡,虛擬機硬盤大小設置為10G 即可,這只是規劃空間,根據實際使用的大小占用空間。
軟件準備,關于Hadoop 的版本選擇,我選擇官方開源版本hadoop-2.6.5.tar。Hadoop 是基于Java 開發,我們在安裝hadoop前需要對虛擬機進行JDK 安裝,這里我選擇較新的版本jdk-7u80-linux-x64.tar。為方便在物理主機與虛擬機之間傳輸軟件包文件,將使用WinSCP 工具。我們在云主機上選擇VMware,該軟件擁有桌面虛擬化,在主機上需要安裝虛擬化軟件。Workstation 是功能強大的本地桌面虛擬化軟件, 用戶可以輕松的在一個系統里面實現完整的不同的操作系統和完整的虛擬網絡環境。Linux 系統鏡像選擇的是Centos7 x86_64 鏡像。
本項目采用的是虛擬機centos7 克隆多個虛擬機,這個centos7 安裝時需要帶桌面功能。從以往的經驗來看,我們在項目實施的時候可以采用安裝好一臺虛擬機,然后根據項目需求克隆多臺虛擬機,并且為了防止安裝錯誤,在一臺環境設置好了后,將“快照”,設置為模板,便于在社會錯誤的時候,返回,也可以需要新建虛擬機的時候,從之前設置的模板中恢復即可,這樣可以快速部署虛擬機,節約安裝操作系統和虛擬環境設置的時間,本次項目采用的是64 位的虛擬機。從前期的項目需求中可以看出,要使用好hadoop 集群,需要3 臺以上的計算機,最簡單的方法就是從快照中恢復3 臺計算機,并且將網絡模式設置為“NAT 模式”,便于外網的訪問,實時傳送需要的軟件,和系統補丁等等。根據項目的需求,我們需要對三臺虛擬機進行相關的配置,包括虛擬主機名字,IP 地址、網絡規劃、域名等等。
虛擬化軟件很多,我們在云主機上選擇VMware,該軟件擁有桌面虛擬化,在主機上需要安裝虛擬化軟件。Workstation 是功能強大的本地桌面虛擬化軟件, 用戶可以輕松的在一個系統里面實現完整的不同的操作系統和完整的虛擬網絡環境,我們將使用VMware Workstation Pro 新建虛擬機。
(1)選擇準備好的Centos7x86_64 鏡像進行安裝。
(2)根據引導選擇為虛擬機選擇1G 內存、20G 硬盤與NAT類型網卡。
(3)點擊完成,按著默認引導安裝后進入虛擬機使用ipa 命令查看當前主機ip 地址。
(4)通過WinSCP 軟件輸入主機IP 與用戶、密碼連接虛擬機。這里用的是root 超級用戶登錄。
(5)找到安裝包拖拽或者復制至右側等待上傳。
(6)通過mkdir 在/home/hadoop1/目錄下為hadoop 創建數據存放目錄分別為data、name、tmp。
(7)進入虛擬機查看上傳到虛擬機的安裝包,對安裝包解壓到指定目錄(/user/local 與/home/hadoop1/data)內。
(8)進入/etc/profile 文件添加環境變量,保證hadoop 安裝后能夠正常運行。
(9)環境變量配置后需重載生效。
4.1 修改主機名和配置IP 映射。該集群由最低的三臺云主機組成,將修改每臺的hosts 配置文件,編輯/etc/hosts 文件,配置主機名和IP 的映射。三臺機器的主機名通過hostname 來修改為master、slave1、slave2。
4.2 SSH 無密碼驗證配置。SSH 為建立在應用層基礎上的安全協議。目前有很多可以實現遠程登錄的軟件或者方式有很多,本項目選著SSH,利用最安全的網絡服務和遠程登錄實現對云主機的訪問,管理和配置,有可以防止信息的泄露。Hadoop 需要通過SSH 來啟動salve 列表中各臺主機的守護進程,因此SSH 是必須安裝、配置的。Hadoop 會采用依次序啟動文件conf/slaves 中記載的主機上的進程。
4.3 master 主機使用key-gen 生成密鑰后發放給slave1 與slave2 確認三次后生產密鑰執行。
4.4 下發完成后我們可以通過SSH 命令遠程登錄,分別登錄三臺驗證后退出。
4.5 配置core-site.xml 文件core-site.xml (工具模塊)括Hadoop 常用的一些工具,主要實現其他開發軟件提供相應的API 訪問調用,這些工具主要包括了FileSystem(這個是抽象系統文件)、還有系統同配置的工具,也有遠程過程調用和一些事物序列化的工具。有了這些工具,我們可以很方便的管理和配置配置core-site.xml 文件core-site.xml。
4.6 配置hdfs-site.xml 文件。hdfs-site.xml(數據存儲模塊),這個模塊非常的重要,主要是我們分布式文件系統的設置,其中需要修改的是dfs.namenode.name.dir 和dfs.datanode.data.dir,把value 填寫對應前面創建的數據與命名目錄,Hadoop 之所以能完成分布式訪問,主要是基于數據存儲管理的方式,實現高容錯和高伸縮性(在壓力測試中可以自由增加資源,提高訪問的有效性),而且對硬件的要求極低,也是受到開發者或用戶追捧的原因。還有一個原因是簡化的數據訪問方式,讓程序對數據的訪問,變得更加簡潔。
4.7 配置yarn-site.xml 文件。yarn-site.xml(作業調度+資源管理平臺)任務調度和集群資源管理。進入etc/hadoop 目錄,編輯yarn-site.xml 文件。因在虛擬機上運行hadoop,將CPU 數量要求設為1G,內存大小為2048,使其符合虛擬機的資源數量。
4.8 配置mapred-site.xml 文件。mapred-site.xml(數據處理模塊),我們將進入etc/hadoop 目錄,修改mapred-site.xml 文件,添加相應的配置,由于該模塊是數據處理模塊,需要使用YARN的大型數據集并行處理系統。通過這個計算機模型可以實現生產環境環境中,大數據的并行計算。通過數據獨立元素中鍵和值的對應關系,和功能的劃分,將大量需要計算機處理的數據進行分布式并行處理。
4.9 配置slaves 文件。slaves 文件為hadoop 集群指定的從節點主機名單,進入etc/hadoop 目錄,將slaves 文件中內容修改為slave1 與slave2。
4.10 配置hadoop-env.sh 文件。進入etc/hadoop 目錄,編輯hadoop-env.sh 將export=JAVA_HOME 改為JDK 安裝目錄。10.拷貝hadoop 文件。因整個集群配置文件需要同步,直接將master整個hadoop 文件夾使用scp 復制到slave1 和slave2 的相同目錄中的方式完成配置。
經過近幾年的發展Hadoop 在大數據應用方面得到大家的認可和廣泛的應用,主要得益于其自身的架構優勢:數據提取、變形和加載(ETL)。Hadoop 主要是用將任務細化,分解的方式傳到其他多個云主機上,再將大哥節點數據放到reduce,這就對我們的布局提高了要求,要求數據引擎盡量的考到存儲單元,對我們的數據處理直接調用存儲,有利于訪問的速度,和效率。通過并行處理加快處理速度決定了,在處理計算機節點之間,利用計算機集群完成數據的并行分配,將這些數據分配到無數的云主機節點中,實現高效率,具有高擴展的優勢。
通過在單臺物理機上搭建虛擬機的方式建立3 節點的Hadoop 集群,并進行文本詞頻測試。我感受到了Hadoop 對于數據處理的強大能力。開源的性質決定了項目的軟件成本不會太高,在較低的資源情況下也能進行較為高效、可靠的數據處理。
同樣Hadoop 也還存在許多不足。由于Hadoop 架構的原因,數據訪問延遲增加,對于低延遲生產環境的不合適使用Hadoop,僅在吞吐量上做了優化。同樣HDFS 不支持多用戶同時執行寫操作,即同一時間,只能有一個用戶執行寫操作,不適應與頻繁的文件讀寫。