林子雨
廈門大學信息科學與技術學院, 福建 廈門 361005
大數據帶來了信息技術的巨大變革,對社會生產和人們生活的各個領域都產生著深刻的影響[1-4],所到之處,或是顛覆,或是提升,讓人們深切感受到了大數據實實在在的威力。對于一個國家而言,能否緊緊抓住大數據發展機遇,快速形成核心技術和應用并參與新一輪的全球化競爭,將直接決定未來若干年世界范圍內各國科技力量博弈的格局。大數據專業人才的培養是新一輪科技較量的基礎,高等院校承擔著大數據人才培養的重任,因此,各高等院校非常重視大數據課程的開設,大數據課程已經成為信息相關專業的重要核心課程。北京大學、廈門大學、中國人民大學等一批高校在國內率先開設大數據課程。2016年,北京大學、中南大學、對外經貿大學3所高校成為國內首批獲得教育部批準設立“數據科學與大數據技術”專業的本科院校,此后,教育部又于2017年和2018年分別批準32所和248所本科院校設立數據科學與大數據技術專業。與此同時,根據教育部公布的“大數據技術與應用”專業備案和審批結果顯示,截至目前,已經有累計208所職業院校獲批“大數據技術與應用”專業。“數據科學與大數據技術”專業和“大數據技術與應用”專業一般被統稱為“大數據專業”。隨著大數據專業在國內眾多高校中開設,大數據專業人才的培養邁入了全新的階段。
大數據專業作為典型的“新工科”專業,在課程體系建設方面還處于摸索階段[5],沒有太多可供借鑒的現成經驗,需要一大批熱愛教學的高校教師積極投身課程體系和教材的建設工作中,共同推動全國高校大數據教學工作不斷向前發展。廈門大學數據庫實驗室作為國內高校較早從事大數據教學資源建設的團隊,從2013年開始,在大數據課程建設方面開展了很多有意義的嘗試和探索,本文將分享筆者團隊在這些方面的工作成果和經驗做法。
大數據專業課程涵蓋范圍較廣,從學科角度而言,包括了數學(高等數學、線性代數、離散數學、數學建模等)、計算機(算法、數據結構、程序設計、數據庫、操作系統、數據挖掘等)、統計(概率論與數理統計、多元統計分析等)等多學科知識。從數據分析流程角度而言,大數據專業課程包含了數據分析全流程的各種技術,包括數據采集、數據存儲與管理、數據處理與分析、數據可視化等各個環節的技術。
本文探討的大數據課程是指數據分析全流程涉及的大數據技術類課程。需要強調指出的是,在這些大數據技術類課程中,并非所有課程都是大數據時代新生的課程,比如,數據采集課程主要講解網絡爬蟲技術,這些技術在大數據時代到來之前就已經存在很多年了,并非到了大數據時代才誕生。同理,數據可視化也是經歷了多年發展的“老課程”,知識內容并沒有因為大數據的出現而發生本質的變化。實際上,大數據技術之所以受到熱捧,主要在于以Hadoop和Spark為代表的分布式框架解決了以較低的成本實現海量數據的存儲和計算的問題。因此,本文探討的大數據課程主要聚焦分布式存儲和分布式處理這兩個層面的大數據技術,這也是大數據課程區別于傳統的計算機專業課程的一個重要方面。
經過上述聚焦以后,大數據課程建設的難點主要表現在以下幾個方面。
(1)缺少大數據課程體系
雖然本文把大數據課程聚焦到分布式存儲和分布式處理這兩個層面的大數據技術,但是,依然涵蓋了大量新的知識內容。大數據技術體系非常龐雜,在分布式存儲層面,涉及NoSQL數據庫、分布式文件系統等內容;在分布式計算層面,涉及批處理、流計算和圖計算等內容。如果要深入學習,每種技術都可以成為一門獨立的課程。因此,如何系統歸納整理相關大數據技術,并且按照高校教學計劃循序漸進地展開,是一個棘手的問題。此外,如何做好不同課程之間的知識布局,也具有較高的難度。因為在課程體系的建設上,需要做到課程與課程之間的“知識分割不重復”和“知識傳承不斷層”,讓教師教課有綱可循,讓學生學習脈絡清晰。
(2)缺少大數據課程教材
一門課程的順利開設,離不開高質量的教材。作為新興的專業,教材缺乏是一個正常的現象,也是必須面對和解決的問題。市場上已有的很多大數據書籍[6-11]屬于工具類數據,不適合作為高校教材。
(3)缺少大數據教學資源
教材只能滿足開課的基本需求,如果要獲得較好的教學效果,就必須建設大量配套的教學資源,比如PPT、MOOC、實驗手冊等,而在專業建設的初始時期,這些資源都是相對比較欠缺的。
(4)缺少大數據課程師資
一門課程開設質量的高低取決于師資水平。若要教出合格的學生,就必須要求教師具備一定的大數據知識儲備和編程實踐能力。大數據課程需要教師具備大數據實驗環境構建能力,掌握系統的大數據知識,具備開展編程實踐的能力。而對于承擔計算機類課程教學任務的很多教師而言,如果沒有系統學習大數據知識,顯然不具備這方面的能力。
(5)大數據環境搭建復雜
大數據實驗環境的搭建涉及Linux系統、虛擬機軟件、JDK、Hadoop、Spark、HBase、Hive等多種開源軟件的安裝,安裝過程涉及大量配置,需要具有一定的計算機操作功底,才能夠順利完成實驗環境的搭建。而且有時候同樣的操作方法,在某臺計算機上可以成功,在另一臺計算機上卻會失敗。這些給任課教師和學生帶來了很大的挑戰。
(6)大數據學習門檻高
大數據知識體系的龐雜、大數據實驗環境搭建的復雜性以及分布式編程的新知識都會成為大數據學習者很難跨越的“門檻”。如何有效降低大數據學習門檻,提高學習效率和效果,是開設大數據課程必須要解決的難題。
(7)不同高校的差異化需求給教材建設帶來了挑戰
重點本科院校、普通本科院校和高職院校對人才培養的目標和方向都不盡相同,這種差異會在課程內容方面得到體現。因此,有些高校會更加側重理論知識的講解,而有些高校則會更注重學生技術應用能力的培養。這就要求課程教材和課程內容在知識點的布局和課時安排方面有不同的側重點。如何根據現有的教材進行教學內容的個性化定制,是實際教學環節普遍遭遇的難題。
從2013年開始,經過為期5年的建設,廈門大學已經建成了涵蓋入門課程、進階課程和實訓課程在內的大數據課程體系(如圖1所示),已經可以提供包括教材、講義PPT、習題、案例、視頻、師資培訓等全方位的大數據課程服務。

