王 焱,吳青林
基于Docker和OpenStack的高校大數據云實驗室構建
王 焱1,吳青林2
(1. 漢江師范學院 教育學院,湖北 十堰 442000;2. 漢江師范學院 數學與計算機科學學院,湖北 十堰 442000)
該文設計了高校大數據云實驗室的整體架構。該大數據云實驗室以OpenStack云平臺架構為基礎,通過Docker容器虛擬化方式實現,重點闡述了OpenStack與Docker的集成方案以及Docker鏡像制作方法,能為實驗教學靈活定制Hadoop、Spark、TensorFlow、Caffe等不同的大數據實驗環境。與傳統大數據實驗室相比,該方案具有部署快速、資源利用充分、投入成本低等特點,是一種有效的高校大數據實驗室建設方案。
OpenStack;Docker;大數據;云實驗室
2015年,十八屆五中全會首次提出“國家大數據戰略”,全面推進大數據發展,加快建設數據強國。構建大數據實驗室是提高高等院校服務社會發展能力的需要,是實施素質教育、培養具有創新精神的高素質人才的重要保障。由于大數據專業在高校開設時間較短,大數據的各種教學和科研資源尚不完善,高校大數據實驗室建設正處于起步階段,需要進一步完善大數據實驗室的功能,加快高校大數據實驗室的建設步伐。本文從高校的教學、科研和大數據專業人才培養的具體需求[1-2],提出了高校大數據虛擬實驗室的構建方案,有利于提高高校服務社會發展的能力。
(1)建設資金短缺。一些資金充足的高校在建設大數據實驗室時通常采用購置高性能硬件設備,同時購買商業化的大數據實驗管理系統進行實驗教學,通過這種方式引進的大數據實驗管理系統,能較好地打通教學、實驗、評價、監控、分析環節,功能相對完善。但大規模的購置服務器設備和軟件資源,需要投入上百萬的資金,多數的高校辦學資金緊張,一次性投入大量的資金,存在較大的困難,而且商業化的大數據實驗管理系統是一種通用的實驗室構建方案,一方面與高校的教學科研需求存在一定的差距,另一方面又容易造成部分實驗資源的閑置。
(2)虛擬機效果難以滿意。部分高校為了節省實驗室的建設成本,采用在原有實驗PC機的Windows操作系統下安裝VMWare、Virtual PC等虛擬機軟件,進行大數據實驗環境的搭建,但傳統的虛擬機技術需要完整地安裝整個操作系統,并且不能共享底層操作系統的功能,難以通過一臺普通PC機有效虛擬出集群節點。由于在實驗過程中往往并不需要完整的操作系統支持,只需要其中的一部分軟件,通過在虛擬機上安裝完整的操作系統,雖然功能強大,但需要較多的硬件資源,導致直接在原有PC機安裝虛擬機,運行效果達不到集群節點的需求,使部分實驗難以完成。
(3)故障恢復困難。大數據實驗環境屬于分布式計算環境,在軟件部署、配置、維護上難度大,并且由于大數據實驗項目較多,實驗步驟繁瑣,缺乏統一的標準規范,并組件更新速度較快,進一步增加了大數據實驗環境維護的困難。一些高校實驗教師事先為每臺計算機分別配置大數據教學實驗環境,后期的實驗中不能為教師和學生按需分配資源,無法滿足學校師生的個性化實驗需求,并且這種統一的實驗環境在實驗過程中容易遭到破壞,一旦實驗環境出現故障后,實驗指導教師難以在短時間恢復,影響了教學 工作的正常開展,并且增大了實驗指導老師的維護工作量。
OpenStack是目前最為流行的開源云操作系統框架,作為一個開源的IaaS平臺,整個OpenStack包括Nova、Neutron、Swift、Cinder、Glance、Keystone、Horizon等多個常用組件[3-4]。組件中Nova負責維護和管理OpenStack的計算資源、實現虛擬機生命周期管理;Neutron提供云計算環境下的虛擬網絡功能服務;Swift提供相應的對象存儲,為Nova組件提供虛擬機鏡像存儲服務;Cinder提供塊存儲服務,向虛擬機提供額外的磁盤空間;Glance提供虛擬機的鏡像服務,用來管理、查詢虛擬機的鏡像;Keystone主要提供用戶身份認證和服務目錄管理;Horizon提供一個Web界面操作OpenStack系統。各個組件的相互關系見圖1。

