胡玉雪, 徐勛光, 王海燕, 沙 灜,b
(華中農業大學a.信息學院;b.湖北省農業大數據工程技術研究中心,武漢 430070)
為適應大數據技術的發展和應用、滿足大數據產業對人才的需求,加快人才培養、鼓勵高效優化大數據學科專業設置、加大相關專業建設力度是必要保障措施[1]。教育部于2015 ~2020 年分6 批(教高函[2016]2 號、教高函[2017]2 號、教高函[2018]4 號、教高函[2019]7 號、教高函[2020]2 號、教高函[2021]1 號)共審批同意730 所高校開設數據科學與大數據技術本科專業(以下簡稱大數據專業)。
在大數據專業教學中,實驗教學是系統培養學生專業技術能力的重要手段,實驗教學質量的高低很大程度上取決于實驗平臺的建設水平。實踐教學中,大數據的實驗環境一般要求運行在Linux 上,主流的大數據工具——Hadoop生態集群采用分布式架構,配置復雜、操作門檻高[2],學生很難自主搭建Hadoop 集群,也難以接觸真正的分布式集群。
針對上述問題,充分利用實驗室已有設備和平臺資源,綜合考慮大數據實驗教學目標、行業技能要求、建設成本等因素,提出使用DIND(Docker in Docker,容器嵌套技術)為大數據實驗教學提供了全流程的實驗平臺,同時提供交互式的可視化操作界面,教師可根據教學需要設計實驗文檔,滿足實驗教學需求,進一步提高學生的課程學習效果。
國內高校在大數據專業建設、實驗教學體系、實驗教學方案、特別是實驗教學平臺建設上做了很多研究和探索[3-11],這些實驗平臺的建設方式主要分為3 種:
(1)使用Linux虛擬機搭建Hadoop 集群[3-4]。文獻[3]中提出在Linux 虛擬機下安裝Hadoop +Spark集群來構建大數據實驗教學環境,并詳細描述了Hadoop和Spark 的安裝和配置。文獻[4]中利用Linux虛擬機構建Hadoop 單機大數據實驗平臺,使用平臺進行詞頻統計實驗。
(2)使用高性能硬件設備自建大數據實驗平臺[5-7]。文獻[5]中設計實現了在線大數據實驗平臺,平臺分為“Web交互式開發環境”和“大數據存儲計算集群”兩個部分,學生通過Web 頁面可隨時調用API進大數據集群實驗。文獻[6]中采用B/S 架構建設基于Hadoop和Spark 的計算框架的在線大數據實驗平臺,用戶通過瀏覽器進行訪問提交任務。文獻[7]中以校企合作方式設計大數據課程實驗平臺、項目案例,學生可以通過遠程方式連接實驗平臺操作實驗。
(3)使用Docker 容器技術構建大數據實驗平臺[8-11]。文獻[8]中采用OpenStack 和Docker 混合架構建立大數據云實驗室,師生在進行大數據實驗時,直接使用打包好的鏡像文件即可。文獻[9]中利用Docker容器技術在單機上構建Hadoop 集群,運行封裝有Hadoop 的Docker 容器即可快速部署Hadoop 集群,進行實驗操作。文獻[10]中采用B/S 架構,在Linux系統上安裝Docker,用戶通過Web 訪問、加載鏡像、啟動容器、啟動大數據實驗的應用即可進行大數據實驗。文獻[11]中采用Docker、Kubernetes、Rancher、JumpServer等開源組件快速部署構建大數據實驗平臺,用戶利用瀏覽器登錄堡壘機訪問大數據集群進行實驗。
可以看出,各高校結合實驗室建設情況、綜合考慮各方面因素,在大數據實驗平臺的搭建形式、方法上不盡相同,都能較好地滿足各自實驗教學的需求,下面對3 種實驗平臺搭建方式的特點進行分析[12]。
(1)使用Linux 虛擬機搭建Hadoop 集群。優勢是充分利用已有實驗室資源、建設成本低;缺點是分配到每個學生的Linux資源有限,配置復雜,機房復用性差,學生不能隨時隨地進行實驗。
(2)使用高性能硬件設備自建大數據實驗平臺?;谠骗h境搭建Hadoop集群,或通過校企合作共建大數據實驗平臺,優勢實驗平臺和實際生產環境高度一致,集成化Web 頁面可更好適應環境需求,能隨時隨地在云端調用API進行大數據實驗;缺點成本高,學生使用不靈活,無法自主搭建集群、修改集群配置。
(3)使用Docker容器技術構建大數據實驗平臺。優勢是集群部署快、資源利用率高、投入低,基于云平臺,方便動態擴容,可以靈活定制不同實驗環境;缺點是學生使用不夠靈活,無法自主搭建集群、修改集群配置。
針對上述情況,綜合考慮課程學習目標、行業技能要求、建設成本等因素,本文基于Web 架構、借助Docker容器技術、noVNC 技術、Linux 腳本技術,利用Docker容器嵌套技術來構建大數據實驗平臺。
從平臺建設成本、平臺功能、用戶操作易用性等多維度對已有平臺做歸納總結,如表1 所示。本文設計的大數據實驗平臺,采用B/S 架構,通過瀏覽器實現大數據的交互學習;使用Docker 容器技術和DIND(Docker in Docker,容器嵌套技術),提供資源隔離的運行環境,秒級啟動速度,資源占用少,同時保障了實驗過程的可回滾、提供了自主搭建環境、一鍵集成環境,可靈活配置大數據集群。

