胡玉雪, 徐勛光, 王海燕, 沙 灜,b
(華中農(nóng)業(yè)大學(xué)a.信息學(xué)院;b.湖北省農(nóng)業(yè)大數(shù)據(jù)工程技術(shù)研究中心,武漢 430070)
為適應(yīng)大數(shù)據(jù)技術(shù)的發(fā)展和應(yīng)用、滿足大數(shù)據(jù)產(chǎn)業(yè)對人才的需求,加快人才培養(yǎng)、鼓勵(lì)高效優(yōu)化大數(shù)據(jù)學(xué)科專業(yè)設(shè)置、加大相關(guān)專業(yè)建設(shè)力度是必要保障措施[1]。教育部于2015 ~2020 年分6 批(教高函[2016]2 號、教高函[2017]2 號、教高函[2018]4 號、教高函[2019]7 號、教高函[2020]2 號、教高函[2021]1 號)共審批同意730 所高校開設(shè)數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)本科專業(yè)(以下簡稱大數(shù)據(jù)專業(yè))。
在大數(shù)據(jù)專業(yè)教學(xué)中,實(shí)驗(yàn)教學(xué)是系統(tǒng)培養(yǎng)學(xué)生專業(yè)技術(shù)能力的重要手段,實(shí)驗(yàn)教學(xué)質(zhì)量的高低很大程度上取決于實(shí)驗(yàn)平臺的建設(shè)水平。實(shí)踐教學(xué)中,大數(shù)據(jù)的實(shí)驗(yàn)環(huán)境一般要求運(yùn)行在Linux 上,主流的大數(shù)據(jù)工具——Hadoop生態(tài)集群采用分布式架構(gòu),配置復(fù)雜、操作門檻高[2],學(xué)生很難自主搭建Hadoop 集群,也難以接觸真正的分布式集群。
針對上述問題,充分利用實(shí)驗(yàn)室已有設(shè)備和平臺資源,綜合考慮大數(shù)據(jù)實(shí)驗(yàn)教學(xué)目標(biāo)、行業(yè)技能要求、建設(shè)成本等因素,提出使用DIND(Docker in Docker,容器嵌套技術(shù))為大數(shù)據(jù)實(shí)驗(yàn)教學(xué)提供了全流程的實(shí)驗(yàn)平臺,同時(shí)提供交互式的可視化操作界面,教師可根據(jù)教學(xué)需要設(shè)計(jì)實(shí)驗(yàn)文檔,滿足實(shí)驗(yàn)教學(xué)需求,進(jìn)一步提高學(xué)生的課程學(xué)習(xí)效果。
國內(nèi)高校在大數(shù)據(jù)專業(yè)建設(shè)、實(shí)驗(yàn)教學(xué)體系、實(shí)驗(yàn)教學(xué)方案、特別是實(shí)驗(yàn)教學(xué)平臺建設(shè)上做了很多研究和探索[3-11],這些實(shí)驗(yàn)平臺的建設(shè)方式主要分為3 種:
(1)使用Linux虛擬機(jī)搭建Hadoop 集群[3-4]。文獻(xiàn)[3]中提出在Linux 虛擬機(jī)下安裝Hadoop +Spark集群來構(gòu)建大數(shù)據(jù)實(shí)驗(yàn)教學(xué)環(huán)境,并詳細(xì)描述了Hadoop和Spark 的安裝和配置。文獻(xiàn)[4]中利用Linux虛擬機(jī)構(gòu)建Hadoop 單機(jī)大數(shù)據(jù)實(shí)驗(yàn)平臺,使用平臺進(jìn)行詞頻統(tǒng)計(jì)實(shí)驗(yàn)。
(2)使用高性能硬件設(shè)備自建大數(shù)據(jù)實(shí)驗(yàn)平臺[5-7]。文獻(xiàn)[5]中設(shè)計(jì)實(shí)現(xiàn)了在線大數(shù)據(jù)實(shí)驗(yàn)平臺,平臺分為“Web交互式開發(fā)環(huán)境”和“大數(shù)據(jù)存儲計(jì)算集群”兩個(gè)部分,學(xué)生通過Web 頁面可隨時(shí)調(diào)用API進(jìn)大數(shù)據(jù)集群實(shí)驗(yàn)。文獻(xiàn)[6]中采用B/S 架構(gòu)建設(shè)基于Hadoop和Spark 的計(jì)算框架的在線大數(shù)據(jù)實(shí)驗(yàn)平臺,用戶通過瀏覽器進(jìn)行訪問提交任務(wù)。文獻(xiàn)[7]中以校企合作方式設(shè)計(jì)大數(shù)據(jù)課程實(shí)驗(yàn)平臺、項(xiàng)目案例,學(xué)生可以通過遠(yuǎn)程方式連接實(shí)驗(yàn)平臺操作實(shí)驗(yàn)。
(3)使用Docker 容器技術(shù)構(gòu)建大數(shù)據(jù)實(shí)驗(yàn)平臺[8-11]。文獻(xiàn)[8]中采用OpenStack 和Docker 混合架構(gòu)建立大數(shù)據(jù)云實(shí)驗(yàn)室,師生在進(jìn)行大數(shù)據(jù)實(shí)驗(yàn)時(shí),直接使用打包好的鏡像文件即可。文獻(xiàn)[9]中利用Docker容器技術(shù)在單機(jī)上構(gòu)建Hadoop 集群,運(yùn)行封裝有Hadoop 的Docker 容器即可快速部署Hadoop 集群,進(jìn)行實(shí)驗(yàn)操作。文獻(xiàn)[10]中采用B/S 架構(gòu),在Linux系統(tǒng)上安裝Docker,用戶通過Web 訪問、加載鏡像、啟動(dòng)容器、啟動(dòng)大數(shù)據(jù)實(shí)驗(yàn)的應(yīng)用即可進(jìn)行大數(shù)據(jù)實(shí)驗(yàn)。文獻(xiàn)[11]中采用Docker、Kubernetes、Rancher、JumpServer等開源組件快速部署構(gòu)建大數(shù)據(jù)實(shí)驗(yàn)平臺,用戶利用瀏覽器登錄堡壘機(jī)訪問大數(shù)據(jù)集群進(jìn)行實(shí)驗(yàn)。
可以看出,各高校結(jié)合實(shí)驗(yàn)室建設(shè)情況、綜合考慮各方面因素,在大數(shù)據(jù)實(shí)驗(yàn)平臺的搭建形式、方法上不盡相同,都能較好地滿足各自實(shí)驗(yàn)教學(xué)的需求,下面對3 種實(shí)驗(yàn)平臺搭建方式的特點(diǎn)進(jìn)行分析[12]。
(1)使用Linux 虛擬機(jī)搭建Hadoop 集群。優(yōu)勢是充分利用已有實(shí)驗(yàn)室資源、建設(shè)成本低;缺點(diǎn)是分配到每個(gè)學(xué)生的Linux資源有限,配置復(fù)雜,機(jī)房復(fù)用性差,學(xué)生不能隨時(shí)隨地進(jìn)行實(shí)驗(yàn)。
(2)使用高性能硬件設(shè)備自建大數(shù)據(jù)實(shí)驗(yàn)平臺?;谠骗h(huán)境搭建Hadoop集群,或通過校企合作共建大數(shù)據(jù)實(shí)驗(yàn)平臺,優(yōu)勢實(shí)驗(yàn)平臺和實(shí)際生產(chǎn)環(huán)境高度一致,集成化Web 頁面可更好適應(yīng)環(huán)境需求,能隨時(shí)隨地在云端調(diào)用API進(jìn)行大數(shù)據(jù)實(shí)驗(yàn);缺點(diǎn)成本高,學(xué)生使用不靈活,無法自主搭建集群、修改集群配置。
(3)使用Docker容器技術(shù)構(gòu)建大數(shù)據(jù)實(shí)驗(yàn)平臺。優(yōu)勢是集群部署快、資源利用率高、投入低,基于云平臺,方便動(dòng)態(tài)擴(kuò)容,可以靈活定制不同實(shí)驗(yàn)環(huán)境;缺點(diǎn)是學(xué)生使用不夠靈活,無法自主搭建集群、修改集群配置。
針對上述情況,綜合考慮課程學(xué)習(xí)目標(biāo)、行業(yè)技能要求、建設(shè)成本等因素,本文基于Web 架構(gòu)、借助Docker容器技術(shù)、noVNC 技術(shù)、Linux 腳本技術(shù),利用Docker容器嵌套技術(shù)來構(gòu)建大數(shù)據(jù)實(shí)驗(yàn)平臺。
從平臺建設(shè)成本、平臺功能、用戶操作易用性等多維度對已有平臺做歸納總結(jié),如表1 所示。本文設(shè)計(jì)的大數(shù)據(jù)實(shí)驗(yàn)平臺,采用B/S 架構(gòu),通過瀏覽器實(shí)現(xiàn)大數(shù)據(jù)的交互學(xué)習(xí);使用Docker 容器技術(shù)和DIND(Docker in Docker,容器嵌套技術(shù)),提供資源隔離的運(yùn)行環(huán)境,秒級啟動(dòng)速度,資源占用少,同時(shí)保障了實(shí)驗(yàn)過程的可回滾、提供了自主搭建環(huán)境、一鍵集成環(huán)境,可靈活配置大數(shù)據(jù)集群。
表1 現(xiàn)有大數(shù)據(jù)實(shí)驗(yàn)平臺與本實(shí)驗(yàn)平臺綜合比較
國內(nèi)高校在大數(shù)據(jù)實(shí)驗(yàn)平臺建設(shè)還處于探索階段,兼顧好人才培養(yǎng)目標(biāo)、實(shí)驗(yàn)教學(xué)資源、資金投入等要求,仍然是平臺建設(shè)的重點(diǎn)。下面主要從建設(shè)思路、平臺架構(gòu)、平臺實(shí)現(xiàn)、性能分析4 個(gè)部分進(jìn)行介紹。
大數(shù)據(jù)實(shí)驗(yàn)平臺是培養(yǎng)學(xué)生工程實(shí)踐創(chuàng)新能力、實(shí)現(xiàn)“產(chǎn)”“教”融合的重要保障。平臺建設(shè)必須和教學(xué)目標(biāo)一致,滿足人才培養(yǎng)方案;充分利用資源,借鑒現(xiàn)有實(shí)驗(yàn)室的既有成果;注重教學(xué)資源建設(shè),提升建設(shè)和應(yīng)用水平,最大限度服務(wù)教學(xué)和科研。
建設(shè)大數(shù)據(jù)實(shí)驗(yàn)平臺需要滿足以下要求:①建設(shè)方案要融合大數(shù)據(jù)專業(yè)特點(diǎn),從實(shí)驗(yàn)、實(shí)訓(xùn)、科研、競賽等層次對學(xué)生進(jìn)行訓(xùn)練和考核。②能夠從面向大數(shù)據(jù)分析、運(yùn)維、開發(fā)、可視化等行業(yè)需求建設(shè)基于“云”模式的大數(shù)據(jù)實(shí)驗(yàn)平臺。③充分利用已有實(shí)驗(yàn)室軟硬件資源。④采用B/S 架構(gòu)建設(shè)實(shí)驗(yàn)平臺,用戶可通過瀏覽器進(jìn)行訪問,且支持內(nèi)網(wǎng)與外網(wǎng)同時(shí)訪問。
建設(shè)大數(shù)據(jù)實(shí)驗(yàn)平臺應(yīng)達(dá)到如下目標(biāo)[13]:①配備相應(yīng)大數(shù)據(jù)相關(guān)的虛擬平臺及環(huán)境設(shè)備,為師生提供便捷、豐富的虛擬實(shí)驗(yàn)環(huán)境,確保大數(shù)據(jù)教學(xué)、科研以及競賽正常進(jìn)行。②充分融合教學(xué)、科研需求,支撐大數(shù)據(jù)采集、預(yù)處理、存儲、分析及挖掘、可視化等關(guān)鍵技術(shù)研究,確保大數(shù)據(jù)實(shí)驗(yàn)資源完善,提升大數(shù)據(jù)方向發(fā)展能力和自主創(chuàng)新能力。③與企業(yè)項(xiàng)目人才需求進(jìn)行銜接,確保學(xué)生在大數(shù)據(jù)項(xiàng)目實(shí)戰(zhàn)層面快速提升,使學(xué)生充分了解就業(yè)崗位的職業(yè)能力需求,為未來就業(yè)奠定良好的基礎(chǔ)。④充分利用已有實(shí)驗(yàn)室資源,降低投入成本。
基于上述建設(shè)思路,在保障大數(shù)據(jù)課程、科研、競賽正常進(jìn)行情況下,充分利用已有實(shí)驗(yàn)資源;結(jié)合高校大數(shù)據(jù)人才培養(yǎng)需求,讓學(xué)生通過Web方式訪問實(shí)驗(yàn)平臺,實(shí)現(xiàn)隨時(shí)隨地便捷學(xué)習(xí)大數(shù)據(jù)技術(shù)、操作大數(shù)據(jù)平臺;結(jié)合行業(yè)技能要求,學(xué)生除學(xué)會使用API調(diào)用大數(shù)據(jù)集群服務(wù),更應(yīng)學(xué)會自主搭建大數(shù)據(jù)集群環(huán)境、靈活修改集群配置,真正從底層掌握大數(shù)據(jù)技術(shù)。
大數(shù)據(jù)實(shí)驗(yàn)平臺總體架構(gòu)如圖1 所示,主要用到Docker容器嵌套技術(shù)。整體架構(gòu)一共分為3 層:
圖1 大數(shù)據(jù)實(shí)驗(yàn)平臺總體架構(gòu)
(1)底層資源。底層資源是大數(shù)據(jù)實(shí)驗(yàn)的基礎(chǔ),可以是裸金屬資源或者虛擬化資源,根據(jù)課程、實(shí)訓(xùn)的人數(shù)、項(xiàng)目大小來彈性分配資源,保障資源的最大化利用,底層資源主要包括CPU、GPU 等計(jì)算、硬盤存儲、網(wǎng)絡(luò)交換機(jī)、數(shù)據(jù)庫等資源。通過ssh 方式納管底層資源,給實(shí)驗(yàn)平臺提供計(jì)算、存儲、網(wǎng)絡(luò)等資源池。
(2)大數(shù)據(jù)資源服務(wù)層。主要用到Docker 容器嵌套技術(shù),分為2 個(gè)Docker 層,分別是基礎(chǔ)層Docker和應(yīng)用層Docker。①基礎(chǔ)層Docker提供大數(shù)據(jù)基礎(chǔ)實(shí)驗(yàn)環(huán)境,對過程、監(jiān)控、實(shí)驗(yàn)快照、實(shí)驗(yàn)鏡像,容器調(diào)度、容器倉庫等進(jìn)行管理。給大數(shù)據(jù)Docker應(yīng)用層提供計(jì)算資源(宿主機(jī)),將實(shí)驗(yàn)鏡像部署進(jìn)宿主機(jī),提供大數(shù)據(jù)實(shí)驗(yàn)環(huán)境。②應(yīng)用層Docker提供大數(shù)據(jù)計(jì)算集群,提供了自主搭建和一鍵部署兩種方式。自主搭建時(shí),學(xué)生根據(jù)實(shí)驗(yàn)指導(dǎo),安裝、配置大數(shù)據(jù)集群,可個(gè)性化定制集群。一鍵部署集群,提供了Hadoop、HBase、Spark 等大數(shù)據(jù)生態(tài)計(jì)算集群,滿足實(shí)驗(yàn)、實(shí)訓(xùn)、科研需求。
(3)業(yè)務(wù)層。提供大數(shù)據(jù)實(shí)驗(yàn)教學(xué)門戶,包括課程管理、實(shí)驗(yàn)實(shí)訓(xùn)管理、計(jì)算資源管理、系統(tǒng)管理等。
基于上述平臺總體架構(gòu),平臺分為底層資源、大數(shù)據(jù)資源服務(wù)層、業(yè)務(wù)層。
(1)底層資源。底層資源主要分為裸金屬和虛擬資源。資源的虛擬化使用了華為FusionCloud產(chǎn)品,主要包括FusionSphere 組件、ManageOne 云計(jì)算管理組件和基礎(chǔ)云服務(wù)組件[14]。
(2)大數(shù)據(jù)資源服務(wù)層。主要使用Docker 容器嵌套技術(shù)。
外層Docker容器是由CourseGrading 程序設(shè)計(jì)實(shí)踐教學(xué)與競賽平臺[15]提供基于Web 架構(gòu)的基礎(chǔ)Docker層和交互式實(shí)驗(yàn)桌面環(huán)境。通過ssh方式納管底層資源來給外層Docker容器提供資源(宿主機(jī))。
內(nèi)層Docker容器作為大數(shù)據(jù)節(jié)點(diǎn),提供大數(shù)據(jù)計(jì)算集群環(huán)境。集群環(huán)境分為自主搭建和一鍵部署兩種方式,學(xué)生可根據(jù)需求選擇部署方式,自主搭建可靈活配置集群參數(shù),按需安裝。對無須關(guān)心底層搭建細(xì)節(jié)的用戶,可以一鍵部署集成環(huán)境,主要使用到Linux 腳本技術(shù)來一鍵完成,腳本執(zhí)行流程如圖2 所示。
圖2 一鍵部署Hadoop集群腳本流程
(3)業(yè)務(wù)層。業(yè)務(wù)層提供門戶,采用noVNC 技術(shù)、使用B/S架構(gòu)來訪問和控制Docker 容器桌面,用戶可以隨時(shí)隨地訪問大數(shù)據(jù)實(shí)驗(yàn)桌面。
基于上述大數(shù)據(jù)實(shí)驗(yàn)平臺的建設(shè)思路、架構(gòu)和實(shí)現(xiàn),對平臺進(jìn)行性能分析。
(1)貼合培養(yǎng)方案、教學(xué)內(nèi)容、行業(yè)技能要求?;贒ocker 容器嵌套技術(shù)的大數(shù)據(jù)實(shí)驗(yàn)平臺為用戶提供了基于Web架構(gòu)的大數(shù)據(jù)實(shí)驗(yàn)環(huán)境,外層Docker容器給學(xué)生提供了交互式云桌面環(huán)境,內(nèi)層Docker容器給學(xué)生提供大數(shù)據(jù)技術(shù)集群,提供了自主搭建和一鍵部署兩種方式。
在大數(shù)據(jù)實(shí)驗(yàn)教學(xué)中,以大數(shù)據(jù)架構(gòu)與模式實(shí)驗(yàn)課程為例,前4 學(xué)時(shí)課程要求學(xué)生能獨(dú)立、自主搭建大數(shù)據(jù)集群,了解底層運(yùn)行框架、能根據(jù)需求修改相關(guān)配置。在熟練搭建大數(shù)據(jù)集群后,可以進(jìn)行后續(xù)Spark計(jì)算等高階學(xué)習(xí)。實(shí)驗(yàn)平臺可提供自主搭建和一鍵部署兩種方式,讓學(xué)生可以很好完成教學(xué)內(nèi)容,從底層搭建到上層應(yīng)用,很好地匹配大數(shù)據(jù)運(yùn)維、分析、開發(fā)、大數(shù)據(jù)處理等行業(yè)技能要求。
(2)快速啟動(dòng)和部署、隨時(shí)隨地高效使用。基于LXC(Linux containers)和AUFS(Advanced multilayered Unification Filesystem)技術(shù),Docker容器秒級啟動(dòng)速度比虛擬機(jī)有了數(shù)量級提高[16]。使用一鍵部署集群,用戶無須關(guān)心配置細(xì)節(jié),一鍵加載鏡像文件、批量啟動(dòng)服務(wù),實(shí)現(xiàn)集群的快速部署和啟動(dòng)。
教師和學(xué)生通過Web 頁面可隨時(shí)隨地訪問Docker容器桌面使用大數(shù)據(jù)計(jì)算集群。Docker 容器通過Namespace進(jìn)行資源隔離,每個(gè)用戶相互之間不干擾。實(shí)驗(yàn)過程中,對實(shí)驗(yàn)快照、鏡像的管理可進(jìn)行回滾,反復(fù)操作、實(shí)踐,讓學(xué)生學(xué)習(xí)更牢靠、記憶更深刻。
(3)資源利用率高、投入成本低。使用Docker容器技術(shù)搭建大數(shù)據(jù)集群,可降低建設(shè)成本:①平臺充分利用已有計(jì)算、網(wǎng)絡(luò)、存儲等資源,通過ssh 方式納管資源,可彈性增減資源,提升資源利用率。鏡像在實(shí)例化為容器的時(shí)候才會使用宿主機(jī)的計(jì)算資源,利用這個(gè)特性,可以在一臺宿主機(jī)上部署多個(gè)課程鏡像,實(shí)現(xiàn)資源共享。②容器僅僅是運(yùn)行在宿主機(jī)上被隔離的單個(gè)進(jìn)程,僅消耗應(yīng)用容器消耗的資源。和虛擬機(jī)比較,容器更加輕量級、啟動(dòng)速度更快、文件體積更小。
大數(shù)據(jù)技術(shù)需要眾多課程知識的支撐,包括Linux系統(tǒng)的使用、Hadoop 的安裝使用、非傳統(tǒng)數(shù)據(jù)庫HBase、MapReduce編程模型、數(shù)據(jù)倉庫Hive、Spark、機(jī)器學(xué)習(xí)、數(shù)據(jù)采集工具Flume、Sqoop 等[12,17]。下面以本院大數(shù)據(jù)架構(gòu)與模式課程為例進(jìn)行介紹。
課程開始前,學(xué)生已完成Linux 系統(tǒng)、Python 語言、Java 語言、機(jī)器學(xué)習(xí)等課程學(xué)習(xí),課程內(nèi)容主要集中在Hadoop、HDFS、HBase、MapReduce、Spark 等學(xué)習(xí)上。以實(shí)驗(yàn)教學(xué)為核心,大數(shù)據(jù)架構(gòu)與模式課程安排32 學(xué)時(shí)實(shí)驗(yàn)課程,以Hadoop、Spark 大數(shù)據(jù)計(jì)算框架為主,具體實(shí)驗(yàn)內(nèi)容安排如表2 所示。
表2 大數(shù)據(jù)架構(gòu)與模式實(shí)驗(yàn)教學(xué)內(nèi)容
在大數(shù)據(jù)實(shí)驗(yàn)平臺,對學(xué)生課程、實(shí)驗(yàn)、實(shí)訓(xùn)等學(xué)習(xí)進(jìn)展進(jìn)行監(jiān)控,教師可以很好地了解學(xué)生對知識的掌握程度。選擇某一時(shí)刻學(xué)生在線實(shí)驗(yàn)完成情況如圖3 所示,由圖看出周末平臺使用率較高,學(xué)生空閑時(shí)間也在進(jìn)行實(shí)驗(yàn)。
圖3 學(xué)生在線實(shí)驗(yàn)完成情況
使用大數(shù)據(jù)實(shí)驗(yàn)平臺后,從學(xué)生課程報(bào)告、實(shí)驗(yàn)平臺數(shù)據(jù)統(tǒng)計(jì)得到學(xué)生實(shí)驗(yàn)情況如表3 所示,學(xué)生表示使用瀏覽器可以隨時(shí)隨地進(jìn)行實(shí)驗(yàn),特別是遇到不熟練的環(huán)節(jié),可以反復(fù)實(shí)驗(yàn)、有了實(shí)驗(yàn)鏡像、快照保存后可以反復(fù)“折騰”,直到熟練掌握。平臺自上線后共計(jì)服務(wù)300 余師生,有力支撐了大數(shù)據(jù)實(shí)驗(yàn)教學(xué),師生反饋頗好。
表3 大數(shù)據(jù)實(shí)驗(yàn)教學(xué)效果統(tǒng)計(jì)表
面對社會各界對大數(shù)據(jù)人才的迫切需求,并針對大數(shù)據(jù)實(shí)驗(yàn)課程教學(xué)特點(diǎn),利用Docker容器嵌套技術(shù)實(shí)現(xiàn)了Hadoop、Spark 等集群的搭建,提供了經(jīng)濟(jì)、輕量、便捷的大數(shù)據(jù)開發(fā)環(huán)境。靈活的搭建方式、隨時(shí)隨地便捷訪問、可反復(fù)操作的實(shí)驗(yàn)環(huán)境,使得學(xué)生能真正掌握大數(shù)據(jù)專業(yè)技能,達(dá)到提高教學(xué)效果、培養(yǎng)學(xué)生工程實(shí)踐能力的目標(biāo)。