劉丹,梁麗,曾燕,張澤天,李莉
(長春理工大學(xué) 計算機科學(xué)技術(shù)學(xué)院,長春 130022)
目前,隨著國家對教育信息化重視程度不斷增加,教育資源量也迅猛增加,呈現(xiàn)爆炸式的增長。傳統(tǒng)的教學(xué)資源平臺在數(shù)據(jù)檢索、存儲以及數(shù)據(jù)分析等均面臨著新的挑戰(zhàn)。從事教學(xué)資源平臺資源存儲可擴展性及資源服務(wù)可靠性的研究工作是十分有意義的。云計算技術(shù)的出現(xiàn),為教學(xué)資源的共享提供了更好的方式,同時也有效地降低了用戶的硬件投入。利用Hadoop技術(shù)設(shè)計的云教學(xué)資源平臺,具有教學(xué)資源存儲可擴展、實時查詢、高并發(fā)讀寫性、用戶請求協(xié)調(diào)和強大的海量數(shù)據(jù)處理能力等優(yōu)勢,更好地為資源使用者和資源管理者服務(wù)和共享平臺,最終達到提升輔助教學(xué)的能力。
分布式文件系統(tǒng)HDFS和分布式計算框架MapReduce是Hadoop平臺的兩大核心構(gòu)件。它們實現(xiàn)了數(shù)據(jù)的分布式存儲和處理等重要操作。HDFS實現(xiàn)對數(shù)據(jù)的分布式存儲,具有故障檢測、流式讀取數(shù)據(jù)以及高度容錯性等特性。它采用Master/Slave架構(gòu),由控制節(jié)點NameNode和數(shù)據(jù)節(jié)點DataNode組成。其中,NameNode節(jié)點部署在物理機上,DataNode節(jié)點部署在集群中其他物理機上。當訪問HDFS中的某文件時,需要從NameNode獲取該文件的數(shù)據(jù)塊位置,然后再從DataNode中獲取所需數(shù)據(jù)。其中NameNode只負責(zé)存儲DataNode的信息和映射關(guān)系,并不參與實際數(shù)據(jù)塊的存儲和傳輸。
MapReduce是一種數(shù)據(jù)處理的計算模型,實現(xiàn)對數(shù)據(jù)的分布式處理,用于大數(shù)據(jù)集的并行計算。在這個模型中,程序員主要完成Map和Reduce兩個函數(shù)的編寫,以鍵值對的形式輸入到Map和Reduce函數(shù),并且Map的輸出就是Reduce的輸入。Reduce的輸出文件就是整個MapReduce編程模型計算的最后結(jié)果,并且存儲在HDFS文件系統(tǒng)中。MapRe-duce執(zhí)行流程如圖1所示。
圖1 MapReduce執(zhí)行流程
另外,HBase、Zookeeper也分別是Hadoop的子項目。HBase依賴于HDFS和ZooKeeper,具有分布式、可擴展性和面向列而存儲等特點,是一種非關(guān)系型數(shù)據(jù)庫。ZooKeeper是Hadoop的分布式協(xié)調(diào)服務(wù),為分布式應(yīng)用程序提供一致性服務(wù),并且采用松耦合交互方式,使得在交互過程中,參與者不需要彼此了解。
本文研究的基于Hadoop的云教學(xué)資源平臺,其總體目標在于構(gòu)建學(xué)生和老師之間溝通平臺、學(xué)生自主學(xué)習(xí)平臺。對上傳的教學(xué)資源進行統(tǒng)一管理和分布式處理以及對平臺日志進行分析統(tǒng)計,使資源使用者和資源管理者能夠方便的利用各類資源進行學(xué)習(xí)和交流,使管理員能夠更好的維護平臺。
云教學(xué)資源平臺中主要包含教學(xué)資源使用者、教學(xué)資源管理者和系統(tǒng)管理員三種角色。資源使用者通過在線學(xué)習(xí)、交流、問答和教學(xué)資源的下載從而進行課程的學(xué)習(xí);資源管理者通過資源的上傳進行高效授課和學(xué)術(shù)交流;管理員可以添加用戶、刪除用戶以及查看日志分析統(tǒng)計結(jié)果,更好的掌握該平臺的使用情況。基于Hadoop的云教學(xué)資源平臺的總體架構(gòu)如圖2所示。
圖2 云教學(xué)資源平臺架構(gòu)
該本平臺的主要功能是存儲并管理海量的教學(xué)資源,建立一個優(yōu)質(zhì)的教學(xué)資源環(huán)境,方便師生之間的教學(xué)互動和反饋,其功能模塊結(jié)構(gòu)圖如圖3所示。
圖3 云教學(xué)資源管理平臺功能模塊圖
云教學(xué)資源平臺實現(xiàn)的第一步,就是要搭建其集群環(huán)境。主搭建的主要過程為:集群軟硬件環(huán)境準備和架構(gòu)設(shè)計、SSH無密碼驗證配置、Hadoop集群配置和HBase及ZooKeeper安裝配置。
在云教學(xué)資源平臺實現(xiàn)過程中,通過VMware Workstation 12 Pro創(chuàng)建了由三臺服務(wù)器所構(gòu)成的Hadoop集群。其中,一臺服務(wù)器作為master,部署HDFS的NameNode節(jié)點、MapReduce的JobTracker節(jié)點和HBase的HMaster節(jié)點,另外兩臺服務(wù)器作為slave,部署HDFS的DataNode節(jié)點、MapReduce的TaskTracker節(jié)點和HBase的HReginServer節(jié)點,三臺虛擬機的詳細信息如表1所示。
表1 虛擬機詳細信息
本平臺安裝的集群相關(guān)軟件如下表2所示。
表2 集群軟件詳細信息
為了保證每臺機器的主機名和IP地址能正確解析,需要在hosts文件中加上集群中其他節(jié)點的IP地址和主機名的映射關(guān)系,以master節(jié)點為例,其配置如表3所示。
表3 hosts配置文件
Hadoop集群之間通過SSH協(xié)議傳輸數(shù)據(jù)[15],從而安全的控制整個集群的開啟和關(guān)閉。登錄master主機后,執(zhí)行ssh-keygen-t rsa命令,生成id_rsa和id_rsa.pub兩個文件。然后將id_rsa.pub文件中的內(nèi)容放到authorized_keys中。依照此原理slave主機執(zhí)行相同的操作,將id_rsa.pub拷貝到authorized_keys中。最后,使用scp生成authorized_keys的合并文件。這樣就可以實現(xiàn)SSH無密碼登錄其他節(jié)點。
從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文件夾拷貝到另外兩個DataNode中,實現(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文件中,通過一正整數(shù)值,作為唯一標示。因此將NameNode的myid文件內(nèi)容設(shè)置為0,DataNode的myid文件內(nèi)容分別設(shè)置為1,2。
(3)利用scp命令將NameNode上配置好的ZooKeeper目錄拷貝到其他兩個節(jié)點,并修改myid文件中對應(yīng)的標號。
scp-r/usr/zookeeper/hadoop@host2:/home/hadoop/zookeeper
scp-r/usr/zookeeper/hadoop@host3:/home/hadoop/zookeeper
(4)啟動并查看狀態(tài):在/usr/zookeeper/bin目錄下輸入zkServer.sh start啟動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è)置運行HBase的具體機器,一行指定一臺機器。
(4)編輯/etc/profile文件,在文件末尾添加hbase安裝目錄。其配置過程如下:
export HBASE_HOME=/usr/hbase
export PATH=$PATH:$HBASE_HOME/bin
(5)將NameNode配置好的hbase通過scp命令拷貝到DataNode。
scp-r/usr/hbase/ hadoop@host2:/home/hadoop/
scp-r/usr/hbase/ hadoop@host3:/home/hadoop/
(6)啟動hadoop和hbase來驗證安裝的正確性,首先啟動hadoop集群,然后在hdfs中新建HBase的數(shù)據(jù)存儲目錄,最后在hbase安裝目錄的bin目錄下輸入./start-hbase.sh啟動hbase。用jps命令查看啟動的進程列表,分別如表10、11所示。
表10 NameNode進程列表
表11 DataNode進程列表
(7)使用hbase shell命令進入hbase,就可以使用hbase數(shù)據(jù)庫了。
(1)資源瀏覽模塊
用戶可以通過以下模式來瀏覽資源:順序查看所有資源的詳細信息;按照資源類別分別瀏覽資源的詳細信息;根據(jù)自己的喜好內(nèi)容進行相應(yīng)資源的查找;瀏覽最熱資源的詳細信息;瀏覽最新資源的詳細信息,如圖4所示。
圖4 教學(xué)資源資源瀏覽界面
(2)日志分析模塊
日志管理模塊可以查看每個頁面的訪問量、頁面每小時的訪問量以及用戶的訪問設(shè)備等信息。在服務(wù)器上設(shè)置定時任務(wù),將平臺日志文件定時上傳到HDFS文件系統(tǒng)中,采用MapReduce計算模型對日志文件進行分析統(tǒng)計,最終以可視化界面展現(xiàn)給管理員,使管理員能夠更加輕松的管理該平臺。日志分析流程如圖5所示。
圖5 日志分布式計算流程圖
本文將新興的云計算引入高校教學(xué)中,設(shè)計并實現(xiàn)了基于Hadoop的云教學(xué)資源平臺。該平臺具有較強的實時性、良好的交互性,是一個開放式的資源管理平臺,能夠使教學(xué)資源使用者和教學(xué)資源管理者得到方便、快捷、穩(wěn)定的服務(wù),減輕系統(tǒng)的維護成本。這給高校存儲、管理資源提供了新思路和新途徑。
[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的分布式存儲系統(tǒng)的研究與實現(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.