張鐵軍 賈銀江
[摘 ? ? ? ? ? 要] ?繼物聯(lián)網(wǎng)、云計(jì)算后,大數(shù)據(jù)技術(shù)的發(fā)展與應(yīng)用,將對(duì)企業(yè)的決策模式、商業(yè)的經(jīng)營(yíng)策略以及個(gè)人的生活方式等產(chǎn)生深刻的影響。所以大數(shù)據(jù)也必然會(huì)對(duì)高校各個(gè)學(xué)科和專業(yè)產(chǎn)生沖擊,促使其進(jìn)行變革。通過(guò)對(duì)大數(shù)據(jù)時(shí)代給計(jì)算機(jī)類課程帶來(lái)的影響進(jìn)行深入分析,對(duì)其課程體系的建設(shè)進(jìn)行探索。
[關(guān) ? ?鍵 ? 詞] ?課程體系;大數(shù)據(jù);Hadoop
[中圖分類號(hào)] ?G642 ? ? ? ? ? ? ? ? ? [文獻(xiàn)標(biāo)志碼] ?A ? ? ? ? ? ? ? ? ? ?[文章編號(hào)] ?2096-0603(2018)25-0032-02
大數(shù)據(jù)從表面上來(lái)看強(qiáng)調(diào)的是數(shù)據(jù)本身的容量,其實(shí)它的內(nèi)涵是如何運(yùn)用大數(shù)據(jù)技術(shù)實(shí)現(xiàn)大數(shù)據(jù)具體應(yīng)用。
從數(shù)據(jù)本身角度而言,大數(shù)據(jù)是指超出一般典型數(shù)據(jù)管理系統(tǒng)的采集、存儲(chǔ)、管理和分析等能力的大規(guī)模數(shù)據(jù)集,而且這些數(shù)據(jù)之間存在著顯性或隱性的關(guān)聯(lián)。而大數(shù)據(jù)技術(shù)是以數(shù)據(jù)挖掘的方式尋找隱藏在復(fù)雜的數(shù)據(jù)集中未被發(fā)現(xiàn)的模式、規(guī)則與知識(shí),從而得到有價(jià)值的新信息。在技能的獲取階段,大數(shù)據(jù)技術(shù)相對(duì)數(shù)據(jù)而言就顯得至關(guān)重要,所以在高等學(xué)校教學(xué)中如何學(xué)習(xí)大數(shù)據(jù)技術(shù)就成為高校相關(guān)專業(yè)課程體系設(shè)置的重點(diǎn)。
一、教學(xué)內(nèi)容的側(cè)重與優(yōu)化
大數(shù)據(jù)技術(shù)的深入理解與并行計(jì)算、分布式計(jì)算等算法是密切相關(guān)的。通常情況下,原有的計(jì)算機(jī)科學(xué)與技術(shù)的算法類課程開設(shè)有必修課程算法設(shè)計(jì)與分析、選修課程人工智能等。算法主要包括遞歸與迭代、分治算法、動(dòng)態(tài)規(guī)劃、貪心算法、圖算法、網(wǎng)絡(luò)流和匹配、線性規(guī)劃、NP完全理論、回溯、分支限界等。在人工智能課程中主要學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)、貝葉斯、決策樹算法、深度學(xué)習(xí)、遷移學(xué)習(xí)算法等。這些算法在數(shù)據(jù)挖掘的過(guò)程中得到廣泛應(yīng)用,但對(duì)于提高學(xué)生對(duì)大數(shù)據(jù)技術(shù)原理的理解相關(guān)甚少。這就需要在課程體系中引入分布式系統(tǒng)理論的課程。
而分布式系統(tǒng)理論體系內(nèi)容多,涉及知識(shí)面也非常廣,如何在有限的課時(shí)中把它講解得透徹就顯得至關(guān)重要。這就要以廣泛、簡(jiǎn)單有效的分布式理論、算法、協(xié)議為基礎(chǔ)逐步深入理解大數(shù)據(jù)的技術(shù)基礎(chǔ)。
(一)強(qiáng)化大數(shù)據(jù)基礎(chǔ)教學(xué)內(nèi)容
1.分布式系統(tǒng)模型
正常狀態(tài)下節(jié)點(diǎn)、通信、存儲(chǔ)的含義很容易理解,而在機(jī)器宕機(jī)、消息丟失、消息亂序、數(shù)據(jù)錯(cuò)誤、不可靠的TCP問(wèn)題等方面深入較少。正是由于網(wǎng)絡(luò)異常的存在,分布式系統(tǒng)把請(qǐng)求結(jié)果分為三個(gè)狀態(tài)——“成功”“失敗”“超時(shí)”。超時(shí)的狀態(tài)是指在規(guī)定時(shí)間內(nèi),沒(méi)有返回結(jié)果,即成功還是失敗的結(jié)果是未知的中間狀態(tài)。
分布式系統(tǒng)對(duì)待“超時(shí)”狀態(tài)的一般操作是:當(dāng)出現(xiàn)“超時(shí)”時(shí),通過(guò)發(fā)起讀取數(shù)據(jù)的操作驗(yàn)證遠(yuǎn)程操作是否成功。另外一種做法是,當(dāng)出現(xiàn)“失敗”和“超時(shí)”的時(shí)候,一律重試操作直到“成功”。即使超時(shí)的操作實(shí)際上已經(jīng)執(zhí)行成功,重試操作也不會(huì)對(duì)其正確性造成影響,從而簡(jiǎn)化了設(shè)計(jì)。
2.副本
副本指在分布式系統(tǒng)中為數(shù)據(jù)或服務(wù)提供的冗余。數(shù)據(jù)副本在分布式系統(tǒng)中存儲(chǔ)數(shù)據(jù)丟失,也意味著狀態(tài)丟失,那么只能從其他節(jié)點(diǎn)讀取副本、恢復(fù)存儲(chǔ)的狀態(tài)。而另一類是服務(wù)副本,是指數(shù)個(gè)節(jié)點(diǎn)提供某種相同的服務(wù)。常見的分布式系統(tǒng)中,HDFS系統(tǒng)的數(shù)據(jù)塊(Block)的副本就是數(shù)據(jù)副本,而Map Reduce系統(tǒng)中的Job Worker則是服務(wù)副本。
3.數(shù)據(jù)分布方式
常見的數(shù)據(jù)分布方式有哈希方式、按數(shù)據(jù)范圍或數(shù)據(jù)量分布以及一致性哈希等。分布式文件系統(tǒng)(HDFS)采用按數(shù)據(jù)量分布,它將數(shù)據(jù)看作順序增長(zhǎng)的文件按照固定的大小劃分為若干個(gè)數(shù)據(jù)塊(Block),再將不同的數(shù)據(jù)塊分布到不同的服務(wù)器上。Map Reduce則是數(shù)據(jù)分布本地化。分布式數(shù)據(jù)庫(kù)(HBase)之所以采用按數(shù)據(jù)范圍分布,是為了數(shù)據(jù)遷移等負(fù)載均衡操作的便利性,使每個(gè)區(qū)間中服務(wù)的數(shù)據(jù)量都維持在一個(gè)固定的閾值之下。它的缺點(diǎn)是需要維護(hù)較復(fù)雜的元信息。隨著集群規(guī)模的增長(zhǎng),元數(shù)據(jù)服務(wù)器容易成為瓶頸。
4.基本副本協(xié)議
HDFS系統(tǒng)的副本控制協(xié)議是primary-secondary協(xié)議,在此協(xié)議中,有且僅有一個(gè)副本作為primary副本,其余副本都作為secondary副本。由primary節(jié)點(diǎn)接收外部節(jié)點(diǎn)的更新操作,確定并發(fā)更新操作的先后順序,然后轉(zhuǎn)發(fā)操作到secondary節(jié)點(diǎn),數(shù)據(jù)在副本間流式傳遞,最后primary節(jié)點(diǎn)將執(zhí)行結(jié)果返回給外部節(jié)點(diǎn)。
5.lease機(jī)制
lease機(jī)制用于確定節(jié)點(diǎn)狀態(tài),HDFS中使用Lease確定數(shù)據(jù)的Primary副本,用于Primary副本的確定與切換。Lease類似于短期租約權(quán)限由Master節(jié)點(diǎn)頒發(fā)給primary副本,持有Lease的副本就成為primary副本。HDFS中的Lease信息由Master在響應(yīng)各個(gè)節(jié)點(diǎn)的心跳(HeartBeat)時(shí)附帶傳遞。當(dāng)HDFS的Master失去某個(gè)節(jié)點(diǎn)的心跳時(shí),要為這些Block重新選擇primary副本并頒發(fā)lease,只要待該節(jié)點(diǎn)上的Lease權(quán)限超時(shí)即可。
6.Quorum機(jī)制
Quorum機(jī)制是一種副本管理機(jī)制,HDFS使用WARO(Write-all-read-one)機(jī)制讀寫副本,當(dāng)更新所有副本成功保證了副本的同步,就可以任意選擇一個(gè)副本來(lái)讀取數(shù)據(jù);如果更新失敗,副本之間處于不一致的狀態(tài)。HDFS與Zookeeper不保證異常狀態(tài)時(shí)副本的一致性,當(dāng)更新操作某個(gè)Block的副本失敗時(shí),系統(tǒng)就會(huì)自動(dòng)新增一個(gè)Block在正常的機(jī)器上進(jìn)行更新操作,這從側(cè)面解決了使用WARO造成的系統(tǒng)可用性下降的問(wèn)題。雖然在新增的更新操作中數(shù)據(jù)可能會(huì)出現(xiàn)多份重復(fù)的現(xiàn)象,但操作會(huì)返回用戶最后成功的offset,在這個(gè)地址,任意讀取某個(gè)副本就可以讀到更新的數(shù)據(jù)。
課程體系中,傳統(tǒng)的算法課程教學(xué)即算法設(shè)計(jì)與分析可以采用現(xiàn)行的教學(xué)大綱,在大二上學(xué)期開設(shè),注重實(shí)踐和代碼編程實(shí)現(xiàn),課時(shí)設(shè)置為32學(xué)時(shí)理論+16學(xué)時(shí)實(shí)驗(yàn)。作為大數(shù)據(jù)的先行課程并行與分布式系統(tǒng)在大二下學(xué)期開設(shè),學(xué)時(shí)為32學(xué)時(shí)。課程教學(xué)中應(yīng)強(qiáng)調(diào)上述分布式系統(tǒng)基礎(chǔ)理論包括算法的學(xué)習(xí),并結(jié)合大數(shù)據(jù)相關(guān)技術(shù)的應(yīng)用而有所側(cè)重,并對(duì)Paxos算法、一致性算法等常用分布式算法進(jìn)行講解,以此作為面向大數(shù)據(jù)的算法課程體系的基礎(chǔ)。
(二)深化大數(shù)據(jù)系統(tǒng)理論
建議在大三上學(xué)期開設(shè)大數(shù)據(jù)技術(shù)基礎(chǔ)課程。大數(shù)據(jù)技術(shù)基礎(chǔ)課程主要包括Hadoop系統(tǒng)理論,涵蓋HDFS(分布式文件系統(tǒng))、Yarn(資源管理系統(tǒng))、Zookeeper(分布協(xié)作服務(wù))、MapReduce(分布式計(jì)算框架)、Spark、Hive(數(shù)據(jù)倉(cāng)庫(kù))、Flume(日志收集工具)。教學(xué)內(nèi)容要精心組織,課程主要講授Hadoop生態(tài)系統(tǒng)的知識(shí),學(xué)時(shí)設(shè)置為32+16。課程主要內(nèi)容包括:Hadoop分布式計(jì)算平臺(tái)、MapReduce編程模型、BigTable數(shù)據(jù)管理工具、以HBase和Hive為代表的海量數(shù)據(jù)管理平臺(tái)。由于教學(xué)學(xué)時(shí)相對(duì)于大數(shù)據(jù)所涵蓋的內(nèi)容來(lái)說(shuō)較少,需要重點(diǎn)理解MapReduce過(guò)程和Shuffle過(guò)程。MapReduce的原理如圖所示。
首先讀取HDFS文件,按照輸入格式將輸入文件分割成片段(split),每個(gè)片段會(huì)作為一個(gè)map task輸入。在Map(映射)階段,調(diào)用map函數(shù),按行讀入數(shù)據(jù)生成映射,并進(jìn)行分區(qū)(partition),然后對(duì)不同分區(qū)中的數(shù)據(jù)進(jìn)行鍵值Key排序,中間結(jié)果寫入內(nèi)存緩沖區(qū),在超過(guò)閥值后會(huì)將內(nèi)存緩沖區(qū)中的數(shù)據(jù)溢寫入磁盤,如果中間結(jié)果數(shù)據(jù)量大,會(huì)形成多個(gè)溢寫文件,這些溢寫文件最后會(huì)合并成一個(gè)文件;在Reduce(歸約)階段,多個(gè)map任務(wù)的輸出,按照不同的分區(qū)通過(guò)網(wǎng)絡(luò)copy到不同的reduce節(jié)點(diǎn)上,對(duì)多個(gè)輸出進(jìn)行合并、排序,最后reduce的輸出寫到HDFS中;中間環(huán)節(jié)即數(shù)據(jù)從map task輸出到reduce task的這段過(guò)程為Shuffle過(guò)程,它主要負(fù)責(zé)數(shù)據(jù)的完整拉取,并盡量減少磁盤I/O對(duì)執(zhí)行效率的影響,并減少對(duì)帶寬的消耗。
理解了分布式文件系統(tǒng)的基本原理之后,實(shí)驗(yàn)部分可集中在HDFS、Hadoop、MapReduce、HBase和Hive技術(shù)方面設(shè)置一些簡(jiǎn)單的實(shí)踐操作,如Hadoop環(huán)境的搭建、Hadoop數(shù)據(jù)讀寫過(guò)程、基礎(chǔ)MapReduce示例、列式存儲(chǔ)HBase數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢練習(xí)、Hive數(shù)據(jù)倉(cāng)庫(kù)的使用等。
在教學(xué)過(guò)程中每個(gè)知識(shí)點(diǎn)通過(guò)幾個(gè)簡(jiǎn)單小程序的編程與講解可以達(dá)到更好的教學(xué)效果,例如WordCount計(jì)數(shù)、全排序、倒排序等程序設(shè)計(jì)可以幫助學(xué)生理解MapReduce和Shuffle的工作原理。
二、大數(shù)據(jù)技術(shù)實(shí)踐
計(jì)算機(jī)專業(yè)應(yīng)用型人才的培養(yǎng),課程設(shè)計(jì)實(shí)習(xí)與項(xiàng)目實(shí)訓(xùn)是不可或缺的重要環(huán)節(jié)。在大三下學(xué)期第一周開始,開設(shè)了為期四周的大數(shù)據(jù)課程設(shè)計(jì),該課程設(shè)計(jì)要求學(xué)生綜合應(yīng)用所掌握的Hadoop系統(tǒng)知識(shí)和相關(guān)算法,進(jìn)行HBase和Hive實(shí)驗(yàn)項(xiàng)目的開發(fā)設(shè)計(jì)。例如WebContent搜索項(xiàng)目不僅檢驗(yàn)了學(xué)生的Java編程語(yǔ)言、軟件工程、NoSQL數(shù)據(jù)庫(kù)等專業(yè)知識(shí)的綜合運(yùn)用,而且使學(xué)生掌握項(xiàng)目開發(fā)的實(shí)際操作流程,為學(xué)生進(jìn)入社會(huì)實(shí)踐打下了扎實(shí)的基礎(chǔ)。
三、總結(jié)
本學(xué)院對(duì)大數(shù)據(jù)課程體系進(jìn)行改革,強(qiáng)化了并行計(jì)算與分布式系統(tǒng)理論基礎(chǔ),并及時(shí)更新大數(shù)據(jù)相關(guān)理論及實(shí)踐知識(shí),有利于保持課程體系的先進(jìn)性。另外,加大校企合作,建設(shè)創(chuàng)新實(shí)訓(xùn)基地是提高課程體系對(duì)接學(xué)生就業(yè)的有力保障。
參考文獻(xiàn):
[1]陳潔,張文翔.大數(shù)據(jù)視角下計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)建設(shè)探究[J].軟件導(dǎo)刊,2016(10).
[2]鄒先霞,杜威.利用翻轉(zhuǎn)課堂將大數(shù)據(jù)引入數(shù)據(jù)庫(kù)課程的教學(xué)設(shè)計(jì)與實(shí)踐[J].高教學(xué)刊,2016(10).
[3]岳昆,陳紅梅,王麗珍.大數(shù)據(jù)時(shí)代本科數(shù)據(jù)庫(kù)課程體系改革設(shè)想[J].計(jì)算機(jī)教育,2015(11).
[4]張華.大數(shù)據(jù)背景下獨(dú)立學(xué)院數(shù)據(jù)庫(kù)課程體系建設(shè)構(gòu)想[J].重慶科技學(xué)院學(xué)報(bào)(社會(huì)科學(xué)版),2017(12).