張鐵軍 賈銀江

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