圖1 OpenStack框架組件關系圖
Docker是dotCloud公司于2013年發布的輕量級容器引擎,提供了輕量級的操作系統虛擬化解決方 案[5-7]。Docker的Image、Container和Repositories是其三個重要的組成部分,其中Image 類似于虛擬機的模板,是只讀的,不能被修改;Container是從Image創建的運行實例,容器之間是相互隔離的;Repositories用來集中存放Image文件的倉庫。用戶操作Docker的容器類似操作一個快速輕量級的虛擬機,使用Docker可以讓開發者打包他們的應用以及依賴包到一個可移植的容器中[8]。目前Docker主要有三大用途:(1)提供一次性的環境,構建軟件開發平臺;(2)提供彈性的云服務,適合動態擴容和縮容;(3)組建微服務架構,通過多個容器,在本機就可以模擬出微服務架構。
大數據實驗室是高校大數據人才培養的重要保障,是全面落實“產、學、研、用”一體化思想的重要途徑。大數據實驗室應為高校師生提供基礎的開發環境,大數據分析環境以及大數據案例資源,從教學、實踐、科研多方面滿足高校對大數據實驗資源的需求。基于Docker和OpenStack混合架構構建大數據云實驗室,充分依托進程級虛擬化技術,提供了豐富的實驗鏡像資源,能為實驗教學靈活定制Hadoop、Spark、Hive、TensorFlow、Caffe等不同的大數據實驗環境,特別適合用于高校結合本校人才培養方向和本區域社會經濟發展現狀對大數據實驗室進行擴展,為全校師生快速提供個性化的大數據虛擬實驗環境[9-11]。
根據高校大數據人才培養以及產學研需求,高校大數據云實驗室建設主要為高校師生提供個性化的教學、科研實驗環境。大數據云實驗室整體架構主要分為硬件服務層、資源虛擬化層、云服務管理層、資源服務層和展示層5個層次,具體的架構見圖2。

圖2 高校大數據實驗云實驗室整體架構
高校大數據實驗云實驗室應達到如下目標:
(1)充分利用現有實驗設備,配備相應大數據相關的軟件包,考慮高校不同群體的需求,建立多梯度、層次式的系列實驗,為全校師生提供豐富的虛擬實驗環境,確保高校大數據教學、科研以及技能競賽正常進行。
(2)實驗室的建設充分融合高校師生的教學、科研需求,支撐大數據采集、大數據預處理、大數據存儲、大數據分析及挖掘、大數據可視化等關鍵技術研究,確保大數據實驗資源完善,提升高校大數據方向發展能力和自主創新能力。
(3)實驗室通過引入高校教師和企業真實案例進行實踐訓練,與企業項目人才需求進行銜接,確保學生在大數據項目實戰層面快速提升,使高校大學生充分了解就業崗位的職業能力需求,為未來就業奠定良好的基礎。
結合高校大數據科研和教學實際,高校大數據云實驗室在現有實驗設備的基礎上,采用OpenStack和Docker混合架構實現,將OpenStack的靈活性和Docker的輕量級優勢有機結合,按層次滿足高校師生對大數據實驗資源的不同需求。高校大數據云實驗室實現主要分為兩個關鍵階段:
3.3.1 OpenStack云平臺與Docker的集成
該集成方案把Docker容器當作虛擬機,以Driver的形式與OpenStack的集成,實現對 Docker 容器操作。通過配置Glance管理服務,Docker 可以從Glance存取鏡像,該集成方案能夠使用現成的OpenStack neutron來管理網絡,配置方便簡單,具體的融合結構見圖3。

圖3 OpenStack與Docker融合結構
(1)OpenStack搭建與配置:實驗室服務器操作系統選用CentOS7.2.1511,系統通過自動安裝工具安裝Packstack完成OpenStack的安裝過程,由于OpenStack是基于KVM開發的,KVM常常成為默認的虛擬機管理程序。
(2)配置Nova和Glance:對nova.conf中compute_driver選項用DockerDriver代替OpenStack默認驅動,在glance-api.conf文件的container_formats配置項末尾添加docker,這樣系統允許對新建Openstack中的容器虛擬云主機進行管理。nova-computer-api調用虛擬API把Docker虛擬驅動當作http agent和Docker REST API互通,達到控制Docker與容器通信的目的。另外,Glance是Docker register服務的本地節點,通過配置 Glance,Docker就能從Glance獲取和上傳鏡像。該集成方案對實驗室的服務器的硬件要求較低,并且移植成功率較高。
3.3.2 實驗鏡像制作
利用Docker容器制作鏡像有兩種方式:(1)使用基礎鏡像運行容器,在容器中直接安裝軟件和進行相關操作,然后通過“docker commit”命令將容器封裝成新的鏡像。(2)根據具體實驗目標和要求,以原有的基礎鏡像為基礎,對Dockerfile文件進行配置編寫,使用“docker build”命令構建新的鏡像[12]。具體的流程見圖4。

