Hadoop大數(shù)據(jù)處理與存儲(chǔ)技術(shù)教案_第1頁(yè)
Hadoop大數(shù)據(jù)處理與存儲(chǔ)技術(shù)教案_第2頁(yè)
Hadoop大數(shù)據(jù)處理與存儲(chǔ)技術(shù)教案_第3頁(yè)
Hadoop大數(shù)據(jù)處理與存儲(chǔ)技術(shù)教案_第4頁(yè)
Hadoop大數(shù)據(jù)處理與存儲(chǔ)技術(shù)教案_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

?Hadoop大數(shù)據(jù)處理與存

儲(chǔ)技術(shù)基礎(chǔ)與實(shí)踐》

教案

(?學(xué)年第學(xué)期)

課程名稱:_______________________________

任課班級(jí):_______________________________

任課教師:_______________________________

院(部):

-W-

授課時(shí)間年月日星期課號(hào)1

課題1.1為什么要學(xué)Hadoop

1、分布式系統(tǒng)的特征

教學(xué)目的

2、學(xué)習(xí)Hadoop的目的

教學(xué)重點(diǎn)理解學(xué)習(xí)Hadoop的目的

教學(xué)難點(diǎn)了解Hadoop的體系結(jié)構(gòu),理解Hadoop與其他系統(tǒng)的關(guān)系。

教學(xué)內(nèi)容備注

1.1.1數(shù)據(jù)的存儲(chǔ)和分析

多年來硬盤存儲(chǔ)容量快速增加的同時(shí),訪問速度一數(shù)據(jù)從硬盤讀取的

速度一卻未能與時(shí)俱進(jìn)。1990年,一個(gè)普通的硬盤驅(qū)動(dòng)器可存儲(chǔ)1370

MB的數(shù)據(jù)并擁有4.4MB/s的傳輸速度,所以只需五分鐘的時(shí)間就可

以讀取整個(gè)磁盤的數(shù)據(jù)。20年過去了,1TB級(jí)別的磁盤驅(qū)動(dòng)器是很正

常的,但是數(shù)據(jù)傳輸?shù)乃俣葏s在100MB/s左右。所以它需要花兩個(gè)半

小時(shí)以上的時(shí)間讀取整個(gè)驅(qū)動(dòng)器的數(shù)據(jù)。

只使用一個(gè)磁盤的百分之一似乎很浪費(fèi)。但是我們可以存儲(chǔ)100個(gè)數(shù)

據(jù)集,每個(gè)1TB,并讓它們共享磁盤的訪問。我們可以想象,此類系

統(tǒng)的用戶會(huì)很高興看到共享訪問可以縮短分析時(shí)間,并且,從統(tǒng)計(jì)角

度來看,他們的分析工作會(huì)分散到不同的時(shí)間點(diǎn),所以互相之間不會(huì)

有太多干擾。

盡管如此,現(xiàn)在更可行的是從多個(gè)磁盤并行讀寫數(shù)據(jù)。

第一個(gè)需要解決的問題是硬件故障。一旦開始使用多個(gè)硬件設(shè)施,其

中一個(gè)會(huì)出故障的概率是非常高的。避免數(shù)據(jù)丟失的常見做法是復(fù)制:

通過系統(tǒng)保存數(shù)據(jù)的冗余副本,在故障發(fā)生時(shí),可以使用數(shù)據(jù)的另一

份副本。這就是冗余磁盤陣列(RAID)的工作方式。Hadoop的文件系

統(tǒng)HDFS(HadoopDistributedFilesystem)也是一個(gè)例子,雖然它采取

的是另一種稍有不同的方法,第二個(gè)問題是大部分分析任務(wù)需要通過

某種方式把數(shù)據(jù)合并起來,即從一個(gè)磁盤讀取的數(shù)據(jù)可能需要和另外

99個(gè)磁盤中讀取的數(shù)據(jù)合并起來才能使用。各種不同的分布式系統(tǒng)能

夠組合多個(gè)來源的數(shù)據(jù),但是如何保證正確性是一個(gè)非常難的挑戰(zhàn)。

MapReduce提供了一個(gè)編程模型,其抽象出上述磁盤讀寫的問題,將其

轉(zhuǎn)換為計(jì)算一個(gè)由成對(duì)鍵/值組成的數(shù)據(jù)集。這種模型的具體細(xì)節(jié)將在

后面的章節(jié)討論。這個(gè)計(jì)算由兩部分組成:MapfllReduceo這兩者的

接口就是“整合”之地。就像HDFS一樣,MapReduce是內(nèi)建可靠性這

個(gè)功能的。

1.1.2Hadoop的發(fā)展簡(jiǎn)史

Hadoop最初是由ApacheLucene項(xiàng)目的創(chuàng)始人DougCutting開發(fā)的文

本搜索庫(kù)。Hadoop源自2002年的ApacheNutch項(xiàng)目----個(gè)開源的網(wǎng)

絡(luò)搜索弓1擎并且也是Lucene項(xiàng)目的一部分。在2002年的時(shí)候,Nutch

項(xiàng)目遇到了棘手的難題,該搜索引擎框架無法擴(kuò)展到擁有數(shù)十億網(wǎng)頁(yè)

的網(wǎng)格。而就在一年以后的2003年,谷歌公司發(fā)布了分布式文件系統(tǒng)

GFS方面的論文,可以解決大規(guī)模數(shù)據(jù)存儲(chǔ)的問題。于是,在2004年,

Nutch項(xiàng)目也模仿GFS開發(fā)了自己的分布式文件系統(tǒng)(Nutch

DistributedFileSystem,NDFS),也就是HDFS的前身。

1.13Hadoop與其他系統(tǒng)的匕徽

1、Hadoop的一個(gè)最大的優(yōu)點(diǎn)是能夠自動(dòng)處理失敗。

2^McipReduce實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)數(shù)據(jù)本地化。

3、和關(guān)系型數(shù)據(jù)庫(kù)比較。

4>MapReduce和志愿計(jì)算的比較。

5、MapReduce和網(wǎng)格計(jì)算的比較。

1.1.4ApacheHadoop項(xiàng)目

作業(yè)及課后小結(jié)

課后作業(yè):

1、大數(shù)據(jù)時(shí)代的技術(shù)支撐有哪些?

2、試述大數(shù)據(jù)對(duì)思維方式的重要影響。

3、大數(shù)據(jù)的發(fā)展歷程有哪幾個(gè)階段。

授課時(shí)間年月日星期節(jié)課號(hào)2

課題1.2Hadoop與大數(shù)據(jù)的關(guān)系

教學(xué)目的了解什么是大數(shù)據(jù),Hadoop與大數(shù)據(jù)的關(guān)系

教學(xué)重點(diǎn)大數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與計(jì)算模式

教學(xué)難點(diǎn)Hadoop在大數(shù)據(jù)中扮演的角色

教學(xué)內(nèi)容備注

1、什么是大數(shù)據(jù)

工業(yè)和信息化部信息化和軟件服務(wù)業(yè)司、國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)工業(yè)

部2015年12月發(fā)布的《大數(shù)據(jù)標(biāo)準(zhǔn)化白皮書V2.0》記載,甲骨文、

IBM、微軟、SAP、惠普等公司在數(shù)據(jù)管理和分析領(lǐng)域的投入已經(jīng)超過

150億美元。大數(shù)據(jù)對(duì)社會(huì)各方面產(chǎn)生更重要的作用;改變經(jīng)濟(jì)社會(huì)管

理方式,促進(jìn)行業(yè)融合發(fā)展,推動(dòng)產(chǎn)業(yè)轉(zhuǎn)型升級(jí),助力智慧城市建設(shè),

改變科學(xué)研究的方法。大數(shù)據(jù)是具有數(shù)量巨大、來源多樣、生成極快

