吳湘寧,彭建怡,羅勛鶴,劉遠(yuǎn)興,李 敏
1(中國地質(zhì)大學(xué)(武漢) 計(jì)算機(jī)學(xué)院,武漢 430074)
2(中國地質(zhì)大學(xué)(武漢) 實(shí)驗(yàn)室與設(shè)備管理處,武漢 430074)
3(荊楚理工學(xué)院 計(jì)算機(jī)工程學(xué)院,荊門 448000)
自2012年以來,我國開始步入全新的大數(shù)據(jù)時(shí)代.海量數(shù)據(jù)的生產(chǎn)已經(jīng)成為經(jīng)濟(jì)與社會(huì)生活中的一個(gè)普遍現(xiàn)象,利用數(shù)據(jù)改善決策、合理配置資源已成為企業(yè)創(chuàng)造價(jià)值的重要方法.黨中央、國務(wù)院高度重視大數(shù)據(jù)在經(jīng)濟(jì)社會(huì)發(fā)展中的作用,2015年11月3日發(fā)布的《中華人民共和國國民經(jīng)濟(jì)和社會(huì)發(fā)展第十三個(gè)五年規(guī)劃綱要》第二十七章“實(shí)施國家大數(shù)據(jù)戰(zhàn)略”提出:把大數(shù)據(jù)作為基礎(chǔ)性戰(zhàn)略資源,全面實(shí)施促進(jìn)大數(shù)據(jù)發(fā)展行動(dòng)[1].國務(wù)院印發(fā)《促進(jìn)大數(shù)據(jù)發(fā)展行動(dòng)綱要》,全面推進(jìn)大數(shù)據(jù)發(fā)展,加快建設(shè)數(shù)據(jù)強(qiáng)國[2].工業(yè)和信息化部也印發(fā)了《大數(shù)據(jù)產(chǎn)業(yè)發(fā)展規(guī)劃(2016-2020年)》,指出數(shù)據(jù)是國家基礎(chǔ)性戰(zhàn)略資源,是21世紀(jì)的“鉆石礦”,提出到2020年我國要建成技術(shù)先進(jìn),應(yīng)用繁榮,保障有力的大數(shù)據(jù)產(chǎn)業(yè)體系[3].
“十三五”期間,隨著我國信息產(chǎn)業(yè)的迅速壯大,積累了豐富的數(shù)據(jù)資源,大數(shù)據(jù)技術(shù)創(chuàng)新取得了明顯突破,已從2012~2013年的啟動(dòng)期,再經(jīng)過2014~2017年的高速發(fā)展期,逐漸進(jìn)入了2018年至今的成熟發(fā)展期.大數(shù)據(jù)技術(shù)的商業(yè)模式已經(jīng)得到了市場印證,并已進(jìn)入市場細(xì)分的時(shí)代.“十三五”期間也正是全球新一代信息產(chǎn)業(yè)的加速變革期,大數(shù)據(jù)技術(shù)和應(yīng)用不斷創(chuàng)新突破期,國內(nèi)市場需求集中爆發(fā),我國大數(shù)據(jù)產(chǎn)業(yè)面臨著前所未有的發(fā)展良機(jī).據(jù)統(tǒng)計(jì)(圖1),2017年中國大數(shù)據(jù)產(chǎn)業(yè)規(guī)模從2016年的2840.8 億元迅速增長至2019年的5386.2 億元,預(yù)計(jì)2020年還會(huì)繼續(xù)增長22.6%[4,5].大數(shù)據(jù)領(lǐng)域的投融資規(guī)模也從2014年的303.75 億元升至2018年的1581 億元,隨著大數(shù)據(jù)在各行業(yè)的融合應(yīng)用不斷深化,包括數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、數(shù)據(jù)資產(chǎn)管理、信息安全等大數(shù)據(jù)技術(shù)及應(yīng)用領(lǐng)域還將繼續(xù)突破,成為推動(dòng)經(jīng)濟(jì)高質(zhì)量發(fā)展的新動(dòng)力[6].
然而,與大數(shù)據(jù)行業(yè)快速增長形成鮮明對(duì)比的是大數(shù)據(jù)人才的短缺.根據(jù)獵聘網(wǎng)發(fā)布的“2019年中國AI&大數(shù)據(jù)人才就業(yè)趨勢報(bào)告”,中國大數(shù)據(jù)領(lǐng)域的人才需求呈現(xiàn)快速增長態(tài)勢,2019年企業(yè)對(duì)大數(shù)據(jù)人才的需求約為4年前的12 倍,人才缺口高達(dá)150 萬.
為了有效緩解大數(shù)據(jù)人才供給的缺乏,教育部加快大數(shù)據(jù)人才培養(yǎng)布局,2016年增設(shè)“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”本科專業(yè)及“大數(shù)據(jù)技術(shù)與應(yīng)用”高職專業(yè).全國各地院校也積極做出響應(yīng).根據(jù)教育部發(fā)布的歷年“普通高等學(xué)校本科專業(yè)備案和審批結(jié)果”,截至2019年底,“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”專業(yè)新增備案學(xué)校數(shù)量達(dá)631 所,尤其是2017年通過審批的學(xué)校數(shù)量同比增長近10 倍[7,8].“大數(shù)據(jù)技術(shù)與應(yīng)用”高職專業(yè)的增長勢頭同樣迅猛,有時(shí)甚至是成倍增長,截至2020年底,已有1354 所高職院校獲批該專業(yè)[9],具體可見圖2、圖3.
圖2 教育部審批的開設(shè)“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”專業(yè)高校數(shù)目
圖3 教育部審批的開設(shè) “大數(shù)據(jù)技術(shù)與應(yīng)用”專業(yè)職業(yè)院校數(shù)目
雖然我國高校的大數(shù)據(jù)人才培養(yǎng)經(jīng)過幾年的發(fā)展已經(jīng)有了一定基礎(chǔ),但是仍然存在著一些問題,如專業(yè)師資緊缺、缺少系統(tǒng)化的權(quán)威教材等,而其中最為緊迫的問題是許多院校還沒有專業(yè)的大數(shù)據(jù)實(shí)驗(yàn)室,甚至只是將普通的計(jì)算機(jī)實(shí)驗(yàn)室改造,臨時(shí)充當(dāng)大數(shù)據(jù)實(shí)驗(yàn)室,此外,也沒有比較系統(tǒng)的實(shí)驗(yàn)體系和實(shí)驗(yàn)項(xiàng)目,這在很大程度上影響了大數(shù)據(jù)專業(yè)畢業(yè)生的質(zhì)量,并造成高校對(duì)大數(shù)據(jù)人才的培養(yǎng)與企業(yè)對(duì)人才專業(yè)技能需求的脫節(jié).尤其是隨著第一批入學(xué)的學(xué)生開始進(jìn)入專業(yè)課程和實(shí)習(xí)環(huán)節(jié),這個(gè)問題變得愈發(fā)嚴(yán)重.因此,建設(shè)大數(shù)據(jù)實(shí)驗(yàn)教學(xué)和實(shí)訓(xùn)環(huán)境,并構(gòu)建結(jié)構(gòu)合理的大數(shù)據(jù)實(shí)驗(yàn)課程體系就成為了開設(shè)大數(shù)據(jù)專業(yè)的院校急需解決的問題.
“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”本科專業(yè)是一個(gè)軟硬件結(jié)合、以計(jì)算技術(shù)為基礎(chǔ)、以數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)為特色的寬口徑專業(yè),以計(jì)算機(jī)科學(xué)、數(shù)學(xué)和統(tǒng)計(jì)學(xué)為三大基礎(chǔ)支撐(圖4),并向經(jīng)濟(jì)、農(nóng)業(yè)、生物、醫(yī)學(xué)、地質(zhì)、環(huán)境、社會(huì)、管理等應(yīng)用領(lǐng)域拓展的,典型的多學(xué)科交叉的新工科專業(yè)[10].
圖4 大數(shù)據(jù)科學(xué)的三大基礎(chǔ)
雖然不同高?!皵?shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”本科專業(yè)的人才培養(yǎng)目標(biāo)側(cè)重不同,但仍可歸納出一些共同點(diǎn):培養(yǎng)適應(yīng)社會(huì)與經(jīng)濟(jì)發(fā)展需求的大數(shù)據(jù)相關(guān)領(lǐng)域的,具備較扎實(shí)的計(jì)算機(jī)科學(xué)、數(shù)學(xué)和統(tǒng)計(jì)學(xué)基礎(chǔ)知識(shí),掌握大數(shù)據(jù)相關(guān)技術(shù),能夠從事一定應(yīng)用領(lǐng)域(如金融、商務(wù)、農(nóng)業(yè)、公安)的大數(shù)據(jù)采集、存儲(chǔ)與管理、分析處理、服務(wù)等相關(guān)工作,具有扎實(shí)專業(yè)基礎(chǔ)、很強(qiáng)的實(shí)踐能力,并具有廣泛適應(yīng)性的高素質(zhì)理學(xué)或工學(xué)人才[11].
出于對(duì)師資力量和教師知識(shí)結(jié)構(gòu)的考慮,高校通常將“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”專業(yè)放在計(jì)算機(jī)、信息科學(xué)、數(shù)學(xué)等學(xué)院,或新興的大數(shù)據(jù)科學(xué)學(xué)院.由于各高校的優(yōu)勢學(xué)科、學(xué)科結(jié)構(gòu)不同,在專業(yè)的人才培養(yǎng)目標(biāo)上自然也各有側(cè)重.部分偏理學(xué)的高校強(qiáng)調(diào)畢業(yè)生應(yīng)具有一定的大數(shù)據(jù)科學(xué)研究能力及適應(yīng)數(shù)據(jù)科學(xué)家崗位的基本能力,但是大多數(shù)的高校更傾向于培養(yǎng)能夠滿足不同行業(yè)需求的應(yīng)用型、復(fù)合型工學(xué)人才.
“大數(shù)據(jù)技術(shù)與應(yīng)用”高職專業(yè)人才的培養(yǎng)更重視技術(shù)技能型人才的培養(yǎng),其培養(yǎng)目標(biāo)可以歸納為:培養(yǎng)具有精益求精工匠精神,具有較強(qiáng)就業(yè)能力和可持續(xù)發(fā)展能力,掌握大數(shù)據(jù)技術(shù)基本理論和基本技能,面向軟件與信息服務(wù)行業(yè),能夠從事大數(shù)據(jù)平臺(tái)運(yùn)維、數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)加工、數(shù)據(jù)可視化、系統(tǒng)開發(fā)、系統(tǒng)實(shí)施等工作的高素質(zhì)技術(shù)技能型人才[12,13].
可見,“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”本科專業(yè)與“大數(shù)據(jù)技術(shù)與應(yīng)用”高職專業(yè)在人才的專業(yè)知識(shí)和專業(yè)技能上具有一定的差異,但是也具有明顯的互補(bǔ)性.
大數(shù)據(jù)相關(guān)的職位可以分為:數(shù)據(jù)產(chǎn)品經(jīng)理、數(shù)據(jù)架構(gòu)師、算法設(shè)計(jì)及數(shù)據(jù)挖掘工程師、大數(shù)據(jù)應(yīng)用系統(tǒng)研發(fā)工程師、數(shù)據(jù)分析師/工程師、運(yùn)維工程師(如表1所示).“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”專業(yè)的畢業(yè)生比較適合前4 種職位.“大數(shù)據(jù)技術(shù)與應(yīng)用”專業(yè)的畢業(yè)生則比較適合后3 種職位,但是在累積一定的工作經(jīng)驗(yàn)和知識(shí)以后,亦可勝任前3 種職位.有時(shí),這些職位之間的界限并不明顯,比如算法設(shè)計(jì)及數(shù)據(jù)挖掘工程師也可從事大數(shù)據(jù)應(yīng)用系統(tǒng)的研發(fā)工作.
表1 大數(shù)據(jù)相關(guān)職位的職責(zé)及知識(shí)要求
圖5是大數(shù)據(jù)相關(guān)的知識(shí)體系,不同的大數(shù)據(jù)職位,所需具備的關(guān)鍵知識(shí)會(huì)有所不同,但是均屬于此知識(shí)體系的子集.院校可以有針對(duì)性地開設(shè)不同的課程來為學(xué)生補(bǔ)充相應(yīng)的專業(yè)知識(shí),并設(shè)置不同的實(shí)驗(yàn)項(xiàng)目來提高學(xué)生的實(shí)踐技能.例如:對(duì)“數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”本科生除了要具備計(jì)算機(jī)科學(xué)、數(shù)學(xué)、統(tǒng)計(jì)學(xué)知識(shí)以外,需有意識(shí)地加強(qiáng)大數(shù)據(jù)、數(shù)據(jù)庫及數(shù)據(jù)倉庫、機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘、可視化等方面知識(shí)的學(xué)習(xí)和技能訓(xùn)練.而對(duì)于“大數(shù)據(jù)技術(shù)與應(yīng)用”專業(yè)的學(xué)生除了需要具備必要的計(jì)算機(jī)科學(xué)、統(tǒng)計(jì)學(xué)知識(shí)以外,需要有目的地加強(qiáng)大數(shù)據(jù)、數(shù)據(jù)庫及數(shù)據(jù)倉庫、云計(jì)算、可視化等方面知識(shí)的學(xué)習(xí)和技能訓(xùn)練.
圖5 大數(shù)據(jù)相關(guān)知識(shí)體系
在大數(shù)據(jù)領(lǐng)域,Hadoop 已經(jīng)成為當(dāng)前的主流框架,它是Apache 旗下開源分布式計(jì)算平臺(tái),提供了底層細(xì)節(jié)透明的分布式大數(shù)據(jù)存儲(chǔ)基礎(chǔ)架構(gòu),基于Java 語言開發(fā),具有很好的跨平臺(tái)特性,并且可以部署在廉價(jià)的計(jì)算機(jī)集群中.Hadoop 以其實(shí)用、成本低廉、開源等優(yōu)點(diǎn)受到了業(yè)界的歡迎.
Hadoop 經(jīng)過不斷完善和發(fā)展,已經(jīng)形成一個(gè)種類豐富的生態(tài)系統(tǒng)(如圖6所示).其核心是Hadoop 分布式文件系統(tǒng)HDFS (Hadoop Distributed File System)和分布式計(jì)算架構(gòu)MapReduce.同時(shí)也提供了資源管理調(diào)度器YARN、ETL 工具Sqoop、日志采集工具Flume、分布式NoSQL 數(shù)據(jù)庫Hbase、分布式數(shù)據(jù)倉庫Hive、類SQL 語言Pig Latin、分布任務(wù)協(xié)調(diào)工具Zookeeper、分布式消息發(fā)布訂閱系統(tǒng)Kafka、流計(jì)算框架Storm、工作流管理系統(tǒng)Oozie、機(jī)器學(xué)習(xí)庫Mahout、大數(shù)據(jù)集群部署及管理工具Ambari 等組件.Hadoop 可通過Java、R、Python 等語言的API (Application Programming Interface,應(yīng)用程序接口)訪問.
圖6 Hadoop 的生態(tài)系統(tǒng)
除Hadoop 之外,近年來還比較流行大數(shù)據(jù)快速并行計(jì)算引擎Spark.Spark 可以同HDFS 很好地結(jié)合,也可以同Amazon 的S3 等云平臺(tái)結(jié)合.不同于MapReduce的是,Spark 計(jì)算作業(yè)的中間輸出結(jié)果保存在內(nèi)存中,不像MapReduce 那樣需要頻繁讀寫HDFS,Spark 采用RDD(Resilient Distributed Dataset,彈性的分布式數(shù)據(jù)集)作為數(shù)據(jù)交換結(jié)構(gòu),RDD 代表一個(gè)不可變、只讀的,被分區(qū)的數(shù)據(jù)集,Spark 會(huì)根據(jù) RDD 的依賴關(guān)系生成DAG (Directed Acyclic Graph,有向無環(huán)圖),并從DAG 的起點(diǎn)開始優(yōu)化并執(zhí)行.正是由于這些特殊機(jī)制,使得Spark 比MapReduce 計(jì)算性能更佳,甚至能夠提升百倍,可用于替代MapReduce 來實(shí)現(xiàn)一些需要迭代的數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)算法.Spark 也擁有自己獨(dú)立的生態(tài)體系(如圖7所示),包括流計(jì)算Spark Streaming、機(jī)器學(xué)習(xí)庫MLlib、數(shù)據(jù)庫查詢語言Spark SQL、數(shù)據(jù)倉庫Shark、圖計(jì)算GraphX 等一整套分布式計(jì)算組件.
圖7 Spark 的生態(tài)系統(tǒng)以及與其他平臺(tái)的關(guān)系
Spark 和Scala 語言緊密集成,Scala 可以像操作本地?cái)?shù)據(jù)一樣輕松操作分布式數(shù)據(jù)集.但是Scala 語言的面向?qū)ο蠛秃瘮?shù)式編程的混搭風(fēng)格,使得學(xué)習(xí)Scala 語言存在一定的門檻.
高校的大數(shù)據(jù)實(shí)驗(yàn)課程及實(shí)驗(yàn)項(xiàng)目大多可以基于Hadoop 生態(tài)系統(tǒng)及Spark 生態(tài)系統(tǒng)這兩種主流框架來設(shè)計(jì),挑選其中的一些常用的核心組件的使用來設(shè)置實(shí)驗(yàn)內(nèi)容.例如:Hadoop 環(huán)境下對(duì)HDFS、HBase、Hive 的訪問,基于Flume 的日志數(shù)據(jù)采集、基于Storm的流式數(shù)據(jù)處理、基于Sqoop 的數(shù)據(jù)抽取、基于Spark的大數(shù)據(jù)并行分析等.
Apache Hadoop 社區(qū)版(也稱原生版)雖然完全開源免費(fèi),社區(qū)活躍.但是也存在版本管理混亂、部署過程繁瑣、升級(jí)過程復(fù)雜、運(yùn)維難度大、組件之間兼容性差、安全性低等不足,手工安裝和配置一個(gè)Hadoop集群往往耗費(fèi)大量時(shí)間.
Hadoop 發(fā)行版衍生自社區(qū)版,由第三方簡化并提供Hadoop 部署、安裝、配置工具,大大提高了集群部署的效率,可以在幾個(gè)小時(shí)內(nèi)完成集群的部署.而且提供了配置修改、監(jiān)控、診斷的管理工具,管理配置方便,定位故障快速準(zhǔn)確,使運(yùn)維工作變得簡單有效.發(fā)行版經(jīng)過大量測試和眾多部署實(shí)例驗(yàn)證,在兼容性、安全性、穩(wěn)定性上有所增強(qiáng),可部署到生產(chǎn)環(huán)境.目前常用的開源發(fā)行版主要有Cloudera 的CDH (Cloudera’s Distribution including Apache Hadoop),以及Hortonwork 的HDP (Hortonworks Data Platform).
院校的大數(shù)據(jù)實(shí)驗(yàn)環(huán)境建議使用Hadoop 發(fā)行版,讓學(xué)生將更多精力放在分布式大數(shù)據(jù)應(yīng)用的開發(fā)上,而不是放在大數(shù)據(jù)系統(tǒng)的安裝配置上,此外,讓學(xué)生在實(shí)驗(yàn)中使用業(yè)界認(rèn)可的商業(yè)版本,也有利于將來畢業(yè)后很快適應(yīng)工作崗位.
開展大數(shù)據(jù)實(shí)驗(yàn)不一定只能在具有一定規(guī)模的計(jì)算機(jī)集群環(huán)境中才能實(shí)現(xiàn),其實(shí)大多數(shù)大數(shù)據(jù)實(shí)驗(yàn)在單機(jī)環(huán)境下就可以完成.Hadoop 已經(jīng)考慮了大數(shù)據(jù)開發(fā)環(huán)境、測試環(huán)境和生產(chǎn)環(huán)境的不同,分別提供了3種運(yùn)行(啟動(dòng))模式:
(1)單機(jī)模式(Local/Standalone Mode,也稱為獨(dú)立模式):不需要對(duì)配置文件進(jìn)行修改.程序運(yùn)行時(shí)使用本地文件系統(tǒng),而不是HDFS.Hadoop 不會(huì)啟動(dòng)NameNode、DataNode 等守護(hù)進(jìn)程,此模式主要用于對(duì)MapReduce程序的邏輯進(jìn)行調(diào)試,確保程序的正確.
(2)偽分布式模式(Pseudo-Distrubuted Mode):Hadoop 的NameNode、DataNode 等守護(hù)進(jìn)程運(yùn)行在本機(jī)上,Hadoop 使用的是HDFS,用來模擬大數(shù)據(jù)集群,是完全分布式模式的一種仿真,此模式常用來測試開發(fā)的Hadoop 程序執(zhí)行是否正確.
(3)全分布式模式(Full-Distributed Mode):Hadoop的守護(hù)進(jìn)程運(yùn)行在由多臺(tái)主機(jī)搭建的集群上,是真正的生產(chǎn)環(huán)境.
同樣,Spark 也支持3 種分布式部署方式:
(1)獨(dú)立模式(Standalone):自帶完整的服務(wù),可單獨(dú)部署到一個(gè)小型集群中,無需依賴任何其他資源管理系統(tǒng).
(2)基于Mesos 模式(Spark on Mesos):利用Mesos做資源管理,Spark 在開發(fā)之初就已考慮了和Mesos 的兼容,所以兩者存在天然的血緣關(guān)系,Spark運(yùn)行在Mesos 上會(huì)比運(yùn)行在YARN 上更加靈活、自然.
(3)基于YARN 模式(Spark on YARN):利用Hadoop平臺(tái)的YARN 做資源管理.好處在于可以將Spark 與Hadoop 兼容.又可進(jìn)一步細(xì)分:生產(chǎn)環(huán)境可選擇yarncluster 模式,調(diào)試程序則選擇yarn-client 模式.
Spark 計(jì)算框架的一般開發(fā)模式為:為了快速開發(fā),先不需要考慮服務(wù)(如master/slave 環(huán)境)的容錯(cuò)性,直接在Standalone 模式下開發(fā),之后再開發(fā)相應(yīng)的wrapper,將Stanlone 模式下的服務(wù)原封不動(dòng)地部署到資源管理系統(tǒng)YARN 或者M(jìn)esos 上,由資源管理系統(tǒng)來負(fù)責(zé)服務(wù)本身的容錯(cuò).
在單機(jī)環(huán)境下要開展大數(shù)據(jù)實(shí)驗(yàn),只需要配置Hadoop 的單機(jī)模式就可以開展MapReduce 程序的邏輯調(diào)試.如果想看一下HDFS 的實(shí)際效果,以及分布式環(huán)境下多個(gè)守護(hù)進(jìn)程協(xié)調(diào)運(yùn)行的效果,則可以在單機(jī)的Hadoop 偽分布式模式下進(jìn)行測試.但是如果數(shù)據(jù)量很大,且需要驗(yàn)證分布式處理的效果,則需要采用Hadoop全分布式模式,理論上Hadoop 生產(chǎn)環(huán)境至少需要1 個(gè)NameNode,1 個(gè)Secondary NameNode,以及3 個(gè)DataNode.
如果想在單機(jī)上開展Spark 的實(shí)驗(yàn),可以在Spark Standalone 模式下在主機(jī)上同時(shí)啟動(dòng)Master 進(jìn)程和Worker 進(jìn)程,也就是在主機(jī)上實(shí)現(xiàn)Spark 偽分布式部署,便可以開展Spark 程序的邏輯調(diào)試.但是如果要在Hadoop 分布式環(huán)境下測試程序,則必須采用Spark on YARN 模式實(shí)現(xiàn)Spark 與Hadoop 平臺(tái)的對(duì)接.
在開展Hadoop 全分布式模式實(shí)驗(yàn)時(shí),需要數(shù)臺(tái)計(jì)算機(jī)構(gòu)成集群來實(shí)現(xiàn)大數(shù)據(jù)平臺(tái).然而,為每個(gè)學(xué)生配備幾臺(tái)物理機(jī)來做實(shí)驗(yàn)并不現(xiàn)實(shí),主要是因?yàn)槌杀具^高、維護(hù)不易,而且資源利用率很低.此時(shí),可以在單機(jī)上采用虛擬化技術(shù),從一臺(tái)物理機(jī)中虛擬出好幾臺(tái)虛擬機(jī),并將這些虛擬機(jī)通過虛擬網(wǎng)絡(luò)連接成大數(shù)據(jù)集群.
圖8是基于虛擬化技術(shù)的單機(jī)大數(shù)據(jù)實(shí)驗(yàn)平臺(tái)架構(gòu).虛擬化技術(shù)就是指將宿主物理主機(jī)上內(nèi)存、CPU、存儲(chǔ)、網(wǎng)絡(luò)等硬件資源通過虛擬化管理程序(hypervisor)統(tǒng)一調(diào)度,并分配給多臺(tái)虛擬機(jī)使用,虛擬機(jī)之間雖然共享宿主機(jī)上的硬件資源,但是相互之間卻互不干擾,在邏輯上相互獨(dú)立.虛擬化技術(shù)實(shí)現(xiàn)了物理資源到邏輯資源的轉(zhuǎn)化,解決了物理資源使用效率低、成本高等問題.
單機(jī)上常用的虛擬化軟件有商業(yè)軟件VMware workstation,以及開源的Oracle VM VirtualBox 等.虛擬機(jī)可以通過拷貝文件或文件夾的形式在物理機(jī)之間相互復(fù)制,因此只需要制作一套虛擬機(jī)即可在所有的物理機(jī)之間共享,可以節(jié)省大量的系統(tǒng)安裝時(shí)間.
由于所有虛擬機(jī)實(shí)際上都在使用宿主機(jī)的資源,因此如果想在宿主機(jī)上仿真一個(gè)集群,宿主機(jī)的配置必須高于所有虛擬機(jī)配置的總和,例如:如果同時(shí)啟動(dòng)5 臺(tái)虛擬機(jī),每臺(tái)平均分配內(nèi)存4 GB、硬盤50 GB、1 個(gè)CPU 核,則宿主機(jī)的配置應(yīng)是內(nèi)存不少于24~32 GB、硬盤不少于300 GB、CPU 不少于6~8 核.
圖8 基于虛擬化技術(shù)的單機(jī)大數(shù)據(jù)實(shí)驗(yàn)平臺(tái)架構(gòu)
如果實(shí)驗(yàn)的內(nèi)容不是側(cè)重于大數(shù)據(jù)平臺(tái)的安裝、配置和運(yùn)維,而是側(cè)重于大數(shù)據(jù)平臺(tái)的使用及分布式應(yīng)用程序的開發(fā),就沒有必要為每個(gè)學(xué)生配置一套大數(shù)據(jù)集群,只需要所有學(xué)生共享一套大數(shù)據(jù)集群即可(如圖9所示).大數(shù)據(jù)集群向所有學(xué)生終端機(jī)提供包括HDFS、NoSQL 數(shù)據(jù)庫、Spark 計(jì)算的各類大數(shù)據(jù)服務(wù),學(xué)生終端機(jī)只需要安裝客戶端軟件及IDE (集成開發(fā)環(huán)境),用指定的用戶賬號(hào)登錄,即可通過Hadoop CLI (Command-Line Interface,命令行界面)或API 訪問大數(shù)據(jù)集群.
雖然單機(jī)上的虛擬化技術(shù)可以很好地用物理機(jī)虛擬出大數(shù)據(jù)實(shí)驗(yàn)集群,但是在這種方式中,所有的負(fù)載均由宿主機(jī)承擔(dān),因此對(duì)宿主機(jī)的配置要求比較高.然而,許多高校使用的電腦并沒有那么高的配置,無法在單機(jī)上實(shí)現(xiàn)虛擬機(jī)集群,此時(shí),應(yīng)采用云計(jì)算技術(shù)來實(shí)現(xiàn)共享大數(shù)據(jù)實(shí)驗(yàn)平臺(tái).
云計(jì)算的核心技術(shù)也是虛擬化技術(shù),但是與單機(jī)虛擬化不同的是,其后臺(tái)是由云平臺(tái)管理系統(tǒng)統(tǒng)一管理的物理機(jī)集群共同充當(dāng)提供資源的宿主機(jī),生成的虛擬機(jī)也是在物理機(jī)集群上運(yùn)行,客戶端通過網(wǎng)絡(luò)來訪問云平臺(tái)中的虛擬機(jī)(如DataNode 虛擬節(jié)點(diǎn)),或訪問云平臺(tái)提供的服務(wù)(如NoSQL 數(shù)據(jù)庫).
圖9 共享大數(shù)據(jù)集群的實(shí)驗(yàn)平臺(tái)
云計(jì)算可以分為公有云、私有云和混合云.公有云通常指第三方提供的、一般需通過 Internet 訪問的云.私有云是企業(yè)內(nèi)部單獨(dú)建立和使用的云,通常部署在企業(yè)數(shù)據(jù)中心的主機(jī)托管場所,位于防火墻內(nèi).私有云極大地保障了云平臺(tái)的安全,但是需要穩(wěn)定的云平臺(tái)部署場地,以及一支比較專業(yè)的云平臺(tái)硬件、軟件維護(hù)隊(duì)伍.
高校在建設(shè)大數(shù)據(jù)實(shí)驗(yàn)室的時(shí)候需根據(jù)自己的經(jīng)費(fèi)預(yù)算和實(shí)際需要,來選擇是使用公有云還是自建大數(shù)據(jù)私有云.如果是一兩個(gè)月就可結(jié)課的短期課程,有移動(dòng)性需求(如疫情期間開展網(wǎng)絡(luò)實(shí)驗(yàn)),Internet 速度和穩(wěn)定性能夠得到保證的情況下,可以從公有云租借Linux 服務(wù)器或Hadoop 集群開展大數(shù)據(jù)實(shí)驗(yàn).公有云服務(wù)商有阿里云、百度云、騰訊云、華為云、亞馬遜云等.而有固定實(shí)驗(yàn)場所以及服務(wù)器機(jī)房的院??纱罱ù髷?shù)據(jù)私有云.
云平臺(tái)的虛擬化通常采用應(yīng)用容器引擎Docker來實(shí)現(xiàn),Docker 容器是當(dāng)前最主流的云服務(wù)解決方案.與KVM、Xen 等云平臺(tái)生成虛擬機(jī)時(shí)會(huì)包括完整操作系統(tǒng)不同,Docker 容器是建立在操作系統(tǒng)上的輕量級(jí)虛擬化技術(shù),直接和宿主機(jī)的操作系統(tǒng)內(nèi)核交互,性能損耗較少,容器的創(chuàng)建和啟動(dòng)都很迅速.使用Docker 容器打包和快速運(yùn)行大數(shù)據(jù)集群,可以節(jié)省大量的安裝、配置系統(tǒng)、設(shè)置參數(shù)及運(yùn)行的時(shí)間.為了便于管理,常采用大規(guī)模容器編排管理框架Kubernetes來統(tǒng)一規(guī)劃和部署Docker 容器.
圖10是大數(shù)據(jù)云平臺(tái)的體系結(jié)構(gòu),底層是云平臺(tái)物理集群的物理硬件資源,包括CPU 運(yùn)算資源、陣列存儲(chǔ)資源、網(wǎng)卡網(wǎng)絡(luò)資源.再上一層便是虛擬化管理程序,負(fù)責(zé)將所有的硬件資源虛擬化并放入統(tǒng)一管理和分配的虛擬資源池,然后通過虛擬機(jī)來對(duì)用戶需要的計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源進(jìn)行定制和封裝,并通過網(wǎng)絡(luò)提交給終端用戶使用.
圖10 大數(shù)據(jù)云平臺(tái)的體系結(jié)構(gòu)
相關(guān)的軟件及特定的配置以容器鏡像的形式存儲(chǔ),在上實(shí)驗(yàn)課之前,可快速地從容器鏡像中克隆出大量的虛擬機(jī)并供學(xué)生使用,每個(gè)學(xué)生可根據(jù)需要得到一個(gè)實(shí)驗(yàn)虛擬機(jī)集群,集群間相互隔離、互不干擾,實(shí)驗(yàn)結(jié)束后,所有虛擬機(jī)被回收,其資源被重新放回云平臺(tái)的資源池供下次分配使用.
云計(jì)算從低到高分為IaaS (Infrastructure as a Service,基礎(chǔ)設(shè)施即服務(wù))、PaaS (Platform as a Service,平臺(tái)即服務(wù))、SaaS (Software as a Service,軟件即服務(wù))3 層.IaaS 是最底層云服務(wù),提供一些基礎(chǔ)資源服務(wù),PaaS 提供軟件研發(fā)平臺(tái),SaaS 將軟件的開發(fā)、管理、部署都交給第三方,用戶不需要關(guān)心技術(shù)問題.
大數(shù)據(jù)實(shí)驗(yàn)云平臺(tái)可以提供純的Linux 云服務(wù)器(IaaS 級(jí),需學(xué)生自己進(jìn)一步安裝Hadoop、Spark 各類組件),或是已經(jīng)預(yù)裝不同組件的大數(shù)據(jù)云服務(wù)器(PaaS 級(jí),已經(jīng)預(yù)裝了各類組件,直接提供HDFS、Hive 等服務(wù)),或具體的大數(shù)據(jù)應(yīng)用(SaaS 級(jí),如大數(shù)據(jù)實(shí)訓(xùn)項(xiàng)目).
大數(shù)據(jù)私有云由一臺(tái)管理服務(wù)器、若干計(jì)算服務(wù)器,以及眾多學(xué)生實(shí)驗(yàn)終端機(jī)構(gòu)成.表2是60 人大數(shù)據(jù)實(shí)驗(yàn)教學(xué)云平臺(tái)的主要硬件設(shè)備配置示例(不含網(wǎng)絡(luò)設(shè)備、機(jī)柜、軟件).計(jì)算服務(wù)器的數(shù)量與實(shí)驗(yàn)人數(shù)成正比,若滿足150 人上機(jī),大約需要管理服務(wù)器2~3 臺(tái)、計(jì)算服務(wù)器15 臺(tái)及150 臺(tái)學(xué)生終端機(jī)(設(shè)備數(shù)量及配置僅供參考,具體實(shí)施時(shí)需根據(jù)實(shí)際負(fù)載來確定).
表2 大數(shù)據(jù)云平臺(tái)主要硬件設(shè)備配置示例
圖11是一個(gè)基于大數(shù)據(jù)云平臺(tái)的典型實(shí)驗(yàn)過程.實(shí)驗(yàn)用戶可以申請不同配置的Hadoop/Spark 集群.申請成功后,云平臺(tái)會(huì)從資源池中劃出資源,分配給從容器鏡像中克隆出來的Hadoop 容器集群.此時(shí)實(shí)驗(yàn)用戶可將實(shí)驗(yàn)數(shù)據(jù)從網(wǎng)絡(luò)存儲(chǔ)(如果實(shí)驗(yàn)數(shù)據(jù)和容器分開存放的話)中加載到Hadoop 集群的HDFS 中.然后實(shí)驗(yàn)用戶可以在學(xué)生終端機(jī)上,通過Hadoop CLI、sparkshell 命令、或通過裝有Java、Scala、Python、R 等語言模塊的IDE,輸入大數(shù)據(jù)操作的各種命令,或開發(fā)大數(shù)據(jù)應(yīng)用程序.在實(shí)驗(yàn)過程中,可從分析挖掘算法庫中調(diào)入事先做好的大數(shù)據(jù)分析挖掘算法,最后的分析結(jié)果以報(bào)表、圖表等可視化形式展示.為了方便數(shù)據(jù)共享,容器鏡像庫、實(shí)驗(yàn)數(shù)據(jù)庫、分析挖掘算法庫可存儲(chǔ)在網(wǎng)絡(luò)云盤或?qū)ο蟠鎯?chǔ)服務(wù)器中.
在大數(shù)據(jù)實(shí)驗(yàn)的硬件環(huán)境基礎(chǔ)上,還需要科學(xué)設(shè)計(jì)大數(shù)據(jù)實(shí)驗(yàn)課程體系及實(shí)驗(yàn)項(xiàng)目,必須以滿足未來用人單位對(duì)大數(shù)據(jù)人才專業(yè)技能的需求為導(dǎo)向,分析大數(shù)據(jù)專業(yè)理論課的知識(shí)點(diǎn)分布,科學(xué)、合理地構(gòu)建實(shí)驗(yàn)體系并設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目.圖12是大數(shù)據(jù)實(shí)驗(yàn)課程體系,表3是大數(shù)據(jù)實(shí)驗(yàn)項(xiàng)目的列表.
圖11 基于大數(shù)據(jù)云平臺(tái)的典型實(shí)驗(yàn)過程
為了全方面培養(yǎng)大數(shù)據(jù)人才的專業(yè)實(shí)踐技能.大數(shù)據(jù)實(shí)驗(yàn)體系應(yīng)包括以下4 類實(shí)驗(yàn)項(xiàng)目:
(1)基礎(chǔ)實(shí)驗(yàn):包括計(jì)算機(jī)科學(xué)基礎(chǔ)、編程語言、數(shù)據(jù)采集及預(yù)處理、數(shù)學(xué)統(tǒng)計(jì)分析等實(shí)驗(yàn).
(2)大數(shù)據(jù)基礎(chǔ)實(shí)驗(yàn):包括主流大數(shù)據(jù)平臺(tái)Hadoop中的各類組件實(shí)驗(yàn),如HDFS、Storm、HBase、Hive、Redis、MongoDB、Flume、Sqoop、Kafka、YARN、Oozie、Zookeeper 等實(shí)驗(yàn).
(3)大數(shù)據(jù)進(jìn)階實(shí)驗(yàn):包括主流大數(shù)據(jù)分布式計(jì)算框架Spark、Mapreduce 的編程實(shí)驗(yàn),Mahout、MLlib等機(jī)器學(xué)習(xí)組件實(shí)驗(yàn),及數(shù)據(jù)倉庫和聯(lián)機(jī)分析處理實(shí)驗(yàn).
(4)大數(shù)據(jù)實(shí)戰(zhàn)項(xiàng)目:結(jié)合不同行業(yè)數(shù)據(jù)的實(shí)戰(zhàn)項(xiàng)目,如電子商務(wù)、物聯(lián)網(wǎng)、農(nóng)業(yè)、環(huán)境監(jiān)控、金融等領(lǐng)域的大數(shù)據(jù)分析實(shí)戰(zhàn)項(xiàng)目.
建設(shè)一個(gè)軟硬件搭配合理、性價(jià)比高的大數(shù)據(jù)實(shí)驗(yàn)室,必須考慮眾多因素.本科院校、專科院校大數(shù)據(jù)專業(yè)的培養(yǎng)目標(biāo)互不相同,不同院校及專業(yè)需要考慮畢業(yè)生將來的職業(yè)定位以及所需要的知識(shí)結(jié)構(gòu),有針對(duì)性地開設(shè)相關(guān)課程及實(shí)驗(yàn)項(xiàng)目,以充實(shí)學(xué)生的專業(yè)知識(shí)、提高學(xué)生的大數(shù)據(jù)實(shí)踐技能.同時(shí),還要考慮業(yè)界主流的大數(shù)據(jù)技術(shù)的生態(tài)系統(tǒng),選取被業(yè)界認(rèn)可的通用框架作為實(shí)驗(yàn)平臺(tái).根據(jù)預(yù)算及現(xiàn)有的實(shí)驗(yàn)條件,合理制定大數(shù)據(jù)實(shí)驗(yàn)室的建設(shè)方案.院??梢越⒒趩螜C(jī)工作站的實(shí)驗(yàn)環(huán)境,也可以建立擴(kuò)展性和可管理性更高的、基于私有云或公有云的實(shí)驗(yàn)環(huán)境.除硬件環(huán)境外,大數(shù)據(jù)實(shí)驗(yàn)體系及實(shí)驗(yàn)項(xiàng)目等軟環(huán)境的建設(shè)也是大數(shù)據(jù)實(shí)驗(yàn)室建設(shè)的重要內(nèi)容.隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,院校在大數(shù)據(jù)的實(shí)驗(yàn)環(huán)境、實(shí)驗(yàn)內(nèi)容方面要不斷推陳出新,才能夠源源不斷地向社會(huì)輸送合格的大數(shù)據(jù)專業(yè)人才.
圖12 大數(shù)據(jù)實(shí)驗(yàn)課程體系
表3 大數(shù)據(jù)實(shí)驗(yàn)項(xiàng)目
續(xù)表 3