陳 偉
(宿州職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,安徽 宿州 234101)
基于hadoop的高校私有云平臺(tái)建設(shè)研究
陳 偉
(宿州職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,安徽 宿州 234101)
隨著教育信息化的不斷推進(jìn),高校信息化建設(shè)在飛速發(fā)展的同時(shí)也面臨著業(yè)務(wù)系統(tǒng)混亂及海量數(shù)據(jù)存儲(chǔ)等問(wèn)題,現(xiàn)有的校園網(wǎng)絡(luò)平臺(tái)已不能滿足日益增長(zhǎng)的信息化需求.針對(duì)這些問(wèn)題,本文在研究hadoop的基礎(chǔ)上結(jié)合云計(jì)算技術(shù),提出構(gòu)建高校私有云平臺(tái),以實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)和高速處理,同時(shí)為高校各種業(yè)務(wù)系統(tǒng)提供統(tǒng)一的基礎(chǔ)設(shè)施平臺(tái).
云計(jì)算;高校;Hadoop;私有云
1.1 云計(jì)算概述
云計(jì)算開創(chuàng)了信息技術(shù)的新模式,已經(jīng)不僅僅是一種技術(shù),更是一種商業(yè)計(jì)算模型.云計(jì)算將大量的計(jì)算任務(wù)分布在虛擬化的資源池上,使用戶可以像使用水電一樣的在資源池中獲得各種資源和服務(wù),隨時(shí)獲取,按需使用,按使用付費(fèi).這里的資源池即是“云”,是虛擬化的計(jì)算資源,由大量計(jì)算服務(wù)器、存儲(chǔ)服務(wù)器、寬帶資源等構(gòu)成.云計(jì)算將這些大量的計(jì)算資源集合起來(lái)通過(guò)軟件方式實(shí)現(xiàn)資源自動(dòng)管理,無(wú)須人工干預(yù).用戶按需獲取的資源主要指信息服務(wù)、計(jì)算能力和存儲(chǔ)空間[1]57-59.
與傳統(tǒng)計(jì)算模式不同,云計(jì)算是基于互聯(lián)網(wǎng)的計(jì)算模式,數(shù)據(jù)和程序主要是保存在互聯(lián)網(wǎng)上即“云端”,與本地機(jī)器的存儲(chǔ)和計(jì)算能力等關(guān)系不大,云客戶端只要能接入互聯(lián)網(wǎng),就可以隨時(shí)隨地訪問(wèn)云端提供的服務(wù).
1.2 公有云和私有云
公有云是將服務(wù)和基礎(chǔ)設(shè)施提供給組織和企業(yè),提供公共的云計(jì)算服務(wù)和存儲(chǔ)[2]34-39.公有云把數(shù)據(jù)和應(yīng)用程序存放在公有云的平臺(tái)上,用戶可即付即用,無(wú)須進(jìn)行基礎(chǔ)設(shè)施的前期投資和建設(shè),公有云屬于開放的云平臺(tái).
私有云屬于自己搭建的云平臺(tái),可以在原有網(wǎng)絡(luò)設(shè)備基礎(chǔ)上進(jìn)行整合部署,提高資源利用率,成本較低,無(wú)須支付額外費(fèi)用,能夠根據(jù)實(shí)際需求進(jìn)行安全策略定制,實(shí)現(xiàn)系統(tǒng)的安全和可靠性,對(duì)于高校云平臺(tái)而言,私有云是很好的選擇.本文選擇使用開源的云計(jì)算系統(tǒng)Hadoop立足于現(xiàn)有的校園網(wǎng)絡(luò)設(shè)備和資源自行搭建私有云平臺(tái),既節(jié)省成本又提高了資源利用率.
1.3 教育云
云計(jì)算應(yīng)用于教育領(lǐng)域,可以在課堂教學(xué)、實(shí)驗(yàn)教學(xué)和輔助教學(xué)等諸多方面提供高效服務(wù)[3]79-86.教育云是云計(jì)算與教學(xué)結(jié)合的產(chǎn)物,是新技術(shù)應(yīng)用于教育領(lǐng)域的體現(xiàn),利用云計(jì)算技術(shù),對(duì)多種資源進(jìn)行整合優(yōu)化統(tǒng)一部署,實(shí)現(xiàn)高效率的資源共享.同時(shí),教育云也為高校辦公提供了更為高效的平臺(tái)支撐,教務(wù)、財(cái)務(wù)、總務(wù)等業(yè)務(wù)應(yīng)用可以共享基礎(chǔ)平臺(tái),實(shí)現(xiàn)資源優(yōu)化共享,通過(guò)云平臺(tái)的分布式計(jì)算機(jī)存儲(chǔ),提高數(shù)據(jù)處理效率.
Hadoop 是Apache公司的一個(gè)分布式云計(jì)算平臺(tái),作為一個(gè)開源項(xiàng)目,Hadoop為云計(jì)算研究提供了很好的平臺(tái)支撐,得到了學(xué)術(shù)界和商業(yè)界的廣泛關(guān)注,同時(shí)成為構(gòu)建私有云的主流平臺(tái)之一[4]24-29,[5]22-27.
Hadoop發(fā)展至今經(jīng)歷了第一代Hadoop1.x和第二代Hadoop2.x.Hadoop1.x主要以HDFS (Hadoop Distributed File System)分布式文檔系統(tǒng)和MapReduce (Google Map Reduce 的開源實(shí)現(xiàn))分布式平行計(jì)算框架為核心.由于Hadoop1.x在擴(kuò)展性、穩(wěn)定性、資源管理等方面存在問(wèn)題,對(duì)Hadoop1.x進(jìn)行了改進(jìn),于2010年發(fā)布了第二代Hadoop2.x,新增加了核心組件Yarn框架.
2.1 HDFS分布式文件系統(tǒng)
HDFS是Hadoop分布式文件系統(tǒng),是Hadoop生態(tài)系統(tǒng)的核心組件.HDFS分布式文件系統(tǒng)能夠運(yùn)行在廉價(jià)的硬件上,部署成本較低,能夠進(jìn)行故障檢測(cè)與恢復(fù),具有高級(jí)容錯(cuò)功能,采用流式數(shù)據(jù)訪問(wèn),注重?cái)?shù)據(jù)訪問(wèn)的高吞吐量,能夠處理大數(shù)據(jù)集.
在Hadoop2.x中HDFS與之前有很大的變化,Hadoop1.x中HDFS包含一個(gè)主節(jié)點(diǎn)NameNode和若干個(gè)子從節(jié)點(diǎn)DataNode,新版本中HDFS的管理節(jié)點(diǎn)NameNode可以以集群的方式同時(shí)部署多個(gè),并且互相獨(dú)立,解決了單點(diǎn)故障問(wèn)題,增強(qiáng)了NameNodes的水平擴(kuò)展能力和高可用性.NameNode節(jié)點(diǎn)負(fù)責(zé)管理元數(shù)據(jù),存儲(chǔ)文件系統(tǒng)的名字空間及數(shù)據(jù)塊到具體DateNode的映射.節(jié)點(diǎn)DataNode作為集群的存儲(chǔ)節(jié)點(diǎn)需要在所有的NameNode中進(jìn)行注冊(cè),定時(shí)向NameNode反饋信息,并且處理NameNode下達(dá)的操作指令,負(fù)責(zé)實(shí)際數(shù)據(jù)的存儲(chǔ).HDFS分布式文件系統(tǒng)架構(gòu)如圖1所示.
圖1 HDFS分布式文件系統(tǒng)
HDFS系統(tǒng)架構(gòu)主要包括兩部分:命名空間Namespace 和 塊存儲(chǔ)Block Storage.Block Pool為存儲(chǔ)塊池,是塊的集合,每個(gè)Block Pool與一個(gè)Namespace相對(duì)應(yīng),屬于同一Namespace的一組塊,Block Pool之間是獨(dú)立的互不影響,DataNode節(jié)點(diǎn)為所有的Block Pool存儲(chǔ)塊.對(duì)于hadoop來(lái)說(shuō),NameNode的作用至關(guān)重要,好比計(jì)算機(jī)的CPU,一旦停止工作整個(gè)集群系統(tǒng)就會(huì)癱瘓且不可恢復(fù).為了保證集群正常運(yùn)轉(zhuǎn),在HDFS中通過(guò)同時(shí)啟動(dòng)兩個(gè)NameNode來(lái)解決單點(diǎn)故障問(wèn)題,這兩個(gè)NameNode并不是同時(shí)工作,而是把一個(gè)設(shè)為工作(Active)模式,另個(gè)設(shè)為待命的(Standby)模式.系統(tǒng)工作過(guò)程中,兩個(gè)NameNode要進(jìn)行數(shù)據(jù)的同步,DataNode向兩個(gè)NameNode同時(shí)反饋塊的信息,并通過(guò)Zookeeper來(lái)進(jìn)行心跳監(jiān)測(cè)監(jiān)控,當(dāng)處于工作模式的NameNode出現(xiàn)宕機(jī)失效時(shí),可以快速切換到待命的NameNode,保證系統(tǒng)正常且數(shù)據(jù)不會(huì)丟失.
2.2 MapReduce分布式計(jì)算(MR2)
MapReduce是Hadoop中的并行計(jì)算框架,是一種編程模型,用于海量數(shù)據(jù)分布式計(jì)算.目前在Hadoop2.x中使用的是第二代MapReduce框架(MR2).MR2包括3部分內(nèi)容:編程模型、數(shù)據(jù)處理引擎和運(yùn)行時(shí)環(huán)境.編程模型是把輸入數(shù)據(jù)解析為鍵值對(duì),通過(guò)Map()函數(shù),映射成新的鍵值對(duì),再通過(guò)Reduce()函數(shù)將key相同的value進(jìn)行規(guī)約處理;數(shù)據(jù)處理引擎由MapTask和ReduceTask組成,負(fù)責(zé)Map階段和Reduce階段的數(shù)據(jù)處理;運(yùn)行時(shí)環(huán)境由資源管理系統(tǒng)YARN和作業(yè)控制進(jìn)程ApplicationMaster構(gòu)成,其中,YARN負(fù)責(zé)資源管理和調(diào)度,而ApplicationMaster僅負(fù)責(zé)一個(gè)作業(yè)的管理.
2.3 YARN框架
Yarn是分布式的資源管理系統(tǒng),用于資源管理和作業(yè)的調(diào)度,是為了彌補(bǔ)第一代MapReduce框架的不足而產(chǎn)生的新框架.Yarn具有通用性,不僅可以用于MapReduce計(jì)算框架還可以作為其他框架如Spark等的管理平臺(tái).Yarn的架構(gòu)如圖2所示.
ResourceManager(RM)在整個(gè)集群中只有一個(gè),作為全局資源管理器,負(fù)責(zé)系統(tǒng)全部資源的管理和調(diào)度,其中包括調(diào)度器(Scheduler)和應(yīng)用管理器(Applications Manager).Scheduler是RM的核心,主要負(fù)責(zé)給應(yīng)用程序調(diào)配資源,Applications Manager負(fù)責(zé)應(yīng)用程序監(jiān)控、狀態(tài)跟蹤、失敗任務(wù)重啟等工作.
NodeManager(NM)是每個(gè)節(jié)點(diǎn)上的管理器,負(fù)責(zé)監(jiān)控節(jié)點(diǎn)資源情況,并發(fā)送給RM,同時(shí)負(fù)責(zé)執(zhí)行來(lái)自AM的任務(wù)請(qǐng)求.
ApplicationMaster(AM)是框架特殊的庫(kù),負(fù)責(zé)與RM的Scheduler協(xié)商進(jìn)行資源的申請(qǐng),并且與NM一塊監(jiān)控資源使用及任務(wù)執(zhí)行情況.
Containe是資源的分配容器,包括cpu,內(nèi)存,磁盤等屬性.
圖2中Yarn的工作流程可描述如下:
RM通過(guò)NM定時(shí)搜集Node的信息;Client向RM提交計(jì)算作業(yè);RM在一個(gè)Node上產(chǎn)生一個(gè)AM;AM向RM申請(qǐng)計(jì)算資源,RM根據(jù)資源狀況以及分配策略,分配合適的資源(container)給AM;AM得到資源后,管理這些資源,完成計(jì)算任務(wù).
3.1 高校私有云架構(gòu)模型
高校私有云架構(gòu)模型如圖3所示.
圖2 Yarn架構(gòu)圖
圖3 高校私有云平臺(tái)計(jì)算模型
用戶層是用戶與云平臺(tái)進(jìn)行交互的接口,用戶通過(guò)Web瀏覽器向平臺(tái)發(fā)送請(qǐng)求,平臺(tái)通過(guò)用戶驗(yàn)證后返回信息給用戶;業(yè)務(wù)邏輯層主要用于Web服務(wù)器程序和存儲(chǔ)系統(tǒng)之間的通訊,與底層集群建立連接,其功能主要包括用戶管理、任務(wù)管理、資源管理等;基礎(chǔ)設(shè)施層是整個(gè)云平臺(tái)應(yīng)用的基礎(chǔ)環(huán)境,由多臺(tái)廉價(jià)的計(jì)算機(jī)組成,屬于系統(tǒng)的底層部分,通過(guò)Hadoop集群構(gòu)建,為系統(tǒng)提供分布式存儲(chǔ)和海量資源數(shù)據(jù)計(jì)算.下面就通過(guò)部署基礎(chǔ)設(shè)施層來(lái)對(duì)基于Hadoop的高校私有云平臺(tái)進(jìn)行研究.
3.2 hadoop基本平臺(tái)搭建
hadoop平臺(tái)有3種搭建方式,分別是單機(jī)模式安裝、偽分布式安裝、全分布式安裝.本文采用全分布式安裝方式,通過(guò)3臺(tái)普通機(jī)器進(jìn)行模擬集群部署.下面介紹集群部署步驟.
3.2.1 集群安裝配置
集群安裝采用虛擬機(jī)的方式進(jìn)行,虛擬機(jī)軟件采用VMware 9.0.2版本,虛擬機(jī)上安裝3個(gè)客戶機(jī)系統(tǒng)作為集群計(jì)算節(jié)點(diǎn),操作系統(tǒng)安裝CentOS-6.8,集群節(jié)點(diǎn)主機(jī)名和IP分配如表1.
表1 集群節(jié)點(diǎn)主機(jī)名和IP分配表
為了保證集群中每臺(tái)機(jī)器能夠相互訪問(wèn),需要以下操作:
1) 關(guān)閉防火墻:在每臺(tái)主機(jī)上執(zhí)行service iptable stop和chkconfig iptables off兩條命令.
2) 關(guān)閉selinux:通過(guò)修改配置文件/etc/sysconfig/selinux/文件實(shí)現(xiàn),把文件中SELINUX值修改為disabled,重啟系統(tǒng)生效.
3) 修改每臺(tái)主機(jī)/etc/hosts文件,設(shè)置主機(jī)名和IP地址的對(duì)應(yīng)關(guān)系,文件內(nèi)容修改如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.128 hadoop01.cw
192.168.1.129 hadoop02.cw
192.168.1.130 hadoop03.cw
3.2.2 配置SSH實(shí)現(xiàn)節(jié)點(diǎn)無(wú)密碼登陸
1) 在hadoop01上生成密鑰
[root@hadoop01 ~]# ssh-keygen-t rsa
2) 拷貝密鑰到其他機(jī)器
[root@hadoop01 ~]# ssh-copy-id 192.168.1.129
[root@hadoop01 ~]# ssh-copy-id 192.168.1.130
同樣方法在hadoop02和hadoop03上生成密鑰并拷貝到其他機(jī)器,即可實(shí)現(xiàn)3臺(tái)機(jī)器無(wú)密碼登陸.
3.2.3 Jdk環(huán)境配置
由于Hadoop是采用Java開發(fā)的,需要在每臺(tái)主機(jī)安裝JDK的環(huán)境.
1)在oracle官網(wǎng)下載jkd安裝包jdk-8u121-linux-i586.gz,解壓至/home/softwares/目錄.
2)配置環(huán)境變量,在/etc/profile文件尾部添加以下語(yǔ)句.
export JAVA_HOME=/home/softwares/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
3)刷新配置,使環(huán)境變量生效,命令為source /etc/profile.
4)通過(guò)命令java -version驗(yàn)證是否安裝成功,若顯示java version "1.8.0_121"等信息則說(shuō)明安裝成功.
5)使用scp命令發(fā)送jdk文件至其他機(jī)器,同時(shí)在每臺(tái)機(jī)器配置環(huán)境變量.
3.3 hadoop安裝與配置
3.3.1 下載安裝
在hadoop01上下載hadoop-2.7.3.tar.gz,解壓縮至/home/softwares/目錄即可.
3.3.2 配置文件修改
Hadoop配置文件路徑為/home/softwares/hadoop-2.7.3/etc/hadoop,通過(guò)以下步驟進(jìn)行配置文件的修改.
1)修改hadoop-env.sh文件,這是hadoop 的環(huán)境變量文件,需要設(shè)置JDK的安裝位置,該文件第25行配置為export JAVA_HOME=/home/softwares/jdk1.8.0_121.
2)修改文件 core-site.xml 配置如表2.
表2 core-site.xml配置信息
3)修改文件 hdfs-site.xml 配置如表3.
表3 hdfs-site.xml 配置信息
4)修改 mapred-site.xml 配置文件 配置如表4.
表4 mapred-site.xml 配置信息
5)修改Yarn-site.xml 配置文件 配置如表5.
表5 Yarn-site.xml配置信息
6)修改slaves如下
192.168.1.128
192.168.1.129
192.168.1.130
3.3.3 hadoop啟動(dòng)
1)格式化hadoop,命令如下:
[root@hadoop01 hadoop-2.7.3]# bin/hadoop namenode -format
2)發(fā)送hadoop01主機(jī)上hadoop文件至其他兩臺(tái)機(jī)器,如下操作:
[root@hadoop01 softwares]# scp -r hadoop-2.7.3/ 192.168.1.129:/home/softwares/
[root@hadoop01 softwares]# scp -r hadoop-2.7.3/ 192.168.1.130:/home/softwares/
3)啟動(dòng)相關(guān)服務(wù)
由上可知,namenode節(jié)點(diǎn)配置在192.168.1.128即hadoop01上,在此主機(jī)上運(yùn)行sbin/start-dfs.sh命令啟動(dòng)hadoop,運(yùn)行sbin/mr-jobhistory-daemon.sh start historyserver啟動(dòng)jobhistory.在hadoop02上運(yùn)行sbin/start-yarn.sh啟動(dòng)yarn,最后可通過(guò)jps命令查看每臺(tái)主機(jī)運(yùn)行進(jìn)程,結(jié)果如下:
4210 Jps
3938 NodeManager
此時(shí)通過(guò)瀏覽器也可進(jìn)行web頁(yè)面查看,如在瀏覽器輸入地址http://192.168.1.128:50070查看hdfs的namenode運(yùn)行情況,輸入http://192.168.1.129:8088查看yarn運(yùn)行情況[6]60-72.
3.3.4 測(cè)試與分析
以WordCount詞頻統(tǒng)計(jì)為例,測(cè)試系統(tǒng)是否運(yùn)行正常,包括HDFS存儲(chǔ)及MapReduce分布式計(jì)算.
1)在/home/datas下創(chuàng)建文本文件test.txt,內(nèi)容為“hello world this is a test this is a world a a is a world”.
2)上傳test.txt文件至HDFS,命令為bin/hdfs dfs -put /home/test.txt /chenwei-test.在瀏覽器輸入http://192.168.1.128:50070查看hdfs中上傳文件情況,如圖4所示.
圖4 HDFS文件系統(tǒng)目錄
3)執(zhí)行詞頻統(tǒng)計(jì)命令WordCount,把統(tǒng)計(jì)結(jié)果放入/chenwei-test-out中,命令為 bin/hadoop jar share/hadoop/MapReduce/hadoop-MapReduce-examples-2.7.3.jar wordcount / chenwei-test / chenwei-test-out.打開chenwei-test-out目錄可以看到part-r-00000文件,即為統(tǒng)計(jì)結(jié)果.
4)執(zhí)行bin/hdfs dfs -cat /chenwei-test-out/part-r-00000查看詞頻統(tǒng)計(jì)結(jié)果如圖5.
圖5 詞頻統(tǒng)計(jì)結(jié)果
從以上測(cè)試來(lái)看,HDFS分布式文件系統(tǒng)能夠正常上傳存儲(chǔ)文件,yarn框架能夠進(jìn)行任務(wù)的調(diào)度和管理,在yarn框架上實(shí)現(xiàn)了MapReduce分布式計(jì)算,集群部署完全能夠正確運(yùn)行.至此,基于hadoop私有云平臺(tái)搭建成功.
云計(jì)算技術(shù)在教育領(lǐng)域中的應(yīng)用,促進(jìn)了教育信息化的發(fā)展.本文通過(guò)基于hadoop高校私有云平臺(tái)的構(gòu)建,為高校信息化建設(shè)提供了基礎(chǔ)平臺(tái),可以把原有業(yè)務(wù)系統(tǒng)移植過(guò)來(lái),實(shí)現(xiàn)統(tǒng)一管理和部署,還可以在此平臺(tái)基礎(chǔ)上開發(fā)相關(guān)應(yīng)用服務(wù)高校、服務(wù)師生,如教學(xué)平臺(tái)、資源管理平臺(tái)等,這將有待于進(jìn)一步深入研究.
[1] 劉 鵬. 云計(jì)算(第二版)[M]. 北京:電子工業(yè)出版社,2011.
[2] 薛 嘉. 云計(jì)算下教學(xué)互動(dòng)平臺(tái)的探究和設(shè)計(jì)[D].成都:西南交通大學(xué),2014.
[3] 虛擬化與云計(jì)算小組. 云計(jì)算實(shí)踐之道:戰(zhàn)略藍(lán)圖與技術(shù)架構(gòu)[M].北京:電子工業(yè)出版社,2011.
[4] 翟永東. Hadoop分布式文件系統(tǒng)(HDFS)可靠性的研究與優(yōu)化[D].武漢:華中科技大學(xué),2011.
[5] 饒丹鵑. 多媒體教學(xué)資源云共享平臺(tái)設(shè)計(jì)研究[D].南京:南京師范大學(xué),2013.
[6] 劉 鵬. 實(shí)戰(zhàn)Hadoop開啟通向云計(jì)算的捷徑[M].北京:電子工業(yè)出版社,2011.
ResearchontheConstructionofPrivateCloudPlatforminCollegesBasedonHadoop
CHEN Wei
(SuzhouVocationalTechnicalCollege,Suzhou234101,China)
With the advancement of educational informatization, the informatization construction in colleges has developed rapidly. Meanwhile, it is facing many problems such as chaos in business system and mass data storage issues, etc. Thus, the existing campus network platforms cannot meet the growing demands for informatization. To solve these problems, the author proposes to build a private cloud platform basing on researches on Hadoop which is combined with cloud computing technology to achieve mass data storage and high-speed processing as well as to provide a unified infrastructure platform for business systems in colleges.
cloud computing; Colleges; Hadoop; private cloud platform
G647.24;TP391.6
A
1671-8127(2017)05-0089-06
2017-08-02
安徽省高校自然科學(xué)研究重點(diǎn)項(xiàng)目“基于云平臺(tái)的職業(yè)教育資源管理研究”(KJ2016A778);安徽省高校優(yōu)秀青年人才支持計(jì)劃重點(diǎn)項(xiàng)目“云計(jì)算環(huán)境下高職教育教學(xué)平臺(tái)的構(gòu)建”(gxyqZD2016586);安徽省高校自然科學(xué)研究重點(diǎn)項(xiàng)目“智能算法在群體動(dòng)畫制作中的應(yīng)用與創(chuàng)新研究”(KJ2016A781);安徽省質(zhì)量工程項(xiàng)目“基于Blackboard的高職程序設(shè)計(jì)類課程翻轉(zhuǎn)課堂教學(xué)模式研究——以ASP.NET課程為例”(2016jyxm1039)
陳 偉(1982- ),男,安徽阜陽(yáng)人,宿州職業(yè)技術(shù)學(xué)院講師,碩士,主要從事計(jì)算機(jī)網(wǎng)絡(luò)研究。
[責(zé)任編輯冰竹]