且多變等特征,難以用傳統(tǒng)數(shù)據(jù)體系結(jié)構(gòu)有效處理的包含大量數(shù)據(jù)集

的數(shù)據(jù)。

2、大數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

分布式存儲(chǔ)與訪問是大數(shù)據(jù)存儲(chǔ)的關(guān)鍵技術(shù),它具有經(jīng)濟(jì)、高效、容

錯(cuò)好等特點(diǎn)。分布式存儲(chǔ)技術(shù)與數(shù)據(jù)存儲(chǔ)介質(zhì)的類型和數(shù)據(jù)的組織管

理形式直接相關(guān)。目前的主要數(shù)據(jù)存儲(chǔ)介質(zhì)類型包括內(nèi)存、磁盤、磁

帶等;主要數(shù)據(jù)組織管理形式包括按行組織、按鍵值組織和按關(guān)系組

織;主要數(shù)據(jù)組織管理層次包括按塊級(jí)組織,按文件級(jí)組織及按數(shù)據(jù)

庫(kù)級(jí)組織等。

3、大數(shù)據(jù)的計(jì)算模式

MapReduce是大家熟悉的大數(shù)據(jù)處理技術(shù),當(dāng)人們提到大數(shù)據(jù)時(shí)就會(huì)

很自然地想到M叩Reduce,可見其影響力之廣。實(shí)際上,大數(shù)據(jù)處理

的問題復(fù)雜多樣,單一的計(jì)算模式是無法滿足不同類型的計(jì)算需求的,

MapReduce其實(shí)只是大數(shù)據(jù)計(jì)算模式中的一種,它代表了針對(duì)大規(guī)模

數(shù)據(jù)的批量處理技術(shù),除此以外,還有批處理計(jì)算、流計(jì)算、圖計(jì)算、

查詢分析計(jì)算等多種大數(shù)據(jù)計(jì)算模式。

4、Hadoop在大數(shù)據(jù)中扮演的角色

可以把Hadoop理解為大數(shù)據(jù)技術(shù)中的一種解決方案的軟件架構(gòu),它的

出現(xiàn)極大地降低了大數(shù)據(jù)項(xiàng)目的研究實(shí)現(xiàn)對(duì)人的要求。同時(shí),國(guó)內(nèi)一

些企業(yè)也在它的基礎(chǔ)上發(fā)展了更加完善的產(chǎn)品,如華為的

Fusioninsight,它是基于Apache開源社區(qū)的、以Hadoop為核心的軟件,

進(jìn)行功能增強(qiáng)的企業(yè)級(jí)大數(shù)據(jù)存儲(chǔ)、查詢和分析的統(tǒng)一平臺(tái)。它以海

量數(shù)據(jù)處理引擎和實(shí)時(shí)數(shù)據(jù)處理引擎為核心,并針對(duì)金融、運(yùn)營(yíng)商等

數(shù)據(jù)密集型行業(yè)的運(yùn)行維護(hù)、應(yīng)用開發(fā)等需求,打造了敏捷、智慧、

可信的平臺(tái)軟件、建模中間件及OM系統(tǒng),讓企業(yè)可以更快、更準(zhǔn)、

更穩(wěn)地從各類繁雜無序的海量數(shù)據(jù)中發(fā)現(xiàn)全新價(jià)值點(diǎn)和企業(yè)商機(jī)。阿

里巴巴、百度等知名公司都基于Hadoop在云項(xiàng)目及大數(shù)據(jù)項(xiàng)目上進(jìn)行

了應(yīng)用。

作業(yè)及課后小結(jié)

課后作業(yè):

1、簡(jiǎn)述什么是云計(jì)算。

2、大數(shù)據(jù)的4V特征是什么?

授課時(shí)間年月日星期-W-課號(hào)3

課題13Hadoop行業(yè)應(yīng)用案例分析

教學(xué)目的1、了解Hadoop的幾個(gè)主要應(yīng)用領(lǐng)域

教學(xué)重點(diǎn)1、了解Hadoop的幾個(gè)主要應(yīng)用領(lǐng)域

教學(xué)難點(diǎn)1、了解Hadoop的幾個(gè)主要應(yīng)用領(lǐng)域

教學(xué)內(nèi)容備注

T3J~~Hadoop在門戶網(wǎng)站的應(yīng)用

關(guān)于Hadoop技術(shù)的研究和應(yīng)用,Yahoo!始終處于領(lǐng)先地位,它將

Hadoop應(yīng)用于自己的各種產(chǎn)品中,包括數(shù)據(jù)分析、內(nèi)容優(yōu)化、發(fā)垃圾

郵件系統(tǒng)、廣告的優(yōu)化選擇、大數(shù)據(jù)處理和ETL等。同樣,在用戶興

趣預(yù)測(cè)、搜索排名、廣告定位等方面得到了充分的應(yīng)用。

Yahoo!在主頁(yè)個(gè)性化方面,實(shí)時(shí)服務(wù)系統(tǒng)通過Apache從數(shù)據(jù)庫(kù)中讀

取相應(yīng)的映射,并且每隔5分鐘Hadoop集群就會(huì)基于最新數(shù)據(jù)重新排

列內(nèi)容,每隔7分鐘則在頁(yè)面上更新內(nèi)容。在郵箱方面,Yahoo!利用

Hadoop集群根據(jù)垃圾郵件模式為郵件計(jì)分,并且每隔幾個(gè)小時(shí)就在集

群上改進(jìn)反垃圾郵件模型,集群系統(tǒng)每天還可以推動(dòng)50億次的郵件投

遞。在Yahoo!的SearchWebmap應(yīng)用上,它運(yùn)行在超過10000臺(tái)機(jī)

器的Linux系統(tǒng)集群里。Yahoo!的網(wǎng)頁(yè)搜索查詢使用的就是它產(chǎn)生的

數(shù)據(jù)。

Yahoo!在Hadoop中同時(shí)使用了Pig和Hive,主要用于數(shù)據(jù)準(zhǔn)備和數(shù)

據(jù)表示。數(shù)據(jù)準(zhǔn)備階段通常被認(rèn)為是提取、轉(zhuǎn)換和加載(Extract

TransformLoad,ETL數(shù)據(jù)的階段。這個(gè)階段需要裝載和清洗原始數(shù)據(jù),

并讓它遵守特定的數(shù)據(jù)模型,還要盡可能地讓它與其他數(shù)據(jù)源結(jié)合等。

這一階段的客戶一般都是程序員、數(shù)據(jù)專家或研究者。數(shù)據(jù)表示階段

一般指的都是數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)了客戶所需要的產(chǎn)品,客戶會(huì)

根據(jù)需要選取合適的產(chǎn)品。這一階段的客戶可能是系統(tǒng)的數(shù)據(jù)工程師、

分析師或決策者。

1.3.2Hadoop在搜索引擎中的應(yīng)用

百度作為全球最大的中文搜索引擎公司,提供基于搜索引擎的各種產(chǎn)

品,包括以網(wǎng)絡(luò)搜索為主的功能性搜索,以貼吧為主的社區(qū)搜索,針

對(duì)區(qū)域、行業(yè)的垂直搜索、Mp3音樂搜索以及百科等,幾乎覆蓋了中

文網(wǎng)絡(luò)世界中所有的搜索需求。

百度對(duì)海量數(shù)據(jù)處理的要求是比較高的,要在線下對(duì)數(shù)據(jù)進(jìn)行分析,

還要在規(guī)定時(shí)間內(nèi)處理完并反饋到平臺(tái)上。百度在互聯(lián)網(wǎng)領(lǐng)域的平臺(tái)

需求要通過性能較好的云平臺(tái)進(jìn)行處理,Hadoop就是很好的選擇。在