圖1 廈門大學建設的大數據課程體系
在大數據專業課程體系中,數學、編程、算法、數據結構、操作系統、數據庫、數據挖掘等課程屬于歷史已有課程,已經存在大量教材和配套資源,而分布式存儲和計算框架則屬于進入大數據時代以后的較新的課程,相關教學資源較為缺乏,因此,筆者單位選擇大數據課程作為教學資源建設重點,投入大量人力、物力、財力,建設了全套的大數據課程資源。其中,“大數據技術原理與應用”屬于大數據導論課程,旨在引導學生進入大數據世界,由單機環境進入分布式環境,面對和處理大數據問題[12-13]。“Spark編程基礎”屬于進階級大數據課程,旨在幫助學生系統掌握當前流行的分布式并行編程框架Spark的編程方法[14]。“大數據實訓”課程旨在滿足高校開設綜合實訓課程的教學需求,案例涵蓋數據預處理、存儲、處理、分析、可視化等數據處理全流程涉及的各種典型操作和大數據軟件,可以全面訓練學生的大數據分析全流程的能力。
“大數據技術原理與應用”課程是廈門大學數據庫實驗室建設的較為成熟的大數據課程,不僅在廈門大學受到學生的歡迎,而且已經推廣到了國內很多高校。因此,本節內容將介紹這門課程的建設情況,包括課程定位、培養目標、預備知識、大數據與云計算課程之間的知識切割、課程內容與學時安排、課程教材、實驗環境搭建、配套資源建設、在線服務平臺、線下培訓與交流等。
該課程定位為入門級大數據技術課程,為學生搭建起通向“大數據知識空間”的橋梁和紐帶。課程系統地梳理總結大數據相關技術,介紹大數據技術的基本原理和大數據主要應用,幫助學生形成對大數據知識體系及其應用領域的輪廓性認識,為學生在大數據領域“深耕細作”奠定基礎、指明方向。在本課程學習的基礎上,感興趣的學生還可以通過其他工具書(如《Hadoop權威指南》等)繼續深入學習和實踐大數據相關技術。
“大數據技術原理與應用”課程的預期目標如下。
● 能夠建立對大數據知識體系的輪廓性認識,了解大數據發展歷程、基本概念、主要影響、應用領域、關鍵技術、計算模式和產業發展,了解云計算、物聯網的概念及其與大數據之間的緊密關系。
● 能夠了解Hadoop的發展歷史、重要特性、應用現狀、Hadoop項目結構及其各個組件,并熟練掌握Hadoop平臺的安裝和使用方法。
● 能夠了解分布式文件系統的基本概念、結構和設計需求,掌握Hadoop分布式文件系統(HDFS)的重要概念、體系結構、存儲原理和讀寫過程,熟練掌握HDFS的使用方法。
● 能夠了解分布式數據庫HBase的訪問接口、數據模型、實現原理和運行機制,并熟練掌握HBase的使用方法。
● 能夠了解NoSQL數據庫與傳統的關系數據庫的差異、NoSQL數據庫的四大類型以及NoSQL數據庫的三大基石;基本掌握Redis、MongoDB等NoSQL數據庫的使用方法。
● 能夠了解云數據庫的概念、基本原理和代表性產品的使用方法。
● 能夠熟練掌握分布式編程框架MapReduce的基本原理和編程方法。
● 能夠了解大數據處理架構Spark的基本原理和編程方法。
● 能夠了解大數據在互聯網等領域的典型應用。
“大數據技術原理與應用”屬于大數據導論課程,引導學生進入大數據世界。因此,在學習該課程之前,需要學生已經學習過算法、數據結構、程序設計、數據庫、操作系統等計算機類課程。
目前,很多高校已經開設了大數據課程和云計算課程。由于大數據課程與云計算課程有著千絲萬縷的聯系,因此,如果不能對這兩門課程的知識點進行合理切割,就會給實際教學環節造成很大的困擾,不僅會影響教師的教學,也會導致學生的重復學習。
云計算和大數據二者具有深厚的淵源。云計算的普及早于大數據,2006年亞馬遜公司就推出了云計算產品Amazon AWS,而大數據概念被大眾所熟知是在2010年左右。在大數據概念被廣泛使用之前,以Hadoop為代表的大數據技術都被列為云計算技術,因此2010年之前出版的許多云計算教材[15]通常有大量的篇幅介紹Hadoop等大數據技術,這類教材可以被稱為復合型云計算教材。但是,2010年以后,以Hadoop為代表的分布式存儲技術和分布式處理技術都被單獨剝離出來,成為大數據技術。從這個角度來說,可以認為云計算為大數據提供了技術支撐。現在大家談到云計算,主要是指為人類提供IT資源的一種全新商業模式及其背后涉及的相關技術。作為一種全新的商業模式,云計算徹底顛覆了人類獲得IT資源的方式,云計算服務商可以通過網絡、以服務的方式提供非常廉價的IT資源。
云計算和大數據存在如此緊密的關系,導致部分高校開設的云計算課程和大數據課程存在高度的知識重合,也就是說,兩門課程都有大量的篇幅介紹Hadoop等大數據技術。為了解決這個尷尬的問題,就需要改變兩門課程選擇的教材,因為教材內容往往決定了課程的內容。云計算課程選擇的教材應該盡量避免采用包含了大量大數據知識的復合型云計算教材,而應該采用單一型云計算教材。在單一型云計算教材中[16],Hadoop等屬于大數據課程的內容不會作為核心內容,只會用一個章節簡要介紹Hadoop等大數據技術。
采用單一型云計算教材以后,云計算和大數據兩門課程的知識重點就有了明顯的區分,不會重合,具體如下[17]。
(1)云計算課程的教學重點
云計算課程內容主要包括:云計算概念、云計算體系架構、數據中心、虛擬化技術(平臺虛擬化、資源虛擬化、虛擬機的動態遷移、云操作系統)、SOA架構及開發技術、云數據中心設計與測試、云數據中心維護與管理、云安全架構、桌面云、PaaS應用開發平臺、開源的云計算管理平臺Openstack、Docker容器、大數據存儲與管理(最多2個學時)。
(2)大數據的教學重點
大數據課程內容主要包括:大數據的基本概念、Hadoop、HDFS、HBase、NoSQL數據庫、云數據庫、MapReduce、Spark、流計算、圖計算、數據可視化以及大數據在互聯網、生物醫學和物流等各個領域的應用。
該課程在Hadoop、HDFS、HBase、MapReduce、Spark等重要章節安排了入門級的實踐操作,讓學生更好地學習和掌握大數據關鍵技術。具體學時安排見表1。
需要指出的是,在具體開展這門課程的教學時,各個高校可以根據自身的實際情況和特點,對課程內容進行適當調整。如果對理論層面內容比較注重,則可以適當地深入講解理論內容,減少實驗編程學時(比如可以把一些編程上機操作留作學生課后作業);如果更加注重實踐操作層面,則可以減少理論內容的講解,補充一些編程案例到課堂教學中。
該課程將筆者編著的《大數據技術原理與應用(第2版)》作為課程教材[12]。該教材共分四大部分,包括大數據基礎篇、大數據存儲篇、大數據處理與分析篇和大數據應用篇。在大數據基礎篇中,介紹了大數據的基本概念和應用領域,闡述了大數據、云計算和物聯網的相互關系,并重點介紹了大數據處理架構Hadoop。由于Hadoop已經成為應用最為廣泛的大數據技術,因此,該書的大數據相關技術主要圍繞Hadoop展開,包括Hadoop MapReduce、HDFS和HBase。在大數據存儲篇中,分別介紹了大數據存儲相關技術的概念與原理,包括HDFS、HBase、NoSQL數據庫和云數據庫。在大數據處理與分析篇,介紹了大數據處理和分析的核心技術——MapReduce,然后,介紹了大數據時代兩種新興的數據分析技術——流計算和圖計算,最后簡單介紹了可視化技術。在大數據應用篇,介紹了大數據在互聯網、生物醫學和物流等各個領域的典型應用。
《大數據技術原理與應用(第2版)》屬于入門級教材,它和進階級大數據教材《Spark編程基礎(Scala版)》[14]以及大數據實訓案例系列教材一起構成了可以滿足高校教學需求的大數據教材體系。
在高校大數據教學過程中,實踐是很重要的環節。因此,很多高校在開設大數據課程時,不僅要選擇好的教材,同時也要選擇好的大數據實驗平臺。總體而言,當前國內有以下幾種大數據實驗平臺方案。
(1)建設統一的大數據實驗機房
條件較好的高校可以建設統一的大數據機房,為師生提供大數據上機環境。機房建設的方案也各有不同,部分高校采用“云桌面”解決方案,還有一部分高校采用“小集群”解決方案。在“云桌面”解決方案中,需要在機房部署一個中央服務器,通過虛擬化技術可以構建出多個虛擬化主機,學生在終端機(相當于云桌面)上通過網絡連接到中央服務器,中央服務器會為其分配一個虛擬機,學生在虛擬機上完成各種實驗操作。在“小集群”解決方案中,可以為每個學生分配一臺物理計算機,然后,由3~5個學生組成一個小組,讓每個小組內部的多臺計算機組建一個物理的集群,學生在集群中開展各種實驗。
(2)單機構建實驗環境
單機構建實驗環境主要是為了滿足教師和學生課后學習實踐大數據時的需求。因為機房統一上機的時間相對有限,大數據的學習還需要學生課后在自己的計算機上開展上機實踐。單機構建大數據實驗環境可以采用“虛擬機”和“雙系統”兩種方式。在“虛擬機”方式中,需要啟動進入Windows系統,在系統中安裝虛擬機軟件,比如VMWare或者VirtualBox,然后,在虛擬機軟件上安裝Linux操作系統,再在Linux操作系統上安裝Hadoop等大數據相關軟件。若采用“雙系統”的方式,在開機啟動時,可以直接選擇進入Linux系統,開展大數據實驗。
(3)實驗室多機構建分布式環境
如果實驗室有多臺計算機可用,則可以利用這些機器構建一個集群,實現真正的分布式環境,從而完成一些科研數據的處理分析。通過多機的分布式計算,可以大大提高科研數據分析的效率。
課程配套資源的建設是打造一門優質課程的重要環節。為了方便高校教師開設大數據課程,提高學生的課程學習效果,筆者團隊制作了豐富的課程配套資源,包括講義PPT、習題、實驗手冊、技術博客和課程視頻等,并通過MOOC平臺發布。

