劉丹,梁麗,曾燕,張澤天,李莉
(長(zhǎng)春理工大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,長(zhǎng)春 130022)
目前,隨著國(guó)家對(duì)教育信息化重視程度不斷增加,教育資源量也迅猛增加,呈現(xiàn)爆炸式的增長(zhǎng)。傳統(tǒng)的教學(xué)資源平臺(tái)在數(shù)據(jù)檢索、存儲(chǔ)以及數(shù)據(jù)分析等均面臨著新的挑戰(zhàn)。從事教學(xué)資源平臺(tái)資源存儲(chǔ)可擴(kuò)展性及資源服務(wù)可靠性的研究工作是十分有意義的。云計(jì)算技術(shù)的出現(xiàn),為教學(xué)資源的共享提供了更好的方式,同時(shí)也有效地降低了用戶的硬件投入。利用Hadoop技術(shù)設(shè)計(jì)的云教學(xué)資源平臺(tái),具有教學(xué)資源存儲(chǔ)可擴(kuò)展、實(shí)時(shí)查詢、高并發(fā)讀寫性、用戶請(qǐng)求協(xié)調(diào)和強(qiáng)大的海量數(shù)據(jù)處理能力等優(yōu)勢(shì),更好地為資源使用者和資源管理者服務(wù)和共享平臺(tái),最終達(dá)到提升輔助教學(xué)的能力。
分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce是Hadoop平臺(tái)的兩大核心構(gòu)件。它們實(shí)現(xiàn)了數(shù)據(jù)的分布式存儲(chǔ)和處理等重要操作。HDFS實(shí)現(xiàn)對(duì)數(shù)據(jù)的分布式存儲(chǔ),具有故障檢測(cè)、流式讀取數(shù)據(jù)以及高度容錯(cuò)性等特性。它采用Master/Slave架構(gòu),由控制節(jié)點(diǎn)NameNode和數(shù)據(jù)節(jié)點(diǎn)DataNode組成。其中,NameNode節(jié)點(diǎn)部署在物理機(jī)上,DataNode節(jié)點(diǎn)部署在集群中其他物理機(jī)上。當(dāng)訪問(wèn)HDFS中的某文件時(shí),需要從NameNode獲取該文件的數(shù)據(jù)塊位置,然后再?gòu)腄ataNode中獲取所需數(shù)據(jù)。其中NameNode只負(fù)責(zé)存儲(chǔ)DataNode的信息和映射關(guān)系,并不參與實(shí)際數(shù)據(jù)塊的存儲(chǔ)和傳輸。
MapReduce是一種數(shù)據(jù)處理的計(jì)算模型,實(shí)現(xiàn)對(duì)數(shù)據(jù)的分布式處理,用于大數(shù)據(jù)集的并行計(jì)算。在這個(gè)模型中,程序員主要完成Map和Reduce兩個(gè)函數(shù)的編寫,以鍵值對(duì)的形式輸入到Map和Reduce函數(shù),并且Map的輸出就是Reduce的輸入。Reduce的輸出文件就是整個(gè)MapReduce編程模型計(jì)算的最后結(jié)果,并且存儲(chǔ)在HDFS文件系統(tǒng)中。MapRe-duce執(zhí)行流程如圖1所示。
圖1 MapReduce執(zhí)行流程
另外,HBase、Zookeeper也分別是Hadoop的子項(xiàng)目。HBase依賴于HDFS和ZooKeeper,具有分布式、可擴(kuò)展性和面向列而存儲(chǔ)等特點(diǎn),是一種非關(guān)系型數(shù)據(jù)庫(kù)。ZooKeeper是Hadoop的分布式協(xié)調(diào)服務(wù),為分布式應(yīng)用程序提供一致性服務(wù),并且采用松耦合交互方式,使得在交互過(guò)程中,參與者不需要彼此了解。
本文研究的基于Hadoop的云教學(xué)資源平臺(tái),其總體目標(biāo)在于構(gòu)建學(xué)生和老師之間溝通平臺(tái)、學(xué)生自主學(xué)習(xí)平臺(tái)。對(duì)上傳的教學(xué)資源進(jìn)行統(tǒng)一管理和分布式處理以及對(duì)平臺(tái)日志進(jìn)行分析統(tǒng)計(jì),使資源使用者和資源管理者能夠方便的利用各類資源進(jìn)行學(xué)習(xí)和交流,使管理員能夠更好的維護(hù)平臺(tái)。
云教學(xué)資源平臺(tái)中主要包含教學(xué)資源使用者、教學(xué)資源管理者和系統(tǒng)管理員三種角色。資源使用者通過(guò)在線學(xué)習(xí)、交流、問(wèn)答和教學(xué)資源的下載從而進(jìn)行課程的學(xué)習(xí);資源管理者通過(guò)資源的上傳進(jìn)行高效授課和學(xué)術(shù)交流;管理員可以添加用戶、刪除用戶以及查看日志分析統(tǒng)計(jì)結(jié)果,更好的掌握該平臺(tái)的使用情況?;贖adoop的云教學(xué)資源平臺(tái)的總體架構(gòu)如圖2所示。
圖2 云教學(xué)資源平臺(tái)架構(gòu)
該本平臺(tái)的主要功能是存儲(chǔ)并管理海量的教學(xué)資源,建立一個(gè)優(yōu)質(zhì)的教學(xué)資源環(huán)境,方便師生之間的教學(xué)互動(dòng)和反饋,其功能模塊結(jié)構(gòu)圖如圖3所示。
圖3 云教學(xué)資源管理平臺(tái)功能模塊圖
云教學(xué)資源平臺(tái)實(shí)現(xiàn)的第一步,就是要搭建其集群環(huán)境。主搭建的主要過(guò)程為:集群軟硬件環(huán)境準(zhǔn)備和架構(gòu)設(shè)計(jì)、SSH無(wú)密碼驗(yàn)證配置、Hadoop集群配置和HBase及ZooKeeper安裝配置。
在云教學(xué)資源平臺(tái)實(shí)現(xiàn)過(guò)程中,通過(guò)VMware Workstation 12 Pro創(chuàng)建了由三臺(tái)服務(wù)器所構(gòu)成的Hadoop集群。其中,一臺(tái)服務(wù)器作為master,部署HDFS的NameNode節(jié)點(diǎn)、MapReduce的JobTracker節(jié)點(diǎn)和HBase的HMaster節(jié)點(diǎn),另外兩臺(tái)服務(wù)器作為slave,部署HDFS的DataNode節(jié)點(diǎn)、MapReduce的TaskTracker節(jié)點(diǎn)和HBase的HReginServer節(jié)點(diǎn),三臺(tái)虛擬機(jī)的詳細(xì)信息如表1所示。
表1 虛擬機(jī)詳細(xì)信息
本平臺(tái)安裝的集群相關(guān)軟件如下表2所示。
表2 集群軟件詳細(xì)信息
為了保證每臺(tái)機(jī)器的主機(jī)名和IP地址能正確解析,需要在hosts文件中加上集群中其他節(jié)點(diǎn)的IP地址和主機(jī)名的映射關(guān)系,以master節(jié)點(diǎn)為例,其配置如表3所示。
表3 hosts配置文件
Hadoop集群之間通過(guò)SSH協(xié)議傳輸數(shù)據(jù)[15],從而安全的控制整個(gè)集群的開(kāi)啟和關(guān)閉。登錄master主機(jī)后,執(zhí)行ssh-keygen-t rsa命令,生成id_rsa和id_rsa.pub兩個(gè)文件。然后將id_rsa.pub文件中的內(nèi)容放到authorized_keys中。依照此原理slave主機(jī)執(zhí)行相同的操作,將id_rsa.pub拷貝到authorized_keys中。最后,使用scp生成authorized_keys的合并文件。這樣就可以實(shí)現(xiàn)SSH無(wú)密碼登錄其他節(jié)點(diǎn)。
從Apache官網(wǎng)上下載hadoop-1.1.2.tar.gz安裝包,并將其解壓到/usr/目錄下,修改配置文件hadoop-env.sh、 core-site.xml、 hdfs-site.xml、 mapred-site.xml、masters和slaves。
(1)hadoop-env.sh文件配置如表4所示。
表4 hadoop-env.sh文件配置
(2)core-site.xml文件配置如表5所示。
表5 core-site.xml文件配置
(3)hdfs-site.xml文件配置如表6所示。
表6 hdfs-site.xml文件配置
(4)mapred-site.xml文件配置如表7所示。
表7 mapred-site.xml文件配置
利用scp命令將NameNode中配置好的hadoop文件夾拷貝到另外兩個(gè)DataNode中,實(shí)現(xiàn)數(shù)據(jù)同步。
scp-r/usr/hadoop/ hadoop@host2:/home/hadoop/hadoop
scp-r/usr/hadoop/ hadoop@host3:/home/hadoop/hadoop
ZooKeeper安裝步驟如下:
(1)解壓并配置zoo.cfg:解壓安裝文件到/usr/目錄中,并拷貝一份zoo_sample.cfg文件作為zoo.cfg配置文件,如表8所示。
表8 zoo.cfg文件配置
(2)設(shè)置myid:在myid文件中,通過(guò)一正整數(shù)值,作為唯一標(biāo)示。因此將NameNode的myid文件內(nèi)容設(shè)置為0,DataNode的myid文件內(nèi)容分別設(shè)置為1,2。
(3)利用scp命令將NameNode上配置好的ZooKeeper目錄拷貝到其他兩個(gè)節(jié)點(diǎn),并修改myid文件中對(duì)應(yīng)的標(biāo)號(hào)。
scp-r/usr/zookeeper/hadoop@host2:/home/hadoop/zookeeper
scp-r/usr/zookeeper/hadoop@host3:/home/hadoop/zookeeper
(4)啟動(dòng)并查看狀態(tài):在/usr/zookeeper/bin目錄下輸入zkServer.sh start啟動(dòng)ZooKeeper集群。
HBase的安裝步驟如下:
(1)解壓并配置hbase-env.sh文件:將hbase安裝包解壓,配置安裝目錄下的conf/hbase-env.sh文件。文件配置如下:
export JAVA_HOME=/usr/java
export HBASE_MANAGES_ZK=false
(2)配置conf目錄下的hbase-site.xml,文件配置如表9所示。
表9 hbase-site.xml文件配置
(3)配置conf目錄下的regionservers文件,設(shè)置運(yùn)行HBase的具體機(jī)器,一行指定一臺(tái)機(jī)器。
(4)編輯/etc/profile文件,在文件末尾添加hbase安裝目錄。其配置過(guò)程如下:
export HBASE_HOME=/usr/hbase
export PATH=$PATH:$HBASE_HOME/bin
(5)將NameNode配置好的hbase通過(guò)scp命令拷貝到DataNode。
scp-r/usr/hbase/ hadoop@host2:/home/hadoop/
scp-r/usr/hbase/ hadoop@host3:/home/hadoop/
(6)啟動(dòng)hadoop和hbase來(lái)驗(yàn)證安裝的正確性,首先啟動(dòng)hadoop集群,然后在hdfs中新建HBase的數(shù)據(jù)存儲(chǔ)目錄,最后在hbase安裝目錄的bin目錄下輸入./start-hbase.sh啟動(dòng)hbase。用jps命令查看啟動(dòng)的進(jìn)程列表,分別如表10、11所示。
表10 NameNode進(jìn)程列表
表11 DataNode進(jìn)程列表
(7)使用hbase shell命令進(jìn)入hbase,就可以使用hbase數(shù)據(jù)庫(kù)了。
(1)資源瀏覽模塊
用戶可以通過(guò)以下模式來(lái)瀏覽資源:順序查看所有資源的詳細(xì)信息;按照資源類別分別瀏覽資源的詳細(xì)信息;根據(jù)自己的喜好內(nèi)容進(jìn)行相應(yīng)資源的查找;瀏覽最熱資源的詳細(xì)信息;瀏覽最新資源的詳細(xì)信息,如圖4所示。
圖4 教學(xué)資源資源瀏覽界面
(2)日志分析模塊
日志管理模塊可以查看每個(gè)頁(yè)面的訪問(wèn)量、頁(yè)面每小時(shí)的訪問(wèn)量以及用戶的訪問(wèn)設(shè)備等信息。在服務(wù)器上設(shè)置定時(shí)任務(wù),將平臺(tái)日志文件定時(shí)上傳到HDFS文件系統(tǒng)中,采用MapReduce計(jì)算模型對(duì)日志文件進(jìn)行分析統(tǒng)計(jì),最終以可視化界面展現(xiàn)給管理員,使管理員能夠更加輕松的管理該平臺(tái)。日志分析流程如圖5所示。
圖5 日志分布式計(jì)算流程圖
本文將新興的云計(jì)算引入高校教學(xué)中,設(shè)計(jì)并實(shí)現(xiàn)了基于Hadoop的云教學(xué)資源平臺(tái)。該平臺(tái)具有較強(qiáng)的實(shí)時(shí)性、良好的交互性,是一個(gè)開(kāi)放式的資源管理平臺(tái),能夠使教學(xué)資源使用者和教學(xué)資源管理者得到方便、快捷、穩(wěn)定的服務(wù),減輕系統(tǒng)的維護(hù)成本。這給高校存儲(chǔ)、管理資源提供了新思路和新途徑。
[1]Gantz J,Reinsel D.The digital universe in 2020:big data,bigger digital shadows,and biggest growth in the far east[M].IDC iView:IDCAnalyze the future,2012.
[2]崔園.基于HDFS的分布式存儲(chǔ)系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2016.
[3]Shvachko K,Kuang H,Radia S,et al.The Hadoop distributed file system[C].MASS Storage Systems and Technologies.IEEE,2010:1-10.
[4]Wang J,Wang T,Yang Z,et al.SEINA:A stealthy and effective internal attack in Hadoop systems[C].International Conference on Computing,NetWorking and Communications.IEEE,2017.
[5]Gupta M,Patwa F,Sandhu R.Object-tagged RBAC model for the Hadoop ecosystem[M].Data and Applications Security and Privacy XXXI,2017.
[6]Gupta M,Patwa F,Sandhu R.POSTER:Access control model for the Hadoop ecosystem[C].ACM on Symposium on AccessControlModels and Technologies.ACM,2017:125-127.