百度,Hadoop主要應(yīng)用于H志的存儲(chǔ)和統(tǒng)計(jì);網(wǎng)頁(yè)數(shù)據(jù)的分析和挖掘;

商業(yè)分析,如用戶的行為和廣告關(guān)注度等;在線數(shù)據(jù)的反饋,及時(shí)得

到在線廣告的點(diǎn)擊情況;用戶網(wǎng)頁(yè)的聚類,分析用戶的推薦度及用戶

之間的關(guān)聯(lián)度。

百度現(xiàn)在擁有3個(gè)Hadoop集群,總規(guī)模在700臺(tái)機(jī)器作業(yè),其中有

100多臺(tái)新機(jī)器和600多臺(tái)要淘汰的機(jī)器(它們的計(jì)算能力相當(dāng)于2(X)

多臺(tái)新機(jī)器),不過其規(guī)模還在不斷的增加中?,F(xiàn)在每天運(yùn)行的

MapReduce任務(wù)在3000個(gè)左右,處理數(shù)據(jù)約120TB/天。

1.3.3Hadoop在電商平臺(tái)中的應(yīng)用

在eBay上存儲(chǔ)著上億種商品的信息,而且每天有數(shù)百萬種的新商品在

增加,因此需要用云系統(tǒng)來存儲(chǔ)和處理PB級(jí)別的數(shù)據(jù),而Hadoop則

是個(gè)很好的選擇。Hadoop是建立在商業(yè)硬件上的容錯(cuò)、可擴(kuò)展、分布

式的云計(jì)算框架,eBay利用Hadoop建立了一個(gè)大規(guī)模的集群系統(tǒng)

—Athena,它被分為5層。

Hadoop核心層包括Hadoop運(yùn)行時(shí)環(huán)境、一些通用設(shè)施和HDFS,其

中文件系統(tǒng)為讀寫大塊數(shù)據(jù)而做了一些優(yōu)化,如將塊的大小由128MB

改為256MB。MapReduce層為開發(fā)和執(zhí)行任務(wù)提供API和控件。數(shù)據(jù)

獲取層的主要框架是HBase、Pig和Hive。

除了以上案例,在很多其他的應(yīng)用中都有Hadoop的身影,在

Facebook,電信等業(yè)務(wù)中Hadoop都發(fā)揮著舉足輕重的作用。由此可以

看出Hadoop分布式集群在大數(shù)據(jù)處理方面有著無與倫比的優(yōu)勢(shì),它的

特點(diǎn)(易于部署、代價(jià)低、方便擴(kuò)展、性能強(qiáng)等)使得它能很快地被

業(yè)界接受,生存能力也非常的強(qiáng)。實(shí)際上除商業(yè)上的應(yīng)用外,Hadoop

在科學(xué)研究上也發(fā)揮了很大的作用,例如數(shù)據(jù)挖掘、數(shù)據(jù)分析等。

雖然Hadoop在某些處理機(jī)制上存在著不足,如實(shí)時(shí)處理,但隨著

Hadoop發(fā)展,這些不足正在被慢慢彌補(bǔ),最新版的Hadoop已經(jīng)開始

支持Storm架構(gòu)(一種實(shí)時(shí)處理架構(gòu))。隨著時(shí)間的推移,Hadoop會(huì)

越來越完善,無論用于電子商務(wù)還是科學(xué)研究,都是很不錯(cuò)的選擇。

作業(yè)及課后小結(jié)

課后作業(yè):

查找資料了解主要hadoop在企業(yè)界的應(yīng)用情況。

授課時(shí)間年月日星期節(jié)課號(hào)4

課題1.4Hadoop的安裝與配置

1、配置開發(fā)環(huán)境

2、節(jié)點(diǎn)之間的免密通信

教學(xué)目的

3、Hadoop的啟動(dòng)與測(cè)試

教學(xué)重點(diǎn)2、節(jié)點(diǎn)之間的免密通信

教學(xué)難點(diǎn)1、配置開發(fā)環(huán)境

教學(xué)內(nèi)容備注

1.4.1實(shí)驗(yàn)準(zhǔn)備

在開始具體操作之前,首先需要選擇一個(gè)合適的操作系統(tǒng)。盡管

Hadoop本身可以運(yùn)行在LinuxWindows以及其他?些類Unix操作系

統(tǒng)之上,但是Hadoop官方真正支持的操作系統(tǒng)只有Linux。這就導(dǎo)致

其他平臺(tái)在運(yùn)行Hadoop時(shí),往往需要安裝很多其他的包來提供一些

Linux操作系統(tǒng)的功能,以配合Hadoop的執(zhí)行。我們這里選擇Linux

作為平臺(tái),來演示在計(jì)算機(jī)上如何安裝Hadoop,運(yùn)行程序并得到最終

結(jié)果。對(duì)于正在使用Windows操作系統(tǒng)的用戶,可以通過在Windows

操作系統(tǒng)中安裝Linux虛擬機(jī)的方式完成實(shí)驗(yàn)。在Linux發(fā)行版本的

選擇上,我們傾向于使用企業(yè)級(jí)的、穩(wěn)定的操作系統(tǒng)作為實(shí)驗(yàn)的系統(tǒng)

環(huán)境,同時(shí),考慮到易用性以及是否免費(fèi)等方面的問題,我們排除了

openSUSE和RedHat等發(fā)行版,最終選擇Ubuntu桌面版作為推薦的操

作系統(tǒng),當(dāng)然讀者也可以選用其他版本的Linux。

Hadoop基本安裝配置主要包括以下幾個(gè)步驟:

1、安裝Java環(huán)境。

2、下載Hadoop。

3、配置Hadoop環(huán)境。

4、Hadoop偽分布式安裝。

節(jié)點(diǎn)之間的免密通信

對(duì)于Hadoop的偽分布和仝:分布而言,Hadoop名稱節(jié)點(diǎn)(NameNode)

需要啟動(dòng)集群中所有機(jī)器的Hadoop守護(hù)進(jìn)程,這個(gè)過程可以通過SSH

登錄來實(shí)現(xiàn)。Hadoop并沒有提供SSH輸入密碼登錄的形式,因此,為

了能夠順利登錄每臺(tái)機(jī)器,需要將所有機(jī)器配置為名稱節(jié)點(diǎn)可以免密

登錄它們。

為了實(shí)現(xiàn)SSH無密碼登錄方式,首先需要讓名稱節(jié)點(diǎn)生成自己的SSH

秘胡,命令如下:

ssh-keygen-trsa-P"〃在后面選擇存放位置時(shí),按照默認(rèn)位置,會(huì)存

放在用戶目錄的.ssh/路徑下名稱節(jié)點(diǎn)生成自己的秘鑰后,需要將它的

公共秘釗發(fā)送給集群中的其他機(jī)器。我們可以將id_dsa.Pub中的內(nèi)容

添加到需要匿名登錄的機(jī)器的“~/ssh/aulhorized_keys”目錄下,然后,

在理論上名稱節(jié)點(diǎn)就可以無密碼登錄這臺(tái)機(jī)器亍。對(duì)于無密碼登錄本

機(jī)而言,可以采用以下代碼:

cat~/.ssh/idrsa.pub>>~/.ssh/aulhorizedkeys

作業(yè)及課后小結(jié)

課后作業(yè)

思考并實(shí)踐Hadoop的安裝與配置過程

授課時(shí)間年月日星期節(jié)課號(hào)5

課題2.1HDFS的設(shè)計(jì)

1、了解分布式文件系統(tǒng)HDFS

教學(xué)目的

教學(xué)重點(diǎn)HDFS的特點(diǎn)

教學(xué)難點(diǎn)HDFS的體系結(jié)構(gòu)

教學(xué)內(nèi)容備注

HDFS是為以流式數(shù)據(jù)訪問模式存儲(chǔ)超大文件而設(shè)計(jì)的文件系統(tǒng),