圖4 Docker鏡像制作流程圖
由于第二種方式通過編寫Dockerfile文件,代碼編寫簡單,并且所有修改都以增量的方式進行分發和更新,執行效率高,容易實現自動化部署管理,因此本文大數據虛擬實驗主要采用第二種方式創建Docker鏡像方式搭建不同的實驗鏡像資源,以便更好的實現實驗的自動化部署。以搭建Hadoop容器鏡像為例,主要步驟為:以Ubuntu 14.04.4為基礎鏡像,根據實驗需要編寫Dockerfile文件,主要包括安裝SSH、JDK、Hadoop、配置環境變量、配置SSH無密碼登錄、配置Hadoop、格式化NameNode等關鍵步驟,并使用“docker build”命令生成Hadoop鏡像,生成的鏡像大小比在傳統虛擬主機中安裝Linux小很多。大數據實驗時只需要在客戶端運行容器,啟動 Hadoop集群,即可進行Hadoop集群實驗,其他的鏡像也可通過編寫Dockerfile文件完成。
Docker容器是由Docker鏡像創建的運行實例,在進行大數據實驗環境部署時,只需要下載對應的鏡像,然后啟動容器就可以進行實驗。Docker容器中會運行特定的應用,并且每個容器間是相互隔離的,容器運行時產生的數據不會寫入鏡像,因此需要專門的容器數據持久化方案。Docker數據持久化方案一般采用兩種途徑:(1)由Docker專門提供數據卷或者數據容器卷來解決;(2)通過docker commit命令提交一個新的鏡像來保存產生的數據。第一種方法通過數據卷持久化能夠在容器直接共享和重用數據,可以直接對數據卷里的內容進行修改,并且數據卷內容的變化不會影響鏡像的更新。第二種方法通過docker commit命令同樣能實現保存讀寫層數據,但實現數據持久化的靈活性不如數據卷方法。
Docker采用了LXC(Linux Containers)內核虛擬化技術,實現類似VM(Virtual Machine)的功能,并且可以在有限的硬件資源上提供給用戶更多的計算資源。與VM(Virtual Machine)虛擬化方式不同,Docker主要借助Linux的內核特性,如控制組(Control Group)、命名空間(Namespace)等,能夠直接調用操作系統的系統調用接口,容器內沒有自己的內核,而且也沒有進行硬件虛擬,這樣降低了每個容器的系統開銷,實現了容器啟動快、資源占用小等特征。容器虛擬化直接在操作系統層面上實現虛擬化,能夠復用本地主機的操作系統,因此當容器啟動的時候,通過進程間調度就可以完成任務,而不需要引導整個系統。圖5顯示了Docker容器及傳統虛擬化技術結構層次對比。

