版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中共濰坊市委外事工作委員會(huì)辦公室所屬事業(yè)單位公開招聘工作人員備考題庫(kù)完整答案詳解
- 2026年醫(yī)院重點(diǎn)項(xiàng)目跟蹤合同
- 2024年北京八中高二(上)期中英語(yǔ)試題和答案
- 2025年紹興市中等專業(yè)學(xué)校合同制工作人員(融媒體工作技術(shù)員)招聘?jìng)淇碱}庫(kù)及一套答案詳解
- 2026年醫(yī)療行業(yè)銷售計(jì)劃合同
- 2025年中國(guó)郵政儲(chǔ)蓄銀行蘇州市分行信用卡直銷團(tuán)隊(duì)招聘?jìng)淇碱}庫(kù)及參考答案詳解
- 中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心2026屆校園招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2025年內(nèi)蒙古農(nóng)村商業(yè)銀行管理人員及專業(yè)人才公開招聘?jìng)淇碱}庫(kù)及一套答案詳解
- 2025年中國(guó)社會(huì)科學(xué)院亞太與全球戰(zhàn)略研究院公開招聘第一批專業(yè)技術(shù)人員備考題庫(kù)有答案詳解
- 2025廣西學(xué)法考試試題和答案
- 2024年度律師事務(wù)所主任聘用合同2篇
- 道路邊坡施工保通施工方案
- 充電樁最簡(jiǎn)單免責(zé)協(xié)議書
- ATS-2基本培訓(xùn)資料4.1
- GB/T 5169.12-2024電工電子產(chǎn)品著火危險(xiǎn)試驗(yàn)第12部分:灼熱絲/熱絲基本試驗(yàn)方法材料的灼熱絲可燃性指數(shù)(GWFI)試驗(yàn)方法
- 北師大版小學(xué)數(shù)學(xué)六年級(jí)上冊(cè)第一單元圓《圓周率的歷史》教學(xué)課件
- 【基于Java的圖書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)7600字(論文)】
- 數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)教程第三章答案
- 2024年廣東省深圳市中考英語(yǔ)真題含解析
- FZ∕T 73066-2020 針織孕產(chǎn)婦文胸
- 建筑節(jié)能改造與建筑文化遺產(chǎn)保護(hù)
評(píng)論
0/150
提交評(píng)論