在商用硬件的集群上運(yùn)行?!俺笪募痹谶@里指幾百M(fèi)B,幾百GB

甚至幾百TB大小的文件。一個(gè)只有500GB的單機(jī)節(jié)點(diǎn)無法一次性處

理連續(xù)的PB級(jí)的數(shù)據(jù),那么應(yīng)如何解決這個(gè)問題呢?這就需要把大規(guī)

模數(shù)據(jù)集分別存儲(chǔ)在多個(gè)不同的節(jié)點(diǎn)的系統(tǒng)中,實(shí)現(xiàn)跨網(wǎng)絡(luò)的多個(gè)節(jié)

點(diǎn)資源的文件系統(tǒng),即分布式文件系統(tǒng)(DistributedFileSystem)。它

與普通磁盤文件系統(tǒng)有很多相近的地方,但由于整個(gè)架構(gòu)是在網(wǎng)絡(luò)上,

而網(wǎng)絡(luò)編程的復(fù)雜性和網(wǎng)絡(luò)的不可靠性勢(shì)必造成分布式文件系統(tǒng)要比

普通的磁盤系統(tǒng)復(fù)雜。

作業(yè)及課后小結(jié)

課后作業(yè)

1、HDFS有哪些特點(diǎn)?

授課時(shí)間年月日星期節(jié)課號(hào)6

課題2.2HDFS體系結(jié)構(gòu)

教學(xué)目的了解Hadoop的外系結(jié)構(gòu)

教學(xué)重點(diǎn)HDFS的體系架構(gòu)和原理

教學(xué)難點(diǎn)HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)

教學(xué)內(nèi)容備注

1、主從式體系架構(gòu)

HDFS采用主從式(Master/Slave)體系架構(gòu),服務(wù)器端包含一個(gè)管理節(jié)點(diǎn)Master

和大量由廉價(jià)服務(wù)器所構(gòu)建的分布式存儲(chǔ)集群。

HDFS5SM

(1)存儲(chǔ)資源的彈性可伸縮、支持海量存儲(chǔ):(2)由文件系統(tǒng)來處理容錯(cuò)任務(wù),

系統(tǒng)容錯(cuò)性高;(3)支持文件以追加方式批量寫入;(4)支持多個(gè)客戶端對(duì)一個(gè)文

件的高并發(fā)性寫入操作,系統(tǒng)性能高;(5)通過大量廉價(jià)服務(wù)器組建集群、數(shù)據(jù)

存儲(chǔ)成本低。

2.2.1數(shù)據(jù)塊

在計(jì)算機(jī),每個(gè)磁盤都有自己的物理磁盤塊,是讀寫文件數(shù)據(jù)的最小單位。對(duì)于

單機(jī)文件系統(tǒng)的塊一般由多個(gè)物理磁盤塊組成,一般磁盤塊的大小為512B,文

件系統(tǒng)塊由幾個(gè)磁盤塊組成達(dá)到幾千字節(jié),并且系統(tǒng)還有專門的磁盤管理工具

(fs和fsck)來管理和維護(hù)文件系統(tǒng),它們直接針對(duì)文件系統(tǒng)塊操作。

2.2.2名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)

HDFS集群有兩種節(jié)點(diǎn),以管理者-工作者(主master-從slave)的模式運(yùn)行.即

一個(gè)名稱節(jié)點(diǎn)或者稱為元數(shù)據(jù)早點(diǎn)(管理者)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)(工作者)。如圖2-2

所示。名稱節(jié)點(diǎn)管理文件系統(tǒng)的命名空間。它維護(hù)著這個(gè)文件系統(tǒng)樹及這個(gè)樹內(nèi)

所有的文件和索引目錄。這些信息以兩種形式將文件永久保存在本地磁盤上:命

名空間鏡像(Fslmage)和編輯日志(EditLog)。Fslmage用于維護(hù)文件系統(tǒng)樹及

文件樹中所有的文件和文件夾的元數(shù)據(jù),操作日志EditLog中記錄了所有針對(duì)文

件的創(chuàng)建、刪除、重命名等操作,名稱節(jié)點(diǎn)記錄了每個(gè)文件中各個(gè)塊所在的數(shù)據(jù)

節(jié)點(diǎn)的位置信息,但是并不持久化地存儲(chǔ)這些信息,而是在系統(tǒng)每次啟動(dòng)時(shí)掃描

所有數(shù)據(jù)節(jié)點(diǎn)并重構(gòu),得到這些信息。

I

girvacMoBjS.「口<[Hj*|jh*

I'dNi?e

4亡贏7嗚eiMu-

I

2.2.3輔助元數(shù)據(jù)節(jié)點(diǎn)(第二名稱節(jié)點(diǎn))

在名稱節(jié)點(diǎn)運(yùn)行期間,HDFS會(huì)不斷產(chǎn)生更新操作,這些更新操作直接被寫入

EdilLog文件,因此EdilLog文件也會(huì)逐漸變大。在名稱節(jié)點(diǎn)運(yùn)行期間,不斷變

大的EdilLog文件通常對(duì)于系統(tǒng)性能不會(huì)產(chǎn)生顯著影響,但是當(dāng)名稱節(jié)點(diǎn)重啟時(shí),

需要將Fslmage加載到內(nèi)存中,然后逐條執(zhí)行EditLog中的記錄,使得Fslmage

保持最新。可想而知,如果EditLog很大,就會(huì)導(dǎo)致整個(gè)過程變得非常緩慢,使

得名稱節(jié)點(diǎn)在啟動(dòng)過程中長(zhǎng)期處于“安全模式”,無法正常對(duì)外提供寫操作,影

響了用戶的使用。

PrizyKamt冰S?c?dirf

2.2.4安全模式

當(dāng)元數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)時(shí),會(huì)將文件系統(tǒng)鏡像載入內(nèi)存,并執(zhí)行編輯日志文件中的各

項(xiàng)操作,然后開始監(jiān)聽RPC和HTTP請(qǐng)求,此時(shí)會(huì)進(jìn)入到一種特殊狀態(tài),即安

全模式狀態(tài)(SafeMode)<,在此狀態(tài)下,各個(gè)數(shù)據(jù)行點(diǎn)發(fā)送心跳報(bào)告和塊列表信

息到元數(shù)據(jù)節(jié)點(diǎn),而塊列表信息保存的是數(shù)據(jù)塊的位置信息,元數(shù)據(jù)節(jié)點(diǎn)的內(nèi)存

中會(huì)保招所有的節(jié)點(diǎn)的塊列表信息,當(dāng)塊列表信息足夠時(shí)即退出安全模式,一般

30秒鐘,所以人們往往會(huì)發(fā)現(xiàn)剛啟動(dòng)Hadoop集群不能馬」.進(jìn)行文件讀寫操作,

但是可以知道文件目錄信息(可以訪問元數(shù)據(jù)信息)。但如果元教據(jù)節(jié)點(diǎn)沒有檢

查到足夠多的塊列表信息,即不滿足配置文件定義的“最小復(fù)制條件”(最小副

本數(shù)為【),那么會(huì)把需要的塊復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)。實(shí)際上這和復(fù)制過程會(huì)浪

費(fèi)極大地資源,因?yàn)橹挥心托牡却械臄?shù)據(jù)節(jié)點(diǎn)都遞交完成塊列表信息。

2.2.5負(fù)載均衡

負(fù)載均衡,是分布式系統(tǒng)中一個(gè)永恒的話題,要讓各節(jié)點(diǎn)獲得分配的任務(wù)均衡,

發(fā)揮各節(jié)點(diǎn)的最大效能,不能有的節(jié)點(diǎn)任務(wù)太多忙不過來,而有的節(jié)點(diǎn)任務(wù)很少