表1 現有大數據實驗平臺與本實驗平臺綜合比較
國內高校在大數據實驗平臺建設還處于探索階段,兼顧好人才培養目標、實驗教學資源、資金投入等要求,仍然是平臺建設的重點。下面主要從建設思路、平臺架構、平臺實現、性能分析4 個部分進行介紹。
大數據實驗平臺是培養學生工程實踐創新能力、實現“產”“教”融合的重要保障。平臺建設必須和教學目標一致,滿足人才培養方案;充分利用資源,借鑒現有實驗室的既有成果;注重教學資源建設,提升建設和應用水平,最大限度服務教學和科研。
建設大數據實驗平臺需要滿足以下要求:①建設方案要融合大數據專業特點,從實驗、實訓、科研、競賽等層次對學生進行訓練和考核。②能夠從面向大數據分析、運維、開發、可視化等行業需求建設基于“云”模式的大數據實驗平臺。③充分利用已有實驗室軟硬件資源。④采用B/S 架構建設實驗平臺,用戶可通過瀏覽器進行訪問,且支持內網與外網同時訪問。
建設大數據實驗平臺應達到如下目標[13]:①配備相應大數據相關的虛擬平臺及環境設備,為師生提供便捷、豐富的虛擬實驗環境,確保大數據教學、科研以及競賽正常進行。②充分融合教學、科研需求,支撐大數據采集、預處理、存儲、分析及挖掘、可視化等關鍵技術研究,確保大數據實驗資源完善,提升大數據方向發展能力和自主創新能力。③與企業項目人才需求進行銜接,確保學生在大數據項目實戰層面快速提升,使學生充分了解就業崗位的職業能力需求,為未來就業奠定良好的基礎。④充分利用已有實驗室資源,降低投入成本。
基于上述建設思路,在保障大數據課程、科研、競賽正常進行情況下,充分利用已有實驗資源;結合高校大數據人才培養需求,讓學生通過Web方式訪問實驗平臺,實現隨時隨地便捷學習大數據技術、操作大數據平臺;結合行業技能要求,學生除學會使用API調用大數據集群服務,更應學會自主搭建大數據集群環境、靈活修改集群配置,真正從底層掌握大數據技術。
大數據實驗平臺總體架構如圖1 所示,主要用到Docker容器嵌套技術。整體架構一共分為3 層:

圖1 大數據實驗平臺總體架構
(1)底層資源。底層資源是大數據實驗的基礎,可以是裸金屬資源或者虛擬化資源,根據課程、實訓的人數、項目大小來彈性分配資源,保障資源的最大化利用,底層資源主要包括CPU、GPU 等計算、硬盤存儲、網絡交換機、數據庫等資源。通過ssh 方式納管底層資源,給實驗平臺提供計算、存儲、網絡等資源池。
(2)大數據資源服務層。主要用到Docker 容器嵌套技術,分為2 個Docker 層,分別是基礎層Docker和應用層Docker。①基礎層Docker提供大數據基礎實驗環境,對過程、監控、實驗快照、實驗鏡像,容器調度、容器倉庫等進行管理。給大數據Docker應用層提供計算資源(宿主機),將實驗鏡像部署進宿主機,提供大數據實驗環境。②應用層Docker提供大數據計算集群,提供了自主搭建和一鍵部署兩種方式。自主搭建時,學生根據實驗指導,安裝、配置大數據集群,可個性化定制集群。一鍵部署集群,提供了Hadoop、HBase、Spark 等大數據生態計算集群,滿足實驗、實訓、科研需求。
(3)業務層。提供大數據實驗教學門戶,包括課程管理、實驗實訓管理、計算資源管理、系統管理等。
基于上述平臺總體架構,平臺分為底層資源、大數據資源服務層、業務層。
(1)底層資源。底層資源主要分為裸金屬和虛擬資源。資源的虛擬化使用了華為FusionCloud產品,主要包括FusionSphere 組件、ManageOne 云計算管理組件和基礎云服務組件[14]。
(2)大數據資源服務層。主要使用Docker 容器嵌套技術。
外層Docker容器是由CourseGrading 程序設計實踐教學與競賽平臺[15]提供基于Web 架構的基礎Docker層和交互式實驗桌面環境。通過ssh方式納管底層資源來給外層Docker容器提供資源(宿主機)。
內層Docker容器作為大數據節點,提供大數據計算集群環境。集群環境分為自主搭建和一鍵部署兩種方式,學生可根據需求選擇部署方式,自主搭建可靈活配置集群參數,按需安裝。對無須關心底層搭建細節的用戶,可以一鍵部署集成環境,主要使用到Linux 腳本技術來一鍵完成,腳本執行流程如圖2 所示。