表1 “大數據技術原理與應用”課程內容與學時安排
豐富的課程配套資源必須通過方便快捷的方式傳播給大數據學習者,只有這樣才能充分發揮配套學習資源的價值。為此,筆者團隊專門為課程配套建設了高校大數據課程公共服務平臺,旨在促進國內高校大數據課程體系建設,提高大數據課程教學水平,降低大數據課程學習門檻,提升學生課程學習效果。該平臺為全國高校教師和學生提供大數據教學資源一站式“免費”在線服務,包括課程教材、講義PPT、課程習題、實驗指南、學習指南、備課指南、授課視頻和技術資料等。
具備合格的師資力量是各個高校開設大數據課程的前提條件。由于大數據知識體系較新,很多高校不具備大數據師資儲備。因此,筆者團隊通過“公益”師資培訓、大型研討會、大數據公開課全國高校巡講等活動,向全國高校傳播大數據教學、普及大數據知識體系的同時,使不同高校教師互相分享教學理念和教學方法,共同推進中國高校大數據專業教學的發展。
大數據時代已經全面開啟,高校大數據課程體系建設正在加速推進。目前,一些尚未開設大數據專業的高校已經在計算機和軟件工程等專業中開設了大數據課程,以達到拓展學生知識結構、增強人才核心競爭力的目的。而對于已經開設了大數據專業的高校而言,更是把大數據課程作為核心課程進行重點建設,一方面通過參加師資培訓鍛煉教師隊伍,另一方面建設高水平的大數據實訓實驗室,滿足大數據課程對實驗環境的要求。各所高校都在為如何做好大數據專業做出有益的嘗試和探索。筆者相信,未來的3~5年內,在全國高校大數據教育工作者和企業界的共同努力下,高校大數據課程體系會逐漸走向完善,高校大數據教學水平會不斷邁上新的臺階。