甚至沒有任務(wù),這樣不但影響完成作業(yè)的時(shí)間,也極大地浪費(fèi)了資源。負(fù)載均衡

也是一個(gè)復(fù)雜的問題,均衡并不等于平均。例如,在分布式文件系統(tǒng)中,共100

個(gè)數(shù)據(jù)塊,平均分配到集群中的10個(gè)節(jié)點(diǎn),那每個(gè)節(jié)點(diǎn)負(fù)責(zé)10個(gè)數(shù)據(jù)塊,這樣

就均衡了嗎?其實(shí)還應(yīng)該考慮HDFS的機(jī)架感知問題。一般來說同一個(gè)機(jī)架上的

節(jié)點(diǎn)通信帶寬要比不同機(jī)架來的快,而把數(shù)據(jù)塊豆制到其他機(jī)架上又增加了數(shù)據(jù)

的安全性。另外考慮到屬于同一個(gè)文件的數(shù)據(jù)塊應(yīng)該盡量在一個(gè)機(jī)架上,這樣可

以減少跨機(jī)架的網(wǎng)絡(luò)帶寬。所以具體怎么分配是比較復(fù)雜的問題.

作業(yè)及課后小結(jié)

課后作業(yè)

1、Master/Slave架構(gòu)的優(yōu)點(diǎn)

2、第二名稱節(jié)點(diǎn)的工作方式。

授課時(shí)間年月日星期節(jié)課號(hào)7

課題2.3HDFS文件系統(tǒng)

教學(xué)目的HDFS讀、寫、刪除與恢復(fù)數(shù)據(jù)的過程。

教學(xué)重點(diǎn)1、HDFS中的數(shù)據(jù)都是分塊存儲(chǔ)的,HDFS文件系統(tǒng)時(shí)如何讀寫數(shù)據(jù)塊的。

教學(xué)難點(diǎn)HDFS文件系統(tǒng)的讀寫過程

教學(xué)內(nèi)容備注

2.3.1HDFS讀數(shù)據(jù)的過程

圖中HDFS讀數(shù)據(jù)的具體過程描述如下。

(I)客戶端通過FileSystem.openO打開文件,相應(yīng)地,在HDFS文件系統(tǒng)

中DislribulcdFilcSyslcm具體實(shí)現(xiàn)了FilcSysicm。因此,調(diào)用open。方法后,

DistributcdFilcSystcin會(huì)創(chuàng)建輸入流FSDatalnputStrcam?對(duì)「HDFS而言,具體

的輸入流就是DFSInputSircamo

(2)在DFSInpu1S〔ream的構(gòu)造函數(shù)中,輸入流通過

ClicniPro【ocol.gc〔Bk)ckLocalions()遠(yuǎn)程調(diào)用名稱節(jié)點(diǎn),獲得文件開始部分?jǐn)?shù)據(jù)塊

的保存位置。對(duì)于該數(shù)據(jù)塊,名稱節(jié)點(diǎn)返回保存該數(shù)據(jù)塊的所有數(shù)據(jù)節(jié)點(diǎn)的地址,

同時(shí)根據(jù)距離客戶端的遠(yuǎn)近對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序:然后,DistributcdFilcSystcm

會(huì)利用DFSInputStream來實(shí)例億FSDatalnpuiStream,返回給客戶端,同時(shí)返回

了數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)地址。

(3)獲得輸入流FSDatalnpuiSircam后,客戶端調(diào)用read。函數(shù)開始讀取數(shù)

據(jù)。輸入流根據(jù)前面的排序結(jié)果,選擇距離客戶端最近的數(shù)據(jù)節(jié)點(diǎn)建立連接并讀

取數(shù)據(jù)。

(4)數(shù)據(jù)從該節(jié)點(diǎn)讀到客戶端;當(dāng)該數(shù)據(jù)塊讀取完畢時(shí),F(xiàn)SDaialnputStream

關(guān)閉和該數(shù)據(jù)節(jié)點(diǎn)的連接。

(5)輸入流通過gciBlockLoca〔ions()方法查找下一個(gè)數(shù)據(jù)塊1如果客戶端緩

存中已經(jīng)包含r該數(shù)據(jù)塊的位置信息,就不需要調(diào)用該方法)。

(6)找到該數(shù)據(jù)塊的最佳數(shù)據(jù)節(jié)點(diǎn),讀取數(shù)據(jù)。

(7)當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDatalnputStrcam的close函數(shù),

關(guān)閉輸入流。需要注意的是,在讀取數(shù)據(jù)的過程中,如果客戶端與數(shù)據(jù)節(jié)點(diǎn)通信

時(shí)出現(xiàn)錯(cuò)誤,就會(huì)嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。

23.2HDFS寫數(shù)據(jù)的過程

客戶端向HDFS寫數(shù)據(jù)是一個(gè)復(fù)雜的過程,這里只介紹在不發(fā)生任何異常的

情況下,客戶端連續(xù)調(diào)用crcaieO、wriie()和close。時(shí),從宏觀來看,在HDFS

文件系統(tǒng)上創(chuàng)建并寫個(gè)文件,流程如圖2?5所示。

(1)客戶端通過FilcSys【cm.crcai()創(chuàng)建文件,相應(yīng)地,在HDFS文件系

統(tǒng)中DistribuiedFileSysiem具體實(shí)現(xiàn)了FileSystem。因此,調(diào)用creat()

方法后,DistributedFileSystem會(huì)創(chuàng)建輸入流FSDataOulpuiSlream?

對(duì)于HDFS而言,具體的輸出流就是DFSOuipulSlrean

作業(yè)及課后小結(jié)

課后作業(yè)

1、HDFS讀數(shù)據(jù)的過程是怎樣的?

2、HDFS寫數(shù)據(jù)的過程是怎樣的?

3、延伸閱讀谷歌GFS的論文

授課時(shí)間年月日星期節(jié)課號(hào)8

課題2.3.3HDFS刪除與恢復(fù)數(shù)據(jù)的過程

1、了解HDFS刪除與恢復(fù)數(shù)據(jù)的過程

教學(xué)目的

教學(xué)重點(diǎn)HDFS刪除與恢復(fù)數(shù)據(jù)的過程

教學(xué)難點(diǎn)HDFS刪除與恢復(fù)數(shù)據(jù)的過程

教學(xué)內(nèi)容備注

在HDFS中進(jìn)行數(shù)據(jù)的刪除,與傳統(tǒng)方法區(qū)別很大。傳統(tǒng)硬件文件的刪除操

作是用戶首先找到要?jiǎng)h除文件所在的位置,然后把文件清除掉。在HDFS中,由

于一個(gè)大文件是被切割成若干個(gè)小的Block,然后這些Block以多副本的形式存

儲(chǔ)在不同的DataNode中。文件與對(duì)應(yīng)Block存儲(chǔ)位置的映射關(guān)系存儲(chǔ)在

NameNode中,如果一次找到該文件所有映射位置,啟動(dòng)多線程進(jìn)行刪除,會(huì)給

NameNode帶來很大壓力,客戶的等待時(shí)間也長(zhǎng)。HDFS在這方面有充分的考慮,

把刪除任務(wù)分解成不同的工作線程,減輕NameNode工作負(fù)我,提高用戶體驗(yàn)。

當(dāng)文件被用戶或應(yīng)用程序刪除時(shí),不會(huì)立即從HDFS中刪除。相反,HDFS

首先將其重命名為/irash目錄的文件。只要文件保持在/trash目錄口,文件就可以

快速恢復(fù)。文件保持在/trash中的時(shí)間是可配置的,當(dāng)超過這個(gè)時(shí)間時(shí),NameNode

就會(huì)將該文件從名字空間中刪除。刪除文件會(huì)使與該文件相關(guān)的數(shù)據(jù)塊被釋放。

從用戶刪除文件到HDFS空閑空間的增加之間會(huì)有一定時(shí)間的延遲。