圖2 一鍵部署Hadoop集群腳本流程
(3)業務層。業務層提供門戶,采用noVNC 技術、使用B/S架構來訪問和控制Docker 容器桌面,用戶可以隨時隨地訪問大數據實驗桌面。
基于上述大數據實驗平臺的建設思路、架構和實現,對平臺進行性能分析。
(1)貼合培養方案、教學內容、行業技能要求?;贒ocker 容器嵌套技術的大數據實驗平臺為用戶提供了基于Web架構的大數據實驗環境,外層Docker容器給學生提供了交互式云桌面環境,內層Docker容器給學生提供大數據技術集群,提供了自主搭建和一鍵部署兩種方式。
在大數據實驗教學中,以大數據架構與模式實驗課程為例,前4 學時課程要求學生能獨立、自主搭建大數據集群,了解底層運行框架、能根據需求修改相關配置。在熟練搭建大數據集群后,可以進行后續Spark計算等高階學習。實驗平臺可提供自主搭建和一鍵部署兩種方式,讓學生可以很好完成教學內容,從底層搭建到上層應用,很好地匹配大數據運維、分析、開發、大數據處理等行業技能要求。
(2)快速啟動和部署、隨時隨地高效使用?;贚XC(Linux containers)和AUFS(Advanced multilayered Unification Filesystem)技術,Docker容器秒級啟動速度比虛擬機有了數量級提高[16]。使用一鍵部署集群,用戶無須關心配置細節,一鍵加載鏡像文件、批量啟動服務,實現集群的快速部署和啟動。
教師和學生通過Web 頁面可隨時隨地訪問Docker容器桌面使用大數據計算集群。Docker 容器通過Namespace進行資源隔離,每個用戶相互之間不干擾。實驗過程中,對實驗快照、鏡像的管理可進行回滾,反復操作、實踐,讓學生學習更牢靠、記憶更深刻。
(3)資源利用率高、投入成本低。使用Docker容器技術搭建大數據集群,可降低建設成本:①平臺充分利用已有計算、網絡、存儲等資源,通過ssh 方式納管資源,可彈性增減資源,提升資源利用率。鏡像在實例化為容器的時候才會使用宿主機的計算資源,利用這個特性,可以在一臺宿主機上部署多個課程鏡像,實現資源共享。②容器僅僅是運行在宿主機上被隔離的單個進程,僅消耗應用容器消耗的資源。和虛擬機比較,容器更加輕量級、啟動速度更快、文件體積更小。
大數據技術需要眾多課程知識的支撐,包括Linux系統的使用、Hadoop 的安裝使用、非傳統數據庫HBase、MapReduce編程模型、數據倉庫Hive、Spark、機器學習、數據采集工具Flume、Sqoop 等[12,17]。下面以本院大數據架構與模式課程為例進行介紹。
課程開始前,學生已完成Linux 系統、Python 語言、Java 語言、機器學習等課程學習,課程內容主要集中在Hadoop、HDFS、HBase、MapReduce、Spark 等學習上。以實驗教學為核心,大數據架構與模式課程安排32 學時實驗課程,以Hadoop、Spark 大數據計算框架為主,具體實驗內容安排如表2 所示。

表2 大數據架構與模式實驗教學內容
在大數據實驗平臺,對學生課程、實驗、實訓等學習進展進行監控,教師可以很好地了解學生對知識的掌握程度。選擇某一時刻學生在線實驗完成情況如圖3 所示,由圖看出周末平臺使用率較高,學生空閑時間也在進行實驗。

圖3 學生在線實驗完成情況
使用大數據實驗平臺后,從學生課程報告、實驗平臺數據統計得到學生實驗情況如表3 所示,學生表示使用瀏覽器可以隨時隨地進行實驗,特別是遇到不熟練的環節,可以反復實驗、有了實驗鏡像、快照保存后可以反復“折騰”,直到熟練掌握。平臺自上線后共計服務300 余師生,有力支撐了大數據實驗教學,師生反饋頗好。

表3 大數據實驗教學效果統計表
面對社會各界對大數據人才的迫切需求,并針對大數據實驗課程教學特點,利用Docker容器嵌套技術實現了Hadoop、Spark 等集群的搭建,提供了經濟、輕量、便捷的大數據開發環境。靈活的搭建方式、隨時隨地便捷訪問、可反復操作的實驗環境,使得學生能真正掌握大數據專業技能,達到提高教學效果、培養學生工程實踐能力的目標。