李 弋,張為華,趙文耘
(復旦大學 軟件學院,上海 201203)
面向系統(tǒng)觀培養(yǎng)的大數(shù)據(jù)系統(tǒng)課程建設
李 弋,張為華,趙文耘
(復旦大學 軟件學院,上海 201203)
分析計算機系統(tǒng)基礎(ICS)課程教學中存在的問題——內(nèi)容缺乏綜合性、未結合最新技術、兩學期教學不利于學生的系統(tǒng)認知等,提出強化系統(tǒng)觀培養(yǎng)的ICS后繼課程——大數(shù)據(jù)系統(tǒng)教學設計,包括課程的目標、理念,內(nèi)容、實驗設計以及它和ICS之間的關系。
系統(tǒng)教育;計算機系統(tǒng)基礎;大數(shù)據(jù);系統(tǒng)觀
隨著信息技術的發(fā)展,計算機系統(tǒng)處理的對象呈現(xiàn)網(wǎng)絡化、多媒體化、大數(shù)據(jù)化、智能化等特征。計算模式發(fā)生了改變,形成嵌入式計算、移動計算、并行計算、服務計算等多種計算模式。這些變化對計算機專業(yè)人才的系統(tǒng)知識結構、大局觀和創(chuàng)新能力提出了更高的要求。
為了應對挑戰(zhàn),ACM/IEEE CS2013[1]在課程體系中增加了新的系統(tǒng)課程。教育部高等學校計算機類專業(yè)教學指導委員會(以下簡稱教指委),組織開展對計算機專業(yè)學生能力培養(yǎng)和實踐教學體系的研究[2],總結了計算機專業(yè)高級人才應具有的四大專業(yè)基本能力:計算思維能力、算法設計與分析能力、程序設計與實現(xiàn)能力和系統(tǒng)能力,其中系統(tǒng)能力占總能力的75%。通過分析計算技術的發(fā)展,教指委明確系統(tǒng)能力表現(xiàn)“在掌握計算機系統(tǒng)基本原理的基礎上,熟悉如何進一步開發(fā)構建以計算技術為核心的應用系統(tǒng)”[2]。
根據(jù)系統(tǒng)能力培養(yǎng)的內(nèi)涵和需求,教指委提出了課程體系設置的總體思路,建議開設基礎課程計算機系統(tǒng)基礎(以下簡稱ICS)[2]。ICS課程由卡耐基·梅隆大學(CMU)的Bryant等人[3]開發(fā),綜合介紹計算機系統(tǒng)的基礎概念。全球近300家機構,包括中國內(nèi)地的20多所高校開設了ICS課程。
國內(nèi)的ICS教學會結合實際情況對授課形式和內(nèi)容進行調(diào)整。普遍地,課程分兩學期講授,內(nèi)容的順序也有所調(diào)整。ICS課程的本地化取得了很好的教學效果,但教學中也存在一些不足,具體包括:課程組織松散,欠缺整體性;課程實驗綜合性不夠,不能促進學生全面理解系統(tǒng);內(nèi)容沒有體現(xiàn)計算機系統(tǒng)的技術發(fā)展趨勢。
為了彌補ICS教學的不足,強化對系統(tǒng)概念的綜合理解,培養(yǎng)系統(tǒng)觀,筆者提出將大數(shù)據(jù)處理建設成一門系統(tǒng)課程,并將其作為ICS的后繼課程。課程由理論和實驗組成:理論以熱門的大數(shù)據(jù)處理為載體,結合大數(shù)據(jù)系統(tǒng)的前沿技術,強化ICS的相關知識,促進學生對系統(tǒng)的整體認知;課堂實驗使學生熟悉相關主要系統(tǒng)和工具,課后綜合實驗提升學生理解和運用概念的能力,培養(yǎng)學生處理復雜系統(tǒng)的能力。
2.1 CMU的ICS課程介紹
ICS的目標是“解釋計算機系統(tǒng)的本質概念,并展示這些概念對應用程序正確性、性能和可用性的影響”[4]。學習后,學生應理解應用的運行,并編寫高性能的應用程序。
教材從程序員的角度出發(fā),分3部分介紹計算機系統(tǒng):
(1)程序結構和執(zhí)行:理解程序和硬件間的關系。描述程序及信息在硬件上的表示,介紹程序運行的硬件——處理器和存儲系統(tǒng),結合硬件特性優(yōu)化程序。
(2)程序在系統(tǒng)中的運行:理解程序和操作系統(tǒng)間的交互。介紹可執(zhí)行程序的生成;描述操作系統(tǒng)管理處理器和內(nèi)存資源的機制——進程和虛存,支持應用程序的運行。
(3)程序間的通信和交互:理解程序和外界的交互。系統(tǒng)I/O和網(wǎng)絡通信提供基本的交互機制;并發(fā)支持多種交互模式,更加高效地利用資源。
ICS共設計了9個課后實驗,覆蓋對應章節(jié)的基本概念。這些實驗提高了學生對課程的興趣,促進學生對基本概念的理解。
2.2 問題分析
ICS已成為國內(nèi)計算機專業(yè)系統(tǒng)能力培養(yǎng)的核心基礎課程,普遍在二年級分兩學期講授。ICS對計算機系統(tǒng)的綜合介紹,為后續(xù)課程的學習奠定了堅實基礎;促進了系統(tǒng)方向教學的改革。然而,現(xiàn)有課程內(nèi)容和授課組織等方面也存在以下不足:
(1)內(nèi)容組織相對松散,概念間結合不夠,不利于綜合理解。兩學期教學雖然讓學生有充裕的時間學習和理解,但破壞了連續(xù)性,妨礙學生對計算機系統(tǒng)的整體認識。
(2)實驗只覆蓋部分基礎概念,缺乏貫穿系統(tǒng)的綜合性實驗,不利于培養(yǎng)學生的系統(tǒng)觀和解決復雜系統(tǒng)問題的能力。
(3)內(nèi)容以經(jīng)典的PC系統(tǒng)為主,沒有結合當前主流技術的發(fā)展。學生日常生活多與大數(shù)據(jù)和移動計算相關,理論和生活的差異弱化了學習興趣。
ICS課程培養(yǎng)學生對計算機系統(tǒng)的基本認知;操作系統(tǒng)、計算機網(wǎng)絡、體系結構和編譯原理等課程,則聚焦方向的專門知識。在這種教學體系下,培養(yǎng)學生的系統(tǒng)觀需要一門綜合課程,彌補ICS教學的不足。該課程具有以下特點:
(1)基礎性:課程面向計算機專業(yè),構建在ICS基礎之上,開設在三年級。
(2)承接性和強化性:ICS的相關知識內(nèi)容在該課程中都有對應知識,是ICS課程相關知識的強化、遞進和綜合運用。
(3)面向技術潮流:內(nèi)容貼近日常生活,選自主流技術;并展現(xiàn)系統(tǒng)對應用的影響,促進學生系統(tǒng)理解和運用系統(tǒng)基礎知識。
大數(shù)據(jù)系統(tǒng)課程基于ICS,結合大數(shù)據(jù)處理的特點建立課程知識體系,介紹領域內(nèi)前沿進展,從3個方面強化系統(tǒng)觀的培養(yǎng):①課堂講授大數(shù)據(jù)系統(tǒng)對ICS擴展的核心知識;②通過課堂實驗讓學生了解大數(shù)據(jù)系統(tǒng)的各種軟件架構,掌握主流軟件框架和相關工具的使用;③通過課后實驗培養(yǎng)學生綜合運用系統(tǒng)知識解決復雜問題的能力。
3.1 總 述
隨著數(shù)據(jù)規(guī)模的不斷擴大和智能技術的發(fā)展,大數(shù)據(jù)計算成為熱點。大數(shù)據(jù)系統(tǒng)把任務分配到多臺機器上執(zhí)行,是一種分布式的系統(tǒng)。與PC系統(tǒng)相比,大數(shù)據(jù)系統(tǒng)具有多層次、高復雜性和綜合性強的特點。
大數(shù)據(jù)系統(tǒng)通過高速互聯(lián)網(wǎng)絡組成計算機集群,共享每個節(jié)點的計算和存儲資源。程序并行運行,訪問的存儲層次更復雜;程序運行和優(yōu)化涉及更多的因素。類比ICS課程,大數(shù)據(jù)系統(tǒng)的3層抽象邏輯如下:
(1)大數(shù)據(jù)系統(tǒng)程序結構和執(zhí)行:大數(shù)據(jù)應用通常為并行執(zhí)行,使用ICS課程的程序表示和網(wǎng)絡編程。計算機系統(tǒng)包括單節(jié)點系統(tǒng)和高速互聯(lián)部分。存儲系統(tǒng)中的本地存儲結構更復雜,還涉及遠程訪問等因素。在系統(tǒng)優(yōu)化時,除了性能優(yōu)化外,還涉及功耗優(yōu)化。應用Amdahl定律時,也要進行必要的調(diào)整。
(2)程序在大數(shù)據(jù)系統(tǒng)中的運行:大數(shù)據(jù)系統(tǒng)除涵蓋ICS的知識外,還涉及計算機集群運行時環(huán)境和資源管理的概念,同時還包括運行時的監(jiān)控、調(diào)度和優(yōu)化等。
(3)程序間的通信和交互:編程框架隱藏了ICS講授的實現(xiàn)細節(jié),MapReduce、內(nèi)存計算和圖計算擴展了并發(fā)編程的模型。
大數(shù)據(jù)系統(tǒng)在單個節(jié)點上應用ICS的知識,并擴展了每層的內(nèi)涵和外延。表1給出了大數(shù)據(jù)系統(tǒng)與ICS課程的對比,大數(shù)據(jù)系統(tǒng)不僅延續(xù)了ICS課程的內(nèi)容,還有很多相關知識的擴展和外延,同時體現(xiàn)了IT技術發(fā)展的主流趨勢。因此,大數(shù)據(jù)系統(tǒng)較適合作為ICS的后繼課程,大數(shù)據(jù)系統(tǒng)對相關知識的集中運用,強化了計算機系統(tǒng)的整體理解,鍛煉了學生處理復雜系統(tǒng)的能力,有助于培養(yǎng)學生的系統(tǒng)觀。
表1 大數(shù)據(jù)系統(tǒng)對ICS的擴展
3.2 理論內(nèi)容
理論內(nèi)容主要講授大數(shù)據(jù)系統(tǒng)的核心理論框架,整體可分為3層,包括硬件平臺(數(shù)據(jù)中心計算機)、軟件平臺(大數(shù)據(jù)系統(tǒng)的運行時)和大數(shù)據(jù)編程框架(開發(fā)大數(shù)據(jù)應用)。
數(shù)據(jù)中心計算機主要包括分布式計算和存儲系統(tǒng),以及高速互聯(lián)系統(tǒng)。同時,這部分還涉及可擴展性、容錯和低功耗等內(nèi)容。硬件的特性、組織結構和系統(tǒng)目標,影響軟件的構造和表現(xiàn)。因此,硬件平臺相關的授課內(nèi)容將圍繞這些方面展開。
軟件平臺介紹大數(shù)據(jù)應用運行的基礎服務,主要包括分布式文件系統(tǒng)、非結構化分布式數(shù)據(jù)庫、資源的管理和監(jiān)控以及任務的調(diào)度等。了解系統(tǒng)軟件運行時的功能、特性和工作原理,有利于實現(xiàn)高效的大數(shù)據(jù)應用。
編寫程序處理大規(guī)模數(shù)據(jù)非常具有挑戰(zhàn)性。大數(shù)據(jù)系統(tǒng)的編程框架,極大地簡化了這類應用的編程。根據(jù)應用的特點選擇編程框架是開發(fā)高效應用的關鍵。因此,課程將選擇代表性的大數(shù)據(jù)編程框架,如MapReduce,講授編程框架的特點和工作原理。
3.3 實踐設計
實踐分為課堂和課后實驗:課堂實驗促進學生理解知識體系,熟悉典型的環(huán)境和工具。課后實驗強化理論與實踐的結合,要求學生運用理論知識解釋應用的表現(xiàn),培養(yǎng)學生的綜合能力。
3.3.1 課堂實驗
大數(shù)據(jù)系統(tǒng)的核心軟件架構如圖1所示,包括分布式文件系統(tǒng)、數(shù)據(jù)存儲、公共服務、訪問模型、計算模型和數(shù)據(jù)分析等組件;基于不同的設計目標,每個組件有多種實現(xiàn)。課堂實驗基于主流大數(shù)據(jù)系統(tǒng)的典型組件開展。
圖1 典型大數(shù)據(jù)系統(tǒng)的軟件架構
Hadoop是開源的大數(shù)據(jù)計算平臺,廣泛應用于工業(yè)和學術界。Hadoop具有很好的兼容性和伸縮性,可支持一個組件的多種實現(xiàn)。課程可以根據(jù)教學需求構建實驗系統(tǒng)。
通過課堂演示和動手實踐,學生配置并使用Hadoop系統(tǒng)的核心典型組件。主要內(nèi)容包括:
(1)掌握分布式文件系統(tǒng)HDFS的框架、操作命令和訪問接口;
(2)掌握典型的NoSQL數(shù)據(jù)庫HBase的框架、操作命令和訪問接口;
(3)用Hive訪問HBase中的數(shù)據(jù);
(4)掌握基于編程框架的應用開發(fā),學習編程框架Spark和Storm;
(5)了解典型的大數(shù)據(jù)處理工具,如統(tǒng)計軟件RHadoop;
(6)學習Hadoop核心組件的配置,理解不同配置對系統(tǒng)性能的影響;特別地,通過制造故障展示容錯機制對系統(tǒng)的意義。
在實驗時,教師要引導學生觀察應用的表現(xiàn),結合理論分析現(xiàn)象的原因,幫助學生理解大數(shù)據(jù)處理平臺的運行,并強化基本概念的運用。
3.3.2 課后實驗
通過課后實驗的訓練,學生能初步綜合運用大數(shù)據(jù)系統(tǒng)提供的服務和相關的系統(tǒng)概念,獨立實現(xiàn)大數(shù)據(jù)應用。一方面,課后實驗要覆蓋大數(shù)據(jù)系統(tǒng)的各層面,以培養(yǎng)學生的綜合能力。另一方面,實驗不能太復雜,要兼顧不同能力的學生。
一般而言,學生此時已經(jīng)修完數(shù)據(jù)結構,課后實驗可選用海量數(shù)據(jù)排序TeraSort,要求學生分階段實現(xiàn)并優(yōu)化。學生在第一階段實現(xiàn)單機上內(nèi)存和外存排序的串行版本,并優(yōu)化性能;再實現(xiàn)并行多線程版本。在第二階段,學生基于MapReduce和Spark實現(xiàn)不同的大數(shù)據(jù)版本。在第三階段,學生分析應用的瓶頸,探索提高分布式應用程序性能的方法。
在實踐中,學生還應該理解:
(1)編寫單機和分布式程序的差異;
(2)數(shù)據(jù)的分布和讀寫方式,以及網(wǎng)絡架構對應用表現(xiàn)的影響;
(3)系統(tǒng)對硬件的使用方式可顯著影響應用的性能,如MapReduce和Spark。
作為ICS的后繼,大數(shù)據(jù)系統(tǒng)課程有多種開設方式,如圖2所示。課程可緊接在ICS之后開設,也可在其他系統(tǒng)專業(yè)課程(如體系結構、操作系統(tǒng)、計算機網(wǎng)絡和編譯原理等)之前、平行或之后開設。甚至,本課程可作為一門大規(guī)模的實踐課程獨立開設。大數(shù)據(jù)系統(tǒng)課程要根據(jù)與其他課程的先后關系和實際情況調(diào)整內(nèi)容,以適應學生的知識結構。
圖2 典型的開課方式
(1)一些高校基于Patt[5]或南大[6]的教材開設ICS課程,沒有涉及網(wǎng)絡和并發(fā)編程,因此,大數(shù)據(jù)系統(tǒng)課程需要增加這兩方面的知識。
(2)如果專業(yè)方向不用修讀系統(tǒng)專業(yè)課,課程應引入更多現(xiàn)代系統(tǒng)的概念并增加課時,提高系統(tǒng)能力培養(yǎng)的強度。
(3)針對不同層次的教育,授課內(nèi)容和方式可進一步調(diào)整。普通高??蓽p少理論內(nèi)容,強化課堂實驗,并結合實驗講授系統(tǒng)概念。
(4)針對學生的不同水平,綜合實驗部分可采取分層評分的方式。
數(shù)據(jù)中心計算機[7]可作為體系結構的參考。大數(shù)據(jù)技術還在持續(xù)發(fā)展,各方面知識需結合最新的研究進展和軟件版本作調(diào)整。講課時,課程內(nèi)容要根據(jù)實踐條件和學生接受情況進行調(diào)整。在課程知識體系穩(wěn)定后,可進行教材的整理和編寫。
由于大數(shù)據(jù)是各個領域研究的熱點,課程可結合最新研究進展引入研討環(huán)節(jié)。例如,結合近年主流會議或期刊的論文,組織學生深入研討一些開放性的內(nèi)容。課程實驗內(nèi)容也可根據(jù)各校具體情況進行調(diào)整和增強,如結合異構平臺的數(shù)據(jù)處理等。
針對現(xiàn)有ICS教學和系統(tǒng)課程培養(yǎng)知識體系的特點和不足,我們設計了“大數(shù)據(jù)系統(tǒng)”課程。課程理論結合實踐,通過構建大數(shù)據(jù)應用系統(tǒng),學生既了解了當前主流系統(tǒng)體系和最新研究進展,更強化了學生系統(tǒng)觀的培養(yǎng)。今后,我們可以參考大數(shù)據(jù)系統(tǒng)課程,建設Android移動平臺相關系統(tǒng)課程。該課程將作為我們的未來系統(tǒng)課程改革和建設的方向之一。
[1] Computer science curricula 2013[EB/OL]. [2016-07-03]. http://www.acm.org/education/CS2013-final-report.pdf.
[2] 王志英, 周興社, 袁春風, 等. 計算機專業(yè)學生系統(tǒng)能力培養(yǎng)和系統(tǒng)課程體系設置研究[J]. 計算機教育, 2013(9): 1-6.
[3] Bryant R E, O' Hallaron D R. Introducing computer systems from a programmer's perspective[J]. ACM SIGCSE Bulletin, 2001,33(1): 90-94.
[4] Bryant R E, O' Hallaron D R. Computer systems: A programmer's perspective[M]. 3rd. ed. Boston: Pearson, 2015.
[5] Patt Y N, Patel S J. Introduction to computing systems: From bits and gates to C and beyond[M]. 2nd ed. Berkeley: McGraw-Hill Higher Education, 2004.
[6] 袁春風. 計算機系統(tǒng)基礎[M]. 北京: 機械工業(yè)出版社, 2014.
[7] Barroso L A, Clidaras J, Holzle U, et al. The datacenter as a computer: An introduction to the design of warehouse-scale machines, 2nd ed. [J]. Synthesis Lectures on Computer Architecture, 2013, 8(3): 1-154.
(編輯:彭遠紅)
1672-5913(2017)02-0014-04
G642
李弋,男,講師,研究方向為計算機系統(tǒng)軟件和體系結構,liy@fudan.edu.cn。