用戶可以在刪除文件后取消刪除文件的操作,只要它保留在"ash目錄中即可。

如果用戶想要?jiǎng)h除已刪除的文件,則可以瀏覽垃圾目錄并檢索文件。/trash目錄

僅包含已刪除文件的最新副本。,依ash目錄和其他目錄沒有什么區(qū)別,除了一點(diǎn):

在該目錄匕HDFS會(huì)應(yīng)用一個(gè)特殊策略來自動(dòng)刪除文件。當(dāng)前默認(rèn)的垃圾桶時(shí)

間間隔設(shè)置為0(刪除文件不存儲(chǔ)在/trash中)。該值可通過core-site.xml文件中

的可配置參數(shù)erval進(jìn)行設(shè)定。

作業(yè)及課后小結(jié)

課后作業(yè)

1、HDFS數(shù)據(jù)刪除與傳統(tǒng)數(shù)據(jù)刪除文件的區(qū)別。

授課時(shí)間年月日星期節(jié)課號(hào)9

課題2.3.4YarnonHDFS的工作原理

教學(xué)目的了解YarnonHDFS的工作原理

教學(xué)重點(diǎn)

教學(xué)難點(diǎn)虛擬化的定義

教學(xué)內(nèi)容備注

1、HDFS是典型的master/slave結(jié)構(gòu),它負(fù)責(zé)大數(shù)據(jù)存儲(chǔ)的分布式系

統(tǒng),客戶端Client>主節(jié)點(diǎn)NameNode和數(shù)據(jù)節(jié)點(diǎn)DataNode之間進(jìn)行

交互完成Hadoop集群數(shù)據(jù)的存儲(chǔ)與讀取等操作。

(1)BlockManagement(塊管理):在NameNode中完成。通過處理

legibtiatioiiis和心跳機(jī)制維護(hù)集群中DalaNude的基本成員關(guān)系。它

支持?jǐn)?shù)據(jù)塊相關(guān)的操作,如創(chuàng)建、刪除、修改和獲取塊的位置,以及

管理副本的復(fù)制和存放。

(2)Storage(存儲(chǔ)):存儲(chǔ)實(shí)際的數(shù)據(jù)塊并提供針對(duì)數(shù)據(jù)塊的讀/寫

服務(wù)。

當(dāng)前HDFS架構(gòu)只允許整個(gè)集群中存在一個(gè)單獨(dú)的NameSpace,該節(jié)點(diǎn)

管理這個(gè)NcimeSpaceo該種架構(gòu)下BlockStoraige和NameSpace高度耦

合,HDFS下的DataXode可以解決在集群中動(dòng)態(tài)增加或減少的橫向擴(kuò)展

問題,但NameNode不可以。當(dāng)前的NameSpaice只能被存放在單個(gè)

NameNode上,而NameNode在內(nèi)存中存儲(chǔ)了整個(gè)分布式文件系統(tǒng)的元數(shù)

據(jù)信息,這限制了集群中數(shù)據(jù)塊、文件和目錄的數(shù)目。從業(yè)務(wù)的獨(dú)立

性上來講,單個(gè)NameNode上的資源有限,進(jìn)而限制了文件操作過程的

吞吐量和元數(shù)據(jù)的數(shù)目。從業(yè)務(wù)的獨(dú)立性上來講,單個(gè)的NamcNode也

難以做到業(yè)務(wù)隔離,使集群難于共享。

1、HDFSFederation(I1DFS聯(lián)盟)

2、HA

HDFSFederation通過多個(gè)NameNode/NameSpace把元數(shù)據(jù)的存儲(chǔ)和管

理分散到多個(gè)節(jié)點(diǎn)中,使NameNode/NameSpace可以通過博加機(jī)器來進(jìn)

行水平擴(kuò)展,所有NameNode共享所有DataNode存儲(chǔ)資源,一定程度

上解決了有限的節(jié)點(diǎn)資源,如內(nèi)存受限的問題。而HA存在的意義就是

通過主備NameNode解決單點(diǎn)故障的問題。在HadoopHA中可以同時(shí)啟

動(dòng)兩個(gè)NameNode。其中一個(gè)處于工作(Active)狀態(tài),另一個(gè)處于隨

時(shí)待命(Standby)狀態(tài)。這樣,當(dāng)一個(gè)NameNode所在的服務(wù)器宕機(jī)

時(shí),可以在數(shù)據(jù)基本不丟失的情況下,手工或者自動(dòng)切換到另一個(gè)

NameNode提供服務(wù)。HA(HighAvailability)的結(jié)構(gòu)如圖2-8所示。

作業(yè)及課后小結(jié)

課后作業(yè):了解HDFS的主從結(jié)構(gòu)及HA的工作原理。

授課時(shí)間年月日星期節(jié)課號(hào)10

課題2.4HDFS常用接口

教學(xué)目的了解HDFS的三種常用接口

教學(xué)重點(diǎn)HDFS的JAVAAPI

教學(xué)內(nèi)容備注

2.4.1HDFS常用操作命令

Hadoop本身很貼心地內(nèi)置了?套對(duì)于整體集群環(huán)境進(jìn)行處理的命令行操作。最

值得一提的是,命令行語(yǔ)法格式與Linux命令很相似,所以有Linux基礎(chǔ)的用戶

學(xué)起來會(huì)感覺格外輕松。無論是Linux、MySQL、Oracle等任一款提供命令行窗

口的工具,首先學(xué)習(xí)它的幫助(help)怎么用,永遠(yuǎn)是很明智的做法。

2.4.2JAVA接口

Hadoop主要是通過使用Java語(yǔ)言編寫實(shí)現(xiàn)的,Hadoop不同的文件系統(tǒng)之間通

過調(diào)用JavaAPI進(jìn)行交互的。上面介紹的Shell命令,本質(zhì)上就是JavaAPI的應(yīng)

用。這里將介紹HDFS中進(jìn)行文件上傳、復(fù)制、下載等操作常用的JavaAPI及

其編程實(shí)例。

1、從HadoopURL中讀取文件:耍從Hadoop文件系統(tǒng)中讀取文件,最簡(jiǎn)單的辦

法是使用java.nei.URL對(duì)象打開數(shù)據(jù)流,從中獲取數(shù)據(jù)。不過這種方法一般要使

用FsUrlStreaniHandlerFactory實(shí)例調(diào)用setURLStreamHandlerFactoryO方法。不過

每個(gè)Java虛擬機(jī)只能調(diào)用?次這個(gè)力法,所以如果其他第三力程序聲明了這個(gè)

root@evassh-1082414:touchtest.txt

root@evassh-1082414:vimtest.txtjj

publicsatticvoidmain(String[]args){

URIuri=

L'RT.create(^hdfs://localhost:9000/user/tmp/test,txt");

Configurationconfig=newConfiguration();

FileSystemfs=FileSystem.get(uri,config);

InputStreamin=null;

try(

in=fs.open(newPath(uri));

lOUtils.copyBytes(in,System.out,2048,false);

}catch(Exceptione){

lOUtils.closeStream(in);

)

)

預(yù)期輸出:WARN[main]-Unabletoloadnative-hadooplibraryfor

yourplatform...usingbuiltin-javaclasseswhereapplicable

床前明月光,疑似地上霜。舉頭望明月,低頭思故鄉(xiāng)。第一行打印出

來的是log4j的日志警告,可以忽略。

FileSystem是一個(gè)通用的文件系統(tǒng)API,FileSystem實(shí)例有下列幾個(gè)

靜態(tài)工廠方法用來構(gòu)造對(duì)象,

publicstaticFileSystemget(Configurationconf)throws

TOException

publicstaticFileSystemget(URIuri,Configurationconf)throws

lOException