圖5 Docker容器及傳統虛擬化技術對比
基于Docker和OpenStack的高校大數據虛擬實驗室為實驗者提供Hadoop鏡像、Spark鏡像、TensorFlow鏡像、Hive鏡像等20多個虛擬機鏡像,包含了大數據運行環境和可執行程序,可以跨平臺和主機使用。高校師生進行實驗時并不需要關心太多的實驗環境配置細節,直接使用打包好的鏡像文件,非常節約實驗環境配置時間,能夠快速部署和啟動。開發人員可以使用鏡像來快速構建一套標準的開發環境,傳統的虛擬機方式啟動花費時間一般是分鐘級,而本大數據云實驗室Docker容器啟動速度是秒級,能夠迅速創建和刪除容器,快速實現部署大數據實驗環境。
采用Docker容器實現大數據實驗室資源的虛擬化,采用的是以應用程序為中心的虛擬化技術,能夠更加充分利用服務器的軟硬件資源。Docker容器完全使用沙箱機制,相互之間不會有任何接口,對資源的額外需求很低,運行時不需要專門的虛擬化管理程序,只需占用較小的存儲空間。與KVM 虛擬化技術的資源利用情況進行比較,采用KVM 虛擬化技術時一個虛擬機至少需要幾GB的存儲空間,而采用Docker容器不需要將客戶機操作系統完整地安裝在容器中,所需存儲空間可以減少到MB級,具有更多的靈活性,并且在管理上更加容易,達到了更高的性能。
高校大數據云實驗室充分利用原有的網絡設備資源,不需要增加額外的高性能服務器,也不需要改變原有的網絡結構,具有良好的兼容性,通過幾臺計算機就可以按用戶需求虛擬出大數據集群實驗環境。這樣只需投入較少的成本即可完成大數據云實驗室的建設,并且實驗室管理方便、維護容易,后續也不需要投入太多的成本對實驗室進行維護,較好地滿足了高校師生大數據教學、科研的需求。另外,Docker容器幾乎可以在任意的平臺上運行,這種良好的兼容性方便高校師生在不同平臺之間遷移應用,同時數據的遷移成本也減少了。
高校大數據云實驗室建設充分考慮了高校辦學的現實條件,堅持以科學、節約為原則,利用Docker和OpenStack混合架構建立大數據云實驗室,能夠在投入較少資金的情況下,快速部署個性化的大數據實驗環境,并具有良好的可擴展性。可將教學實踐、教師科研與企業崗位需求緊密結合,一方面提升了高校的大數據人才培養質量,加強學生的大數據實踐能力,另一方面也提高了高校教師的大數據科研能力,推 進產學研合作,促進科研成果轉化,體現高校的辦學特色。
[1] 廖軍,張毅,王成良,等. 高校大數據實驗室建設體系研究與分析[J]. 實驗技術與管理,2018, 35(11): 241–244.
[2] 李馥娟. 大數據實驗室建設與應用研究[J]. 實驗技術與管理,2018, 35(5): 243–246.
[3] 金永霞,孫寧. 基于OpenStack的云計算實驗平臺建設與應用[J]. 實驗技術與管理,2016, 33(6): 145–149.
[4] 羅平,王勇,俸晧,等. 一種基于OpenStack的云計算虛擬機放置策略[J]. 桂林理工大學學報,2018, 38 (3): 555–560.
[5] 楊鵬,馬志程,彭博,等. 集成 Docker 容器的 OpenStack云平臺性能研究[J]. 計算機工程,2017, 43(8): 26–31.
[6] 彭麗蘋, 呂曉丹, 蔣朝惠,等. 基于 Docker 的云資源彈性調度策略[J]. 計算機應用,2018, 38(2): 557–562.
[7] Paraiso F, Challita S, AlDhuraibi Y, et al. Model–Driven Managementof Docker Containers[C]. IEEE International Conference on Cloud Computing. 2016: 718–725.
[8] 董博,王雪,索菲,等. 基于Docker的虛擬化技術研究[J]. 遼寧大學學報(自然科學版),2016, 43 (4): 327–330.
[9] 王永坤, 羅萱, 金耀輝. 基于私有云和物理機的混合型大數據平臺設計及實現[J]. 計算機工程與科學, 2018, 40(2): 191–199.
[10] 尹學松,蔣融融,張吉先, 等. 面向大數據遠程開放實驗平臺構建研究[J]. 中國遠程教育,2016(11): 28–34.
[11] 朝樂門,邢春曉,王雨晴. 數據科學與大數據技術專業特色課程研究[J]. 計算機科學,2018, 45(3): 3–10.
[12] 應毅,劉亞軍,俞琰. 利用Docker容器技術構建大數據實驗室[J]. 實驗室研究與探索,2018, 37(2): 264–268.
Construction on university big data cloud laboratory based on Docker and OpenStack
WANG Yan1, WU Qinglin2
(1. School of Education, Hanjiang Normal University, Shiyan 442000, China; 2. School of Mathematics and Computer Science, Hanjiang Normal University, Shiyan 442000, China)
The overall architecture of the university big data cloud laboratory is designed. Based on the OpenStack cloud platform architecture and through the Docker container virtualization, this big data cloud laboratory focuses on the integration scheme of OpenStack and Docker and the method of Docker image making. It can flexibly customize the big data experimental environments such as Hadoop, Spark, TensorFlow, Caffe, etc., for experimental teaching. Compared with the traditional big data laboratory, this scheme has the characteristics of rapid deployment, full utilization of resources and low investment cost, which is an effective construction scheme of big data laboratory in colleges and universities.
OpenStack; Docker; big data; cloud laboratory
G482;G648.4
A
1002-4956(2019)09-0254-05
2019-02-01
2019-07-13
漢江師范學院2016年度重點科研計劃項目(2016A03)
王焱(1980—),女,甘肅天水,碩士,副教授,主要研究方向為現代教育技術及信息管理。
E-mail:wangyanwsr@163.com
吳青林(1977—),男,湖北荊門,碩士,教授,主要研究方向為數據挖掘。
E-mail: 254275383@qq.com
10.16791/j.cnki.sjg.2019.09.066