publicstaticFileSystemget(URIui'i.Configurationconf.String

user)

Configuration對(duì)象封裝了客戶端或服務(wù)器的配置,通過設(shè)置配置文件

讀取類路徑來實(shí)現(xiàn)(如:/etc/hadoop/core-site.xml)o

作業(yè)及課后小結(jié)

課后作業(yè):

1.自己動(dòng)手在Hadoop平臺(tái)中使用JAVAAPI接口讀寫數(shù)據(jù)。

2.利用JAVAAPI接口上傳和下載文件。

授課時(shí)間年月日星期節(jié)課號(hào)1

課題3.1序列化

3、了解Hadoop序列化機(jī)制

4、了解Hadoop序列化相關(guān)接口

教學(xué)目的

5、掌握Writable類

6、能實(shí)現(xiàn)定制的Writable類型

教學(xué)重點(diǎn)掌握Hadoop序列化相關(guān)接口以及Writable類

自定義Writable類,完全控制二進(jìn)制表示和排序順序

教學(xué)難點(diǎn)

教學(xué)內(nèi)容備注

3.1.IHadoop序列化機(jī)制

1.Java序列化機(jī)制

優(yōu)點(diǎn):序列化和反序列化簡(jiǎn)單,通過一對(duì)輸入/輸出流來實(shí)現(xiàn)的。

缺點(diǎn):序列化的結(jié)果保存了大量的附加信息,導(dǎo)致序列化結(jié)果膨脹

2.Hadoop序列化機(jī)制

特點(diǎn):

1)緊湊:可以充分利用數(shù)據(jù)中心的帶寬,也便于高效使用存儲(chǔ)空間。

2)快速:序列化和反序列化的開銷小,使得讀取或?qū)懭隩B、PB級(jí)別

數(shù)據(jù)開銷變得極小。

3)可擴(kuò)展;序列化機(jī)制可以隨著系統(tǒng)間通信的協(xié)議的升級(jí)、類的定義

的變化而升級(jí)和變化。

4)互操作:可以支持不同開發(fā)語(yǔ)言間的通信。

3.1.2Hadoop序列化相關(guān)接口

1.Writable接口

利用Writer接口對(duì)類對(duì)象進(jìn)行序列化和反序列化,具體步驟如下:

1)實(shí)現(xiàn)Writable接口;

2)重寫序列化write方法和反序列化readFields方法。注意:反序

列化的順序和序列化的順序完全一致;重點(diǎn)講解:

2.Writab1eComparab1e接口IntWritable與

利用Writab1eComparab1e接口對(duì)類對(duì)象進(jìn)行序列化和反序列化的同VIntWritable

時(shí),還可以對(duì)類對(duì)象進(jìn)行比較。因此此類對(duì)象可以用在Hadoop的key的區(qū)別和聯(lián)系

中進(jìn)行傳輸。

利用WritabieComparable接口對(duì)類對(duì)象進(jìn)行序列化和反序列化,具體

步驟如下:

1)定義空構(gòu)造函數(shù);

2)重寫序列化write方法和反序列化readFields方法。注意:

反序列化的順序和序列化的順序完全一致;

3)重寫compareTo方法;

RawComparator接口此處舉例實(shí)現(xiàn)

其功能與WritabieComparable接口一樣,但是實(shí)現(xiàn)該接口的類可自定義的

以直接在字節(jié)流這一級(jí)別進(jìn)行比較,而不需要將字節(jié)流反序列化為對(duì)Writable類型

象再進(jìn)行比較,因此它的效率要高很多。

3.3.3Writable類

1.Java基本類型對(duì)應(yīng)的Writable類

BooleanWritable

ByteWritable

IntWritable

VTntWritable

FloatWritable

LongWritable

Vl.ongWritable

DoubleWritable

2.Text類

3.BytesWritable類

4.NullWritable類

5.ObJeuWiHable類

6.GenericWritable類

7.Writable集合類

3.3.4實(shí)現(xiàn)定制的Writable類型

創(chuàng)建一個(gè)白定義Writable類時(shí)候需要注意以下幾項(xiàng):

(1)必須實(shí)現(xiàn)WritabieComparable接口:在hadocp中所有的

kcy/va1ue都必須實(shí)現(xiàn)Writab1e接口,所有的key必須實(shí)現(xiàn)Comparab1e

接口,在MapReduce過程中需要對(duì)Key/Value對(duì)進(jìn)行反復(fù)的排序。因

此必須重寫序列化方法write。、反序列化方法readFieldsO以及

compareTo()方法。注意反序列化的順序和序列化的順序完全一致;

(2)必須重寫object的hashCode(),equals。和toStringO方法。

hashCode()給后面的MapReduce進(jìn)行reduce分區(qū)使用;要想把結(jié)果顯

示在文件中,需要重寫toStringO,且用“\t"分開,方便后續(xù)用;

(3)必須有空參構(gòu)造函數(shù):反序列化時(shí),需要反射調(diào)用空參構(gòu)造函數(shù)

創(chuàng)建對(duì)象;

作業(yè)及課后小結(jié)

課后作業(yè):

lxHadoop為什么不能采川java序列化機(jī)制?

2、Hadoop序列化機(jī)制的優(yōu)缺點(diǎn)?

授課時(shí)間年月日星期節(jié)課號(hào)2

課題3.2壓縮

教學(xué)目的1、了解Hadoop常使用的壓縮格式、工具和算法

2、掌握在程序中如何進(jìn)行壓縮和解壓縮

Hcidoop中如何選擇壓縮格式、工具和算法

教學(xué)重點(diǎn)

Hadoop中如何選擇壓縮格式、工具和算法

教學(xué)難點(diǎn)

教學(xué)內(nèi)容備注

1、Hadoop常使用的壓縮工具的優(yōu)缺點(diǎn)和應(yīng)用場(chǎng)景

(1)gzip壓縮

(2)Izop壓縮

(3)bzip2壓縮

(4)Snappy壓縮

2、hadoop提供了三種方式讓用戶對(duì)數(shù)據(jù)進(jìn)行壓縮和解壓縮

(1)利用CompressionCodec類對(duì)流進(jìn)行壓縮和解壓縮

(2)本地庫(kù)

(3)CodecPool(壓縮解碼池)

3>Hadoop中使用壓縮

(1)壓縮格式的選擇

(2)壓縮位置的選擇

(3)壓縮參數(shù)配置

作業(yè)及課后小結(jié)

課后作業(yè):

3、Snappy壓縮工具的優(yōu)缺點(diǎn)和應(yīng)用場(chǎng)景?

2、在什么情況下要使用CodecPool(壓縮解碼池)?

授課時(shí)間年月日星期節(jié)課號(hào)3

課題數(shù)據(jù)的完整性;基于文件的數(shù)據(jù)結(jié)構(gòu)

2、了解Hadoop數(shù)據(jù)完整性機(jī)制;

教學(xué)目的3、掌握ScqucnceFile的存儲(chǔ)結(jié)構(gòu)和常用算法;

4、掌握MapFile的存儲(chǔ)結(jié)構(gòu)和常用算法;

掌握SequenceFile的存儲(chǔ)結(jié)構(gòu)和常用算法;

教學(xué)重點(diǎn)

掌握ScqucnceFile的存儲(chǔ)結(jié)構(gòu)和常用算法;

教學(xué)難點(diǎn)

教學(xué)內(nèi)容備注

3.3.1數(shù)據(jù)完整性概述

1、數(shù)據(jù)傳輸過程的數(shù)據(jù)完整性保障:

DataNode在存儲(chǔ)客戶端上傳的數(shù)據(jù)之前,會(huì)先檢測(cè)數(shù)據(jù)的“校驗(yàn)和”,

沒有問題才寫入;同樣,客戶端從DalaNode讀取數(shù)據(jù)時(shí)也會(huì)檢測(cè)數(shù)據(jù)

的“校驗(yàn)和”,沒有問題才寫入本地文件系統(tǒng)。

2、存儲(chǔ)的數(shù)據(jù)塊的完整性保障:校驗(yàn)和

DataNode在后臺(tái)運(yùn)行一個(gè)程序定期(默認(rèn)為21天)對(duì)存儲(chǔ)在其上的數(shù)

據(jù)塊進(jìn)行檢測(cè)“檢驗(yàn)和”,然后將檢測(cè)結(jié)果向NameNodc報(bào)告,防止物

理存儲(chǔ)介質(zhì)中位衰減而造成的數(shù)據(jù)損壞。

3.3.2HDFS的數(shù)據(jù)完整性

1.對(duì)本地文件I/O的檢查

2.對(duì)UDFS的I/O數(shù)據(jù)進(jìn)行檢查

3.Hadoop處理?yè)p壞數(shù)據(jù)的機(jī)制

3.3.3LocalFileSystem和RawFi1eSystem

3.3.4ChecksumFi1eSystem

3.4.1SequenceFile

1.SequenceFile存儲(chǔ)結(jié)構(gòu)

在存儲(chǔ)結(jié)構(gòu)上,SequenceFile主要由一個(gè)Header后跟多條Record組

成。Header主要包含了Keyclassname、Valueclassname、存儲(chǔ)壓縮

算法、用戶自定義元數(shù)據(jù)等信息。此外,還包含了一些同步標(biāo)識(shí)Sync,

用于快速定位到記錄的邊界,每條Record以鍵值對(duì)的方式進(jìn)行存儲(chǔ),

用來表示它的字符數(shù)組可依次解析成:記錄的長(zhǎng)度、Key的長(zhǎng)度、Key

值和Value值,并且Value值的結(jié)構(gòu)取決于該記錄是否被壓縮。

2.SequenceFile的常用操作

(1)寫操作:SequenceFile類的寫操作由該類的內(nèi)部類

SequenceFile.Writer提供。

(2)讀操作

SequenceFile讀操作實(shí)現(xiàn)步驟如下:

①設(shè)置Configuration

②獲取FileSystem

③設(shè)置文件輸入路徑

④創(chuàng)建一?個(gè)SequenceFile.Reader實(shí)例進(jìn)行讀取

⑤得到KeyClass和ValueClass

⑥關(guān)閉輸入流

3.4.2MapFile存儲(chǔ)結(jié)構(gòu)

作業(yè)及課后小結(jié)

課后作業(yè):

1、HDFS如何保證數(shù)據(jù)的完整性的?

2、SequenceFile的優(yōu)缺點(diǎn)?

第四章MapReduce編程課程教案

授課班級(jí)

時(shí)間

授課類型理論課0實(shí)訓(xùn)課口理論+實(shí)訓(xùn)口S2

(請(qǐng)打J)

授課題目(考1學(xué)章、節(jié)或主題):

1.MapReduce工作原理

教學(xué)目標(biāo):

一、MapReduce計(jì)算模型

二、M叩Reducc經(jīng)典案例

三、MapReduce應(yīng)用場(chǎng)景

教學(xué)重點(diǎn)及難點(diǎn):

-V重點(diǎn)

MapReduce計(jì)算模型

二、難點(diǎn)

MapReduce工作原理

教學(xué)基本內(nèi)容和組織過程(含活動(dòng)安排、時(shí)間)及教學(xué)手段

第一節(jié)課

第一次課梗概(45分鐘)(講授法)

學(xué)生使用學(xué)習(xí)通APP加入課程;

教師介紹;

認(rèn)識(shí)學(xué)生:

講解上課紀(jì)律;

講解本課程的課程標(biāo)準(zhǔn);

學(xué)習(xí)本課程要達(dá)到的能力目標(biāo)和知識(shí)目標(biāo);

課程教學(xué)方法及手段;

學(xué)生學(xué)習(xí)要求;

考核方式。

思政要求:在中國(guó)科學(xué)院第十九次院士大會(huì)、中國(guó)工程院第十四次院士大會(huì)

上的講話上,習(xí)近平指出:“要把握數(shù)字化、網(wǎng)絡(luò)化、智能化融合發(fā)展的契機(jī),

以信息化、智能化為杠桿培育新動(dòng)能,優(yōu)先培育和大力發(fā)展一批戰(zhàn)略性新興產(chǎn)業(yè)

集群,推進(jìn)互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能同實(shí)體經(jīng)濟(jì)深度融合?!遍_啟人工智能新

紀(jì)元,是黨長(zhǎng)期執(zhí)政的需要,是全面從嚴(yán)治黨的需要,是傳承和弘揚(yáng)中華優(yōu)秀傳

統(tǒng)文化的需要,是構(gòu)建人類命運(yùn)共同體的需要。

第二節(jié)課

一、給出本次課教學(xué)目標(biāo)及重難點(diǎn)(5分鐘)

二、教學(xué)內(nèi)容(35分鐘)(講授法)

(-)計(jì)算模型

1.分布式并行式編程

I)數(shù)據(jù)激增

2)分布式文件系統(tǒng)

服務(wù)器塊1服務(wù)器塊2服務(wù)器塊3服務(wù)器塊N

2.MapReduce計(jì)算模型

1)MapReduce總覽

2)M叩步驟(如圖4-2所示:)

中間key-value對(duì)

輸入key?value對(duì)

-

Ann嗎

Map步驟

(如圖4-2所示:)

3)Reduce步驟

4)MapReduce并行化(如圖4-3所示)

MapTask1MapTask2MapTask3

kl:vkl】k2.v|~|k;;vk3、kJ、

PaititioningFunctionFaitifioningFunctionParrifioBtnfFunction

SoitandGroupSoftandGioup

◎匕.vIk◎4.v.v.v|@kskI、、、、k3、、

ReduceTaskIReduceTask2

3.MapReduce實(shí)例

4.改進(jìn)與優(yōu)化

(—)MapReduce經(jīng)典案例

L倒排索引案例

1)需求

有大量的文本(文檔、網(wǎng)頁(yè)),需要建立搜索索弓I。

輸入數(shù)據(jù),如圖4-6所示。

1.輸入數(shù)據(jù)2.第一次預(yù)期輸出結(jié)果3.第二次預(yù)期輸出結(jié)果

atguigupingpingatguigu--a.ext3atguiguc.txt-->2b.ex;-->2a.txt-->3

a.txtatguigussatguigu--b.txt2pingpingc.b.tx;->3a.txt->1

atguigussatguigu--c.txt2ssc.b.tx;->1a.txt->2

atguigupingpingpingping--a.txt1

b.txtatguigupingpingpingping--b.txt3

pingpingsspingping--c.txt1

ss--a.txt2

atguiguss

ss--b.txt1

atguigupingpingss--c.txt1

2)需求分析

3)代碼實(shí)現(xiàn)

(三)MapReduce應(yīng)用場(chǎng)景

1.數(shù)據(jù)類型

2.二次排序

3.RawComparator

4.MapReduceJoin編程

5.分布式拷貝DistCP

6.Yarn的資源管理

三、小結(jié)(5分鐘)

小結(jié)本節(jié)課涉及到的知識(shí)點(diǎn)。

課后反思:

第四章MapReduce編程課程教案

授課班級(jí)

時(shí)間

授課類型課時(shí)

理論課目實(shí)訓(xùn)課口理論+實(shí)訓(xùn)口2

(請(qǐng)打J)安排

授課題目(第(學(xué)章、節(jié)或主題):

4.2MapReduce數(shù)據(jù)流

教學(xué)目標(biāo):

四、分片、格式化數(shù)據(jù)源(InputFormat)

五、M叩過程

六、Shuffle過程

七、Reduce過程

八、文件寫入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論