




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——走進(jìn)大數(shù)據(jù)世界引言2020年我國決戰(zhàn)脫貧攻堅(jiān)取得決定性勝利,在脫貧攻堅(jiān)過程中,大數(shù)據(jù)技術(shù)得到廣泛應(yīng)用,為盡早實(shí)現(xiàn)精準(zhǔn)脫貧目標(biāo)提供了可行路徑。目錄content02大數(shù)據(jù)的特點(diǎn)01大數(shù)據(jù)的概念03大數(shù)據(jù)的應(yīng)用領(lǐng)域1.大數(shù)據(jù)概念大數(shù)據(jù)摩爾定律:數(shù)據(jù)每年都在以50%的速度增長,人類在最近兩年產(chǎn)生的數(shù)據(jù)量相當(dāng)于之前產(chǎn)生的全部數(shù)據(jù)量。中商產(chǎn)業(yè)研究院預(yù)測2022年全球大數(shù)據(jù)儲量已達(dá)61.2ZB。1.大數(shù)據(jù)概念ZB是個(gè)什么概念呢?1TB=1024GB如果把1ZB的文件往1TB的硬盤里裝,通過換算,大概需要10億塊1TB的硬盤,硬盤連接起來足夠繞地球兩圈半。ZB是個(gè)什么概念呢?1TB=1024GB1PB=1024TB1PB=1024TB1EB=1024PB1ZB=1024EB1.大數(shù)據(jù)概念知名咨詢公司麥肯錫全球研究院給出的大數(shù)據(jù)定義是:一種規(guī)模大到在獲取、存儲、管理、分析方面大大超出了傳統(tǒng)數(shù)據(jù)庫軟件能力范圍的數(shù)據(jù)集合,即大數(shù)據(jù)。這個(gè)數(shù)據(jù)集合,已超過了以往的常規(guī)數(shù)據(jù)集合。定義大數(shù)據(jù)國務(wù)院在2015年印發(fā)的《促進(jìn)大數(shù)據(jù)發(fā)展行動(dòng)綱要》中指出,大數(shù)據(jù)是以容量大、類型多、存取速度快、應(yīng)用價(jià)值高為主要特征的數(shù)據(jù)集合,正快速發(fā)展為對數(shù)量巨大、來源分散、格式多樣的數(shù)據(jù)進(jìn)行采集、存儲和關(guān)聯(lián)分析,從中發(fā)現(xiàn)新知識、創(chuàng)造新價(jià)值、提升新能力的新一代信息技術(shù)和服務(wù)業(yè)態(tài)。1.大數(shù)據(jù)概念定義大數(shù)據(jù)2.大數(shù)據(jù)的4V特點(diǎn)數(shù)據(jù)量大(Volume)數(shù)據(jù)類型繁多(Variety)處理速度快(Velocity)價(jià)值密度低(Value)1V2V4V3V2.大數(shù)據(jù)的特點(diǎn)數(shù)據(jù)量大(Volume):隨著物聯(lián)網(wǎng)、電子商務(wù)、社會化網(wǎng)絡(luò)的快速發(fā)展,全球大數(shù)據(jù)儲量迅猛增長,遠(yuǎn)遠(yuǎn)超出人類的想象空間。裝在1TB的硬盤里,硬盤重約3000萬噸,拉走這些硬盤需要50萬節(jié)火車車廂。裝在1TB的硬盤里,大概需要62億塊,足夠繞地球150多圈。2022年的大數(shù)據(jù)儲量61.2ZB2.大數(shù)據(jù)的特點(diǎn)數(shù)據(jù)類型繁多(Variety):大數(shù)據(jù)的結(jié)構(gòu)類型豐富多樣,由結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)組成,結(jié)構(gòu)化數(shù)據(jù)占10%左右,存儲在數(shù)據(jù)庫中;非結(jié)構(gòu)化數(shù)據(jù)占90%左右,主要包括郵件、音頻、視頻、位置信息、微博等。2.大數(shù)據(jù)的特點(diǎn)這是大數(shù)據(jù)區(qū)分于傳統(tǒng)數(shù)據(jù)挖掘最顯著的特征。從數(shù)據(jù)的生成到消耗,時(shí)間窗口非常小,可用于生成決策的時(shí)間非常少?!?秒定律”或者秒級定律:就是說對處理速度有要求,一般要在秒級時(shí)間范圍內(nèi)給出分析結(jié)果,時(shí)間太長就失去價(jià)值了。在100萬張DVD光盤中查詢數(shù)據(jù)只需要1~2秒的時(shí)間。Velocity處理速度快2.大數(shù)據(jù)的特點(diǎn)99%1%價(jià)值密度低Value信息感知無處不在,信息海量,但價(jià)值密度較低,如何通過強(qiáng)大的機(jī)器算法更迅速地完成數(shù)據(jù)的價(jià)值“提純”,是大數(shù)據(jù)時(shí)代亟待解決的難題。例如:實(shí)時(shí)攝像頭的監(jiān)控?cái)?shù)據(jù),有用的信息往往只有幾秒時(shí)間。3.大數(shù)據(jù)應(yīng)用領(lǐng)域大數(shù)據(jù)在環(huán)境行業(yè)中的應(yīng)用大數(shù)據(jù)在智慧城市中的應(yīng)用123564大數(shù)據(jù)在金融領(lǐng)域中的應(yīng)用大數(shù)據(jù)在醫(yī)療行業(yè)中的應(yīng)用大數(shù)據(jù)在環(huán)境行業(yè)中的應(yīng)用大數(shù)據(jù)在農(nóng)業(yè)中的應(yīng)用大數(shù)據(jù)在農(nóng)產(chǎn)品溯源中的應(yīng)用3.大數(shù)據(jù)應(yīng)用領(lǐng)域智慧城市金融醫(yī)療遍布于智慧城市中的交通、醫(yī)療、生活等城市建設(shè)中的各個(gè)方面,使得城市的管理已經(jīng)從“城市經(jīng)驗(yàn)治理”向“城市數(shù)字治理”方向發(fā)展。金融交易過程中,每一天都會產(chǎn)生大量的交易記錄、業(yè)績報(bào)表、研究報(bào)告、信貸分析報(bào)告等,金融業(yè)高度依賴于大數(shù)據(jù)技術(shù),大數(shù)據(jù)技術(shù)為金融業(yè)提供了決策支持。構(gòu)建大數(shù)據(jù)平臺來收集不同病例和治療方案,以及病人的基本特征,建立針對疾病特點(diǎn)的數(shù)據(jù)庫,幫助醫(yī)生進(jìn)行疾病診斷。3.大數(shù)據(jù)應(yīng)用領(lǐng)域環(huán)境農(nóng)業(yè)農(nóng)產(chǎn)品借助于大數(shù)據(jù)技術(shù),天氣預(yù)報(bào)的準(zhǔn)確性和實(shí)效性大大提高,同時(shí)對于重大自然災(zāi)害預(yù)報(bào)更加準(zhǔn)確,有利于幫助人們提高應(yīng)對自然災(zāi)害的能力。利用大數(shù)據(jù)技術(shù)可以管理地塊和規(guī)劃作物種植適宜區(qū),預(yù)測氣候、自然災(zāi)害、病蟲害、土壤等環(huán)境因素,監(jiān)測作物長勢,指導(dǎo)灌溉和施肥,預(yù)估產(chǎn)量。利用大數(shù)據(jù)技術(shù)通過向上追蹤可以查詢到產(chǎn)品的源頭信息;通過向下追蹤可以查詢到產(chǎn)品的流通信息,包括產(chǎn)品的銷售信息、物流信息以及售后情況等。本節(jié)小結(jié)大數(shù)據(jù)技術(shù)已經(jīng)滲透到了人類生活中的各個(gè)領(lǐng)域。概念特點(diǎn)應(yīng)用領(lǐng)域Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——Hadoop簡介目錄content0201Hadoop簡介Hadoop特點(diǎn)Hadoop簡介Hadoop是一個(gè)Apache軟件基金會旗下的開源軟件Hadoop簡介Hadoop具有旺盛的生命力免費(fèi)極大的降低使用的復(fù)雜旺盛的生命力它對普通用戶屏蔽了技術(shù)底層實(shí)現(xiàn)的細(xì)節(jié),只要按照它提供的接口做一些簡單的操作,后臺所有的工作全部有它整個(gè)系統(tǒng)技術(shù)自己去實(shí)現(xiàn)。Hadoop簡介Hadoop是用Java開發(fā),但支持多種編程語言開發(fā)Hadoop是使用Java語言開發(fā),但不是只能用Java語言去寫Hadoop的應(yīng)用,在Hadoop平臺上開發(fā)它的應(yīng)用可以使用任意語言。Hadoop簡介--兩大核心大數(shù)據(jù)項(xiàng)目的集合體,一整套解決方案的統(tǒng)稱分布式并行編程框架MapReduce海量數(shù)據(jù)的分布式計(jì)算分布式文件系統(tǒng)HDFS:海量數(shù)據(jù)的分布式存儲Hadoop簡介--解決兩大關(guān)鍵問題HDFS:海量數(shù)據(jù)的分布式存儲解決怎么用成百上千乃至上萬臺機(jī)器存儲PB乃至EB規(guī)模的數(shù)據(jù)。Hadoop解決了大數(shù)據(jù)時(shí)代最關(guān)鍵的兩個(gè)難題:MapReduce:海量數(shù)據(jù)的分布式處理解決上千臺服務(wù)器同時(shí)完成一個(gè)任務(wù)的分布式并行處理。Hadoop在各個(gè)領(lǐng)域得到了非常廣泛的應(yīng)用,滿足了許多企業(yè)實(shí)際的需求,也成為各大知名公司的寵兒。。Hadoop簡介--應(yīng)用國內(nèi)點(diǎn)擊添加標(biāo)題內(nèi)容添加關(guān)鍵字Hadoop起源Hadoop平臺的兩大核心組件均來自于谷歌2008年1月,Hadoop正式成為Apache頂級項(xiàng)目;2008年4月,Hadoop用910個(gè)節(jié)點(diǎn)構(gòu)成集群,對1TB的數(shù)據(jù)進(jìn)行排序,僅用了209秒,一戰(zhàn)成名,Hadoop由此名聲大震。Hadoop最早是為了構(gòu)建一個(gè)大型全網(wǎng)搜索引擎。谷歌2004年發(fā)布了并行編程框架MapReduce。2005年,Hadoop平臺把它作為自己的MapReduce的開源實(shí)現(xiàn)。谷歌2003年發(fā)布了分布式文件系統(tǒng)GFS,2004年,Hadoop把GFS應(yīng)用到自己的平臺,即HDFS是GFS的開源實(shí)現(xiàn)。Hadoop簡介Hadoop的名字不是單詞的首字母縮寫Hadoop不是版本號最高就代表最新這是因?yàn)閷τ谌魏我粋€(gè)Apache開源項(xiàng)目,當(dāng)需要開發(fā)某個(gè)特性時(shí),會專門從主代碼線中延伸出一個(gè)分支。由于多個(gè)分支可能會同時(shí)進(jìn)行研發(fā),因此版本高的分支有時(shí)候會先于版本低的分支發(fā)布。Hadoop項(xiàng)目負(fù)責(zé)人曾經(jīng)這樣描述過這個(gè)名字:“這是我的孩子給他的黃色毛絨小象玩具起得名字,簡短易于讀寫,沒有具體意義且沒有被別人使用過,這就是我對于項(xiàng)目命名的原則”。Hadoop特點(diǎn)低成本高效性高容錯(cuò)性高可靠性支持多種編程語言高擴(kuò)展性Hadoop特點(diǎn)高可靠性Hadoop采用冗余副本機(jī)制;當(dāng)部分機(jī)器發(fā)生故障時(shí),其他機(jī)器也可以保證集群正常對外提供服務(wù)。集群中的一臺機(jī)器有問題,其余機(jī)器繼續(xù)提供服務(wù)Hadoop特點(diǎn)高效性Hadoop以并行的方式工作,非常高效的處理海量數(shù)據(jù)。成百上千臺機(jī)器一起計(jì)算Hadoop特點(diǎn)高擴(kuò)展性Hadoop實(shí)現(xiàn)了線性擴(kuò)展,可以從單個(gè)服務(wù)器擴(kuò)展到數(shù)千臺計(jì)算機(jī),并且每臺計(jì)算機(jī)都提供了數(shù)據(jù)存儲功能和計(jì)算功能。Hadoop特點(diǎn)高容錯(cuò)性Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配,當(dāng)其中一個(gè)副本出現(xiàn)故障時(shí),不影響集群的整體運(yùn)行。Hadoop特點(diǎn)低成本Hadoop使用廉價(jià)計(jì)算機(jī)搭建集群,從而降低了硬件成本,普通用戶也可以使用自己的個(gè)人計(jì)算機(jī)搭建和運(yùn)行Hadoop。個(gè)人計(jì)算機(jī)搭建大數(shù)據(jù)集群Hadoop特點(diǎn)123支持多種編程語言支持多種編程語言完成Hadoop平臺的應(yīng)用程序開發(fā)。
具有很好的跨平臺特性;Hadoop是用Java語言開發(fā)的。本節(jié)小結(jié)Hadoop自誕生以來,改變了對數(shù)據(jù)存儲、處理和分析的過程,加速了大數(shù)據(jù)技術(shù)的快速發(fā)展,得到了非常廣泛的應(yīng)用。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——Hadoop生態(tài)系統(tǒng)目錄content02MapRedcue01HDFS03YARN04ZooKeeper05Hive07Sqoop06HBase08Kafka09FlumeHadoop生態(tài)系統(tǒng)簡介Hadoop生態(tài)系統(tǒng)圖HDFS:分布式文件系統(tǒng)成百上千臺服務(wù)器完成海量數(shù)據(jù)存儲和管理??梢赃\(yùn)行在廉價(jià)的個(gè)人計(jì)算機(jī)集群上。HDFS負(fù)責(zé)整個(gè)分布式文件的存儲YARN:資源調(diào)度YARN負(fù)責(zé)資源的管理和調(diào)度例如內(nèi)存,CPU,帶寬等需要YARN統(tǒng)一調(diào)度。海量數(shù)據(jù)在HDFS存儲后,需要進(jìn)行相關(guān)的處理,但是處理之前,需要一個(gè)計(jì)算的框架去調(diào)度資源,底層那么多資源,需要YARN框架進(jìn)行調(diào)度。MapReduce:分布式文件計(jì)算不是實(shí)時(shí)計(jì)算,是負(fù)責(zé)離線,批處理計(jì)算的。用戶只需實(shí)現(xiàn)Map和Reduce兩個(gè)函數(shù)就可以完成分布式計(jì)算任務(wù)。MapReduce解決海量數(shù)據(jù)的計(jì)算問題Hive:數(shù)據(jù)倉庫Hive是Hadoop的數(shù)據(jù)倉庫。用于離線分析用于企業(yè)的決策分析ZooKeeper:協(xié)調(diào)服務(wù)用于統(tǒng)一維護(hù)配置信息、域名,提供分布式同步、組服務(wù)等可以用來搭建高可用集群。Hive是分布式應(yīng)用程序協(xié)調(diào)服務(wù)。HBase:非結(jié)構(gòu)化數(shù)據(jù)庫面向列的分布式開源數(shù)據(jù)庫。隨機(jī)讀寫,支持實(shí)時(shí)應(yīng)用。HBase是非關(guān)系型數(shù)據(jù)庫。HBase是Hadoop的非結(jié)構(gòu)化數(shù)據(jù)庫。Flume:日志收集訪問阿里巴巴、淘寶時(shí)的數(shù)據(jù)流都是實(shí)時(shí)生成的,需要進(jìn)行實(shí)時(shí)分析,必須有一套工具把它收集過來,F(xiàn)lume就是幫助進(jìn)行日志收集的。Flume負(fù)責(zé)日志收集Sqoop:數(shù)據(jù)導(dǎo)入導(dǎo)出Sqoop專門用于把關(guān)系型數(shù)據(jù)庫中的相關(guān)產(chǎn)品導(dǎo)入到Hadoop平臺上的HDFS、HBASE、HIVE數(shù)據(jù)庫;反之,用Sqoop把Hadoop平臺上的HDFS、HBASE、HIVE中的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫中。Sqoop負(fù)責(zé)數(shù)據(jù)的導(dǎo)入導(dǎo)出Kafka:開源流處理平臺是一個(gè)開源流處理平臺,由Scala和Java編寫。是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。本節(jié)小結(jié)本節(jié)介紹了Hadoop生態(tài)系統(tǒng)中的主要組件,Hadoop經(jīng)過多年的發(fā)展,整個(gè)生態(tài)系統(tǒng)不斷成熟和完善。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——虛擬機(jī)安裝目錄content01虛擬機(jī)安裝VMware簡介虛擬機(jī)指通過軟件模擬具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng),在實(shí)體計(jì)算機(jī)中能夠完成的工作在虛擬機(jī)中基本都能夠?qū)崿F(xiàn)。VMwareWorkstation是一款功能強(qiáng)大的桌面虛擬計(jì)算機(jī)軟件,提供用戶在單一的桌面上同時(shí)運(yùn)行不同的操作系統(tǒng),以及進(jìn)行開發(fā)、測試、部署新的應(yīng)用程序的最佳解決方案。新建虛擬機(jī)步驟1步驟2新建虛擬機(jī)步驟3步驟4新建虛擬機(jī)步驟5本章小結(jié)本節(jié)一起創(chuàng)建了虛擬機(jī),相信大家對虛擬機(jī)創(chuàng)建已經(jīng)有了初步的認(rèn)識,為我們后續(xù)搭安裝CentOS7操作系統(tǒng)打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——CentOS7操作系統(tǒng)安裝目錄content01CentOS7操作系統(tǒng)安裝安裝CentOS7操作系統(tǒng)步驟1步驟2安裝CentOS7操作系統(tǒng)步驟3設(shè)置時(shí)區(qū)界面設(shè)置鍵盤信息界面設(shè)置語言信息界面安裝CentOS7操作系統(tǒng)步驟4安裝資源界面軟件安裝選擇界面安裝CentOS7操作系統(tǒng)步驟5安裝位置界面選擇標(biāo)準(zhǔn)分區(qū)界面安裝CentOS7操作系統(tǒng)步驟6boot分區(qū)界面swap分區(qū)界面安裝CentOS7操作系統(tǒng)步驟7根分區(qū)界面安裝CentOS7操作系統(tǒng)步驟8手動(dòng)分區(qū)界面安裝界面步驟9安裝CentOS7操作系統(tǒng)步驟8:安裝完成界面CentOS7登錄界面步驟9:本章小結(jié)本節(jié)一起創(chuàng)建了虛擬機(jī),并在虛擬機(jī)上安裝了CentOS7,相信大家對CentOS7已經(jīng)有了初步的認(rèn)識,為我們后續(xù)搭建Hadoop分布式平臺打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——虛擬機(jī)克隆目錄content01虛擬機(jī)克隆Hadoop集群搭建步驟—Hadoop安裝關(guān)閉要被克隆的虛擬機(jī)。步驟1:步驟2:Hadoop集群搭建步驟—Hadoop安裝步驟3:Hadoop集群搭建步驟—修改配置文件步驟4:步驟5:Hadoop集群搭建步驟—修改配置文件步驟6:步驟7:生成MAC地址后,需要重啟網(wǎng)絡(luò)服務(wù),命令如下:systemctlrestartnetwork本章小結(jié)本節(jié)一起克隆了CentOS7操作系統(tǒng),相信大家已經(jīng)掌握了CentOS7操作系統(tǒng)的克隆,為我們后續(xù)搭建Hadoop分布式平臺打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——虛擬機(jī)集群環(huán)境配置-修改IP地址目錄content01修改IP地址虛擬機(jī)集群環(huán)境配置-修改IP地址步驟1步驟2虛擬機(jī)集群環(huán)境配置-修改IP地址步驟3ifcfg-ens33修改前內(nèi)容ifcfg-ens33修改后內(nèi)容靜態(tài)IP地址網(wǎng)關(guān)子網(wǎng)掩碼,也可以寫成PREFIX=24DNS,與網(wǎng)關(guān)設(shè)置成一樣虛擬機(jī)集群環(huán)境配置-修改IP地址步驟4虛擬機(jī)集群環(huán)境配置-修改IP地址步驟5虛擬機(jī)集群環(huán)境配置-修改IP地址slave1節(jié)點(diǎn)中IP配置信息虛擬機(jī)集群環(huán)境配置-修改IP地址slave2節(jié)點(diǎn)中IP配置信息虛擬機(jī)集群環(huán)境配置-修改IP地址步驟6:slave2節(jié)點(diǎn)中IP配置信息虛擬機(jī)集群環(huán)境配置-修改IP地址虛擬機(jī)集群環(huán)境配置-修改IP地址虛擬機(jī)集群環(huán)境配置-修改IP地址本章小結(jié)本節(jié)一起修改了CentOS7操作系統(tǒng)的IP地址,為我們后續(xù)搭建Hadoop分布式平臺打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——修改主機(jī)名和配置主機(jī)IP映射目錄content01修改主機(jī)名02配置主機(jī)映射修改主機(jī)名步驟1修改master節(jié)點(diǎn)主機(jī)名編輯/etc/hostname/etc/hostname原有內(nèi)容/etc/hostname修改后內(nèi)容重啟命令重啟之后修改主機(jī)名步驟2:修改slave1節(jié)點(diǎn)主機(jī)名編輯/etc/hostname/etc/hostname原有內(nèi)容/etc/hostname修改后內(nèi)容重啟命令重啟之后修改主機(jī)名步驟2:修改slave2節(jié)點(diǎn)主機(jī)名編輯/etc/hostname/etc/hostname原有內(nèi)容/etc/hostname修改后內(nèi)容重啟命令重啟之后配置主機(jī)IP映射步驟1編輯/etc/hostshosts文件中的內(nèi)容配置主機(jī)IP映射步驟2復(fù)制hosts到另外兩個(gè)節(jié)點(diǎn)查看另外兩個(gè)節(jié)點(diǎn)hosts文件中內(nèi)容配置主機(jī)IP映射步驟3重啟命令使用主機(jī)名驗(yàn)證3個(gè)節(jié)點(diǎn)配置主機(jī)IP映射步驟4Windows系統(tǒng)下主機(jī)IP映射C:\Windows\System32\drivers\etc配置主機(jī)IP映射步驟5XShell使用主機(jī)名本章小結(jié)本節(jié)一起修改主機(jī)名和配置主機(jī)IP映射,為我們后續(xù)搭建Hadoop分布式平臺打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——虛擬機(jī)集群環(huán)境配置-免密登錄目錄content01免密登錄免密登錄大數(shù)據(jù)集群的節(jié)點(diǎn)之間需要頻繁通信,但Linux系統(tǒng)在相互通信中需要驗(yàn)證用戶身份。為了使Hadoop各節(jié)點(diǎn)之間能夠免密相互訪問,相互信任,無阻礙通信,可以為各節(jié)點(diǎn)配置SSH免密登錄。配置免密后,節(jié)點(diǎn)之間訪問時(shí)不需要輸密碼,方便快捷。虛擬機(jī)集群環(huán)境配置-免密登錄master節(jié)點(diǎn)生成秘鑰步驟1:直接按“回車鍵”即可.ssh目錄中的內(nèi)容虛擬機(jī)集群環(huán)境配置-免密登錄slave1節(jié)點(diǎn)生成秘鑰步驟1:直接按“回車鍵”即可.ssh目錄中的內(nèi)容虛擬機(jī)集群環(huán)境配置-免密登錄slave2節(jié)點(diǎn)生成秘鑰步驟1:直接按“回車鍵”即可.ssh目錄中的內(nèi)容Hadoop集群搭建步驟—JDK安裝步驟2:重命名命令Hadoop集群搭建步驟—JDK安裝步驟2:重命名命令Hadoop集群搭建步驟—JDK安裝步驟2:重命名命令Hadoop集群搭建步驟—JDK安裝步驟4:免密登錄最終效果Hadoop集群搭建步驟—JDK安裝步驟6:查看JDK版本信息Hadoop集群搭建步驟—配置slave1和slave2拷貝JDK到slave1和slave2兩個(gè)節(jié)點(diǎn)拷貝profile文件到slave1和slave2兩個(gè)節(jié)點(diǎn)Hadoop集群搭建步驟—JDK安裝使profile文件生效,并查看slave1和slave2上JDK版本信息本章小結(jié)本節(jié)內(nèi)容主要介紹了Linux操作系統(tǒng)下JDK的安裝,包括JDK的安裝和環(huán)境變量的配置。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——JDK安裝目錄content01JDK安裝Hadoop集群搭建步驟—JDK安裝Xshell中的文件傳輸拖到文件傳輸窗口查看JDK安裝包步驟1:Hadoop集群搭建步驟—JDK安裝解壓JDK安裝包命令步驟2:步驟3:重命名命令Hadoop集群搭建步驟—JDK安裝JDK環(huán)境變量步驟4:編輯profile文件步驟5:使profile文件生效Hadoop集群搭建步驟—JDK安裝步驟6:查看JDK版本信息Hadoop集群搭建步驟—配置slave1和slave2拷貝JDK到slave1和slave2兩個(gè)節(jié)點(diǎn)拷貝profile文件到slave1和slave2兩個(gè)節(jié)點(diǎn)Hadoop集群搭建步驟—JDK安裝使profile文件生效,并查看slave1和slave2上JDK版本信息本章小結(jié)本節(jié)內(nèi)容主要介紹了Linux操作系統(tǒng)下JDK的安裝,包括JDK的安裝和環(huán)境變量的配置。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——Hadoop分布式集群搭建目錄content0201Hadoop集群部署方式Hadoop集群搭建Hadoop集群的部署方式單機(jī)模式:在該模式下,無須運(yùn)行任何守護(hù)進(jìn)程,所有的程序都在單個(gè)JVM上執(zhí)行。偽分布式模式:Hadoop程序的守護(hù)進(jìn)程運(yùn)行在一臺主機(jī)節(jié)點(diǎn)上,通常使用偽分布式模式來調(diào)試Hadoop分布式程序的代碼。全分布式模式:Hadoop的守護(hù)進(jìn)程分別運(yùn)行在由多個(gè)主機(jī)搭建的集群上,不同節(jié)點(diǎn)擔(dān)任不同的角色,在實(shí)際工作應(yīng)用開發(fā)中,通常使用該模式構(gòu)建企業(yè)級Hadoop系統(tǒng)。Hadoop分布式集群部署規(guī)劃Hadoop分布式集群部署規(guī)劃如下所示:名稱節(jié)點(diǎn)在matser上,數(shù)據(jù)節(jié)點(diǎn)在master、slave1和slave2節(jié)點(diǎn)上,第二名稱節(jié)點(diǎn)與名稱節(jié)點(diǎn)要部署在不同的節(jié)點(diǎn)上。masterslave1slave2HDFSNameNodeDataNodeSecondaryNameNodeDataNodeDataNodeHadoop集群搭建步驟—Hadoop安裝Xshell中的文件傳輸拖到文件傳輸窗口查看Hadoop安裝包步驟1Hadoop集群搭建步驟—Hadoop安裝解壓Hadoop安裝包命令Hadoop系統(tǒng)環(huán)境變量步驟2步驟3重命名命令步驟4編輯profile文件步驟5使profile文件生效Hadoop安裝路徑Hadoop集群搭建步驟—Hadoop安裝步驟6查看Hadoop版本信息Hadoop目錄下的內(nèi)容Hadoop集群搭建步驟—修改配置文件步驟1Hadoop的配置文件hadoop-env.sh配置文件內(nèi)容Hadoop集群搭建步驟—修改配置文件步驟2core-site.xml配置文件內(nèi)容Hadoop集群搭建步驟—修改配置文件步驟3hdfs-site.xml配置文件內(nèi)容HDFS文件系統(tǒng)的元信息保存位置HDFS文件系統(tǒng)的數(shù)據(jù)保存位置第二名稱及誒點(diǎn)http服務(wù)器地址和端口Hadoop集群搭建步驟—修改配置文件步驟3hdfs-site.xml配置文件內(nèi)容HDFS文件系統(tǒng)的元信息保存位置HDFS文件系統(tǒng)的數(shù)據(jù)保存位置第二名稱及誒點(diǎn)http服務(wù)器地址和端口Hadoop集群搭建步驟—修改配置文件步驟4slaves配置文件內(nèi)容Hadoop集群搭建步驟—配置slave1和slave2拷貝Hadoop到slave1和slave2兩個(gè)節(jié)點(diǎn)拷貝profile文件到slave1和slave2兩個(gè)節(jié)點(diǎn)Hadoop集群搭建步驟—配置slave1和slave2使profile文件生效,并查看Hadoop版本信息本章小結(jié)本節(jié)我們介紹了Hadoop集群部署方式和Hadoop集群搭建,相信大家對Hadoop分布式集群搭建有了全新的認(rèn)識,為我們后續(xù)學(xué)習(xí)啟動(dòng)Hadoop集群打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop官方配置文檔:/docs/stable/Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——Hadoop分布式集群啟動(dòng)目錄content01Hadoop集群啟動(dòng)Hadoop集群啟動(dòng)步驟—格式化名稱節(jié)點(diǎn)格式化成功界面步驟1:格式化NameNode節(jié)點(diǎn)命令Hadoop集群搭建步驟—Hadoop安裝生成的name目錄步驟2:步驟3:master上執(zhí)行啟動(dòng)集群命令生成的data目錄啟動(dòng)namenode節(jié)點(diǎn)啟動(dòng)datanode節(jié)點(diǎn)Hadoop集群搭建步驟—查看節(jié)點(diǎn)步驟4master的節(jié)點(diǎn)salve1的節(jié)點(diǎn)salve2的節(jié)點(diǎn)Hadoop集群搭建步驟—關(guān)閉防火墻步驟5日志信息關(guān)閉防火墻Hadoop集群搭建步驟—Web界面Hadoop集群搭建步驟—Web界面步驟2:Hadoop集群搭建步驟—Web界面core-site.xml配置文件內(nèi)容課外拓展在集群中如何動(dòng)態(tài)增加或者刪除節(jié)點(diǎn)?關(guān)閉集群,把需要增加節(jié)點(diǎn)的主機(jī)名添加到slaves文件中,或者刪除slaves文件中需要?jiǎng)h除的主機(jī)名稱,然后將slaves配置文件分發(fā)到集群中的其它節(jié)點(diǎn),重啟集群即可實(shí)現(xiàn)節(jié)點(diǎn)的動(dòng)態(tài)增加或者刪除。本章小結(jié)本節(jié)一起啟動(dòng)了Hadoop分布式集群,相信大家對Hadoop分布式集群有了全新的認(rèn)識,為我們后續(xù)學(xué)習(xí)Hadoop打下了堅(jiān)實(shí)的基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFS簡介目錄content0201HDFS簡介HDFS實(shí)現(xiàn)目標(biāo)和自身局限性HDFS簡介HDFS是Hadoop兩大核心組件之一。分布式存儲:HDFS分布式處理:MapReduceHDFS就是為了解決海量數(shù)據(jù)的分布式存儲問題。HadoopDistributedFileSystemHDFS簡介--集群在大數(shù)據(jù)時(shí)代,數(shù)據(jù)量非常大,單個(gè)節(jié)點(diǎn)一臺計(jì)算機(jī)是無論如何完成不了海量數(shù)據(jù)的存儲,我們需要借助計(jì)算機(jī)集群存儲海量數(shù)據(jù)。單機(jī)無法存儲集群分布式存儲HDFS簡介--集群每個(gè)豎排代表一個(gè)機(jī)架,每個(gè)機(jī)架上擺放了好多機(jī)器,每個(gè)機(jī)器稱為一個(gè)節(jié)點(diǎn),在企業(yè)一個(gè)機(jī)架可以擺放30-40個(gè)節(jié)點(diǎn),機(jī)架和機(jī)架之間是通過光纖交換機(jī)來完成彼此之間的網(wǎng)絡(luò)互聯(lián)。在這個(gè)集群中,HDFS把整個(gè)文件分布的存儲在這些機(jī)器里。HDFS簡介分布式文件系統(tǒng)解決了大數(shù)據(jù)存儲問題,是橫跨在多臺計(jì)算機(jī)上的存儲系統(tǒng);分布式文件系統(tǒng)在大數(shù)據(jù)時(shí)代有著廣泛的應(yīng)用前景,為存儲和處理超大規(guī)模數(shù)據(jù)提供擴(kuò)展能力;分布式文件系統(tǒng)適用于一次寫入,多次讀出的場景,且不支持文件的修改,適合用來做數(shù)據(jù)分析。HDFS的實(shí)現(xiàn)目標(biāo)成本低流式數(shù)據(jù)訪問適合處理大數(shù)據(jù)高容錯(cuò)性大文件存儲成本低HDFS集群可構(gòu)建在廉價(jià)計(jì)算機(jī)上,通過多副本機(jī)制,提高可靠性。個(gè)人計(jì)算機(jī)搭建大數(shù)據(jù)集群HDFS的實(shí)現(xiàn)目標(biāo)適合流式數(shù)據(jù)訪問HDFS的數(shù)據(jù)處理規(guī)模比較大,應(yīng)用程序一次需要訪問大量的數(shù)據(jù),HDFS的設(shè)計(jì)目標(biāo)就是全部數(shù)據(jù)全部讀寫,它不適合訪問整個(gè)文件中的一個(gè)子集。HDFS是為滿足海量數(shù)據(jù)的批量處理而設(shè)計(jì)的。HDFS的實(shí)現(xiàn)目標(biāo)適合處理大數(shù)據(jù)HDFS可橫向擴(kuò)展,其存儲的數(shù)據(jù)規(guī)模:能夠處理數(shù)據(jù)規(guī)模達(dá)到PB級別的數(shù)據(jù);文件規(guī)模:能夠處理百萬規(guī)模以上的文件數(shù)量;節(jié)點(diǎn)規(guī)模:能夠處理10K節(jié)點(diǎn)的規(guī)模。HDFS的實(shí)現(xiàn)目標(biāo)高容錯(cuò)性數(shù)據(jù)保存多個(gè)副本,副本丟失后自動(dòng)恢復(fù);構(gòu)建在廉價(jià)的計(jì)算機(jī)上,容易實(shí)現(xiàn)線性擴(kuò)展,當(dāng)集群增加新節(jié)點(diǎn)之后,名稱節(jié)點(diǎn)(NameNode)也可以感知,進(jìn)行負(fù)載均衡,將數(shù)據(jù)分發(fā)和備份數(shù)據(jù)均衡到新的節(jié)點(diǎn)上。HDFS的實(shí)現(xiàn)目標(biāo)適合大文件存儲HDFS采用數(shù)據(jù)塊的方式存儲數(shù)據(jù),將數(shù)據(jù)物理切分成多個(gè)小的數(shù)據(jù)塊;當(dāng)用戶讀取時(shí),重新將多個(gè)小數(shù)據(jù)塊拼接起來。HDFS的實(shí)現(xiàn)目標(biāo)0203不適合低延遲數(shù)據(jù)訪問無法高效存儲大量小文件不支持多用戶寫入及文件隨機(jī)修改01HDFS自身的局限性不適合低延遲數(shù)據(jù)訪問HDFS不適合低延遲數(shù)據(jù)訪問,比如毫秒級以內(nèi)讀取數(shù)據(jù)或者存儲數(shù)據(jù),HDFS是很難做到的。HDFS自身的局限性無法高效的對大量小文件進(jìn)行存儲文件存儲會占用名稱節(jié)點(diǎn)的內(nèi)存來存儲文件目錄和塊信息,存儲大量小文件就會耗費(fèi)大量的內(nèi)存,名稱節(jié)點(diǎn)的內(nèi)存總是有限的。HDFS自身的局限性HDFS自身的局限性HDFS不支持多用戶寫入和文件隨機(jī)修改HDFS目前不支持并發(fā)多用戶的寫操作和文件的隨機(jī)修改,寫操作只能在文件末尾追加數(shù)據(jù),一個(gè)文件只能有一個(gè)寫,不允許多個(gè)線程同時(shí)寫。本章小結(jié)本節(jié)我們了解到HDFS是hadoop兼容最好的標(biāo)準(zhǔn)級分布式文件系統(tǒng),主要是對數(shù)據(jù)進(jìn)行分布式儲存和讀取,探討了HDFS的實(shí)現(xiàn)目標(biāo)和自身的局限性。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFS體系結(jié)構(gòu)目錄content02數(shù)據(jù)節(jié)點(diǎn)塊0405第二名稱節(jié)點(diǎn)01HDFS體系結(jié)構(gòu)03名稱節(jié)點(diǎn)HDFS體系結(jié)構(gòu)HDFS的核心組件是名稱節(jié)點(diǎn)(NameNode)和數(shù)據(jù)節(jié)點(diǎn)(DataNode)。它是一個(gè)主/從(master/slave)架構(gòu)的系統(tǒng),即一個(gè)HDFS集群由一個(gè)NameNode和若干DataNode組成。其中,名稱節(jié)點(diǎn)為主節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)為從節(jié)點(diǎn)。HDFS的體系結(jié)構(gòu)塊的概述Hadoop2.X版本默認(rèn)的塊大小為128M。塊是HDFS中的最小存儲單位,并且可以自定義大小。塊按實(shí)際大小存儲。拆分出來的塊會有它相應(yīng)的副本。塊的優(yōu)勢可以存儲任意大小的數(shù)據(jù)文件,不用再受單個(gè)節(jié)點(diǎn)磁盤容量大小的限制。簡化了文件存儲子系統(tǒng)的設(shè)計(jì),將元數(shù)據(jù)信息和文件數(shù)據(jù)信息分開存儲。有利于實(shí)現(xiàn)負(fù)載均衡并提高集群可靠性。有利于實(shí)現(xiàn)分布式文件系統(tǒng)的容錯(cuò)性。名稱節(jié)點(diǎn)概述名稱節(jié)點(diǎn)是整個(gè)HDFS集群的管家,名稱節(jié)點(diǎn)上存儲的元數(shù)據(jù)信息包括:數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)的映射信息。每個(gè)文件由哪些數(shù)據(jù)塊組成。文件目錄的所有者及其權(quán)限。文件名、目錄名及其層級關(guān)系。名稱節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)元數(shù)據(jù)信息可被持久化到本地磁盤的兩個(gè)文件中,分別是元數(shù)據(jù)鏡像文件(fsimage)和事務(wù)日志文件(edits)。fsimage存儲著文件系統(tǒng)的所有命名空間信息。edits存儲著HDFS數(shù)據(jù)的事務(wù)操作日志。名稱節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)所謂的持久化,就是指把數(shù)據(jù)保存到可永久保存存儲設(shè)備(如磁盤)中。數(shù)據(jù)節(jié)點(diǎn)概述每個(gè)數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)會被保存在各自節(jié)點(diǎn)的本地Linux文件系統(tǒng)中。負(fù)責(zé)為客戶端或名稱節(jié)點(diǎn)提供數(shù)據(jù)的檢索和讀寫服務(wù),并通過“心跳”定期向名稱節(jié)點(diǎn)發(fā)送自己的塊列表信息。存儲著HDFS文件的真實(shí)數(shù)據(jù),負(fù)責(zé)數(shù)據(jù)的存儲和讀取第二名稱節(jié)點(diǎn)因?yàn)槭聞?wù)日志文件(edits)開始比較小,但隨著對數(shù)據(jù)的不斷修改,事務(wù)日志文件(edits)會不斷增大,大到一定程度的時(shí)候,又會影響整個(gè)系統(tǒng)的功能,由此引入第二名稱節(jié)點(diǎn)。1.對元數(shù)據(jù)鏡像文件(fsimage)和事務(wù)日志文件(edits)定期合并,縮短名稱節(jié)點(diǎn)(NameNode)的重啟時(shí)間,提高系統(tǒng)性能。2.是名稱節(jié)點(diǎn)的冷備份,因?yàn)槊Q節(jié)點(diǎn)有可能發(fā)生故障。為什么又引入第二名稱節(jié)點(diǎn)?第二名稱節(jié)點(diǎn)的功能:本節(jié)小結(jié)負(fù)責(zé)管理整個(gè)文件系統(tǒng)元數(shù)據(jù)。名稱節(jié)點(diǎn)負(fù)責(zé)管理具體文件數(shù)據(jù)塊存儲。數(shù)據(jù)節(jié)點(diǎn)協(xié)助名稱節(jié)點(diǎn)進(jìn)行元數(shù)據(jù)的備份。第二名稱節(jié)點(diǎn)Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFS運(yùn)行機(jī)制05目錄content02高可用機(jī)制心跳機(jī)制06安全模式01副本機(jī)制03副本放置策略07垃圾回收機(jī)制聯(lián)邦機(jī)制04副本機(jī)制底層缺陷冗余數(shù)據(jù)保存不斷地出故障為了保證集群的容錯(cuò)性和可用性,HDFS采用了數(shù)據(jù)冗余存儲方式,即一個(gè)數(shù)據(jù)可以保存多個(gè)副本。副本機(jī)制01020304冗余保存副本數(shù)也可以進(jìn)行個(gè)性化設(shè)置默認(rèn)冗余副本數(shù):3010203優(yōu)點(diǎn)01加快數(shù)據(jù)傳輸速度02很容易檢查數(shù)據(jù)錯(cuò)誤03保證數(shù)據(jù)可靠性心跳機(jī)制名稱節(jié)點(diǎn)數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)后,會主動(dòng)連接名稱節(jié)點(diǎn),并在一定間隔(默認(rèn)為3s)主動(dòng)向名稱節(jié)點(diǎn)發(fā)送一個(gè)“心跳”,報(bào)告自己的狀態(tài)信息。心跳心跳名稱節(jié)點(diǎn)通過這個(gè)“心跳”向數(shù)據(jù)節(jié)點(diǎn)下達(dá)命令是一種形象化描述,指的是不間斷地發(fā)送一個(gè)自定義結(jié)構(gòu)體(“心跳包”或“心跳幀”)來證明自己節(jié)點(diǎn)的有效性。心跳?心跳機(jī)制出現(xiàn)故障名稱節(jié)點(diǎn)名稱節(jié)點(diǎn)長時(shí)間未收到某個(gè)數(shù)據(jù)節(jié)點(diǎn)的“心跳”;名稱節(jié)點(diǎn)名稱節(jié)點(diǎn)判定該數(shù)據(jù)節(jié)點(diǎn)為宕機(jī);備份副本名稱節(jié)點(diǎn)檢查該數(shù)據(jù)節(jié)點(diǎn)上的塊副本數(shù)據(jù)并備份到其他的數(shù)據(jù)節(jié)點(diǎn)上。硬件故障或網(wǎng)絡(luò)問題;副本怎么恢復(fù)呢?HDFS是如何探測副本出現(xiàn)故障?心跳機(jī)制第一副本放到上傳文件的節(jié)點(diǎn)(機(jī)器)上第二副本放到和第一副本不同機(jī)架的任意節(jié)點(diǎn)上第三副本放到和第一副本相同機(jī)架的任意節(jié)點(diǎn)上副本放置策略這么多機(jī)器這么多的塊,副本是怎么存放的呢?如果還有副本,可以放到其它節(jié)點(diǎn)上,全部隨機(jī)。副本放置策略01第一副本放到上傳文件的節(jié)點(diǎn)上,可以較快地讀取,保證數(shù)據(jù)較好的本地性;02第二個(gè)副本及更多的block副本放置在其他機(jī)架,當(dāng)整個(gè)結(jié)點(diǎn)失效時(shí),HDFS將自動(dòng)通過遠(yuǎn)端機(jī)架上的數(shù)據(jù)將副本恢復(fù)到標(biāo)準(zhǔn)水平。03Hadoop的副本放置策略在可靠性和帶寬中做了一個(gè)很好的平衡。高可用(HA)機(jī)制Hadoop1.XHadoop2.XHDFS框架只有一個(gè)名稱節(jié)點(diǎn)HDFS框架主備兩個(gè)名稱節(jié)點(diǎn)單點(diǎn)故障雙NameNode架構(gòu)HA機(jī)制高可用(HA)機(jī)制ActiveNameNodeStandbyNameNode負(fù)責(zé)HDFS的所有操作ZooKeeper確保主從名稱節(jié)點(diǎn)的狀態(tài)一致性主名稱節(jié)點(diǎn)的熱備份互為備份聯(lián)邦機(jī)制TWITTERYOUTUBESKYPEFACEBOOK在聯(lián)邦機(jī)制中,每個(gè)名稱節(jié)點(diǎn)分別管理文件系統(tǒng)命名空間的一部分;命名空間卷存放元數(shù)據(jù)和數(shù)據(jù)塊的塊池。
在Hadoop1.0,HDFS只有一個(gè)NameNode,計(jì)算機(jī)的內(nèi)存就成了NameNode的瓶頸;
各命名空間卷是相互獨(dú)立的,互不影響且互不通信
在Hadoop2.x引入了HDFS聯(lián)邦機(jī)制,即通過橫向擴(kuò)展的方式增加NameNode的數(shù)量;
1234安全模式只讀模式,不能對命名空間進(jìn)行修改,也不能創(chuàng)建、復(fù)制、追加和刪除數(shù)據(jù);在HDFS啟動(dòng)時(shí),首先會進(jìn)入安全模式,當(dāng)達(dá)到規(guī)定的要求時(shí),會退出安全模式;當(dāng)集群中某些數(shù)據(jù)節(jié)點(diǎn)出現(xiàn)故障,或者因?yàn)槟承┰蛟斐晌募到y(tǒng)處于不穩(wěn)定狀態(tài)時(shí),NameNode會自動(dòng)進(jìn)入安全模式。HDFS的一種保護(hù)模式,保證數(shù)據(jù)塊的安全性;該模式下,可以查看目錄及文件、下載文件等操作。垃圾回收機(jī)制當(dāng)用戶或應(yīng)用程序刪除某個(gè)文件時(shí),文件并不會立即從HDFS中刪除,而是被移到了一個(gè)類似回收站的地方。當(dāng)文件的刪除時(shí)間超過一定期限,名稱節(jié)點(diǎn)就會自動(dòng)將該文件從命名空間中刪除,該文件相關(guān)的數(shù)據(jù)塊即被釋放。在HDFS集群中,如果一個(gè)文件被刪除,那么與該文件相關(guān)的數(shù)據(jù)塊自然也就成了垃圾。本節(jié)小結(jié)本節(jié)介紹了HDFS的副本機(jī)制、心跳機(jī)制、副本放置策略、高可用機(jī)制等,大家進(jìn)一步了解了HDFS,為后續(xù)HDFS操作奠定基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFS命令行操作目錄content0201HDFS命令簡介HDFS常用命令HDFS命令簡介HDFS分布式文件系統(tǒng)中的基本操作與其他文件系統(tǒng)類似,包括目錄創(chuàng)建、目錄刪除、查看子目錄、文件創(chuàng)建、文件剪切、文件復(fù)制、文件重命名、文件刪除、文件上傳、文件下載等操作。HDFS的文件操作命令包括hadoopfs、hadoopdfs和hdfsdfs三種。fsdfs文件系統(tǒng)FileSystem分布式文件系統(tǒng)DistributedFileSystem分布式環(huán)境下,fs與dfs無區(qū)別(2)本地環(huán)境中,fs就是本地文件,dfs就不能用了(3)fs>dfs:fs的使用范圍更大HDFS命令簡介hadoopfs命令是Hadoop通用文件系統(tǒng)的命令接口,可以操作HDFS文件系統(tǒng),也可以操作其他支持的文件系統(tǒng)如本地文件系統(tǒng)、S3文件系統(tǒng)等。hdfsdfs命令是HDFS文件系統(tǒng)特定的命令接口,只可以操作HDFS文件系統(tǒng),不支持其他文件系統(tǒng)。HDFS文件系統(tǒng)建議使用hdfsdfs命令;通用文件系統(tǒng)使用hadoopfs命令。HDFS命令簡介HDFS命令:文件或目錄一定使用絕對路徑,“/”01本地Linux:文件或目錄可以是相對路徑也可以是絕對路徑02命令包括:目錄命令、文件命令、文件上傳下載等
03HDFS命令簡介HDFS常用命令操作1.-help:查看HDFS文件系統(tǒng)支持的命令HDFS常用命令操作2.-ls:查看HDFS文件系統(tǒng)中根目錄下的文件和目錄HDFS常用命令操作3.-mkdir:在HDFS文件系統(tǒng)中創(chuàng)建目錄HDFS常用命令操作創(chuàng)建級聯(lián)目錄命令,需要使用參數(shù)-pHDFS常用命令操作4.-put:將本地Linux操作系統(tǒng)中的文件上傳到HDFS上hadoopfs-put./jdk.tar.gz/bigdata如果HDFS上已經(jīng)存在要上傳的文件,想覆蓋掉源文件,則需要使用參數(shù)-f。HDFS常用命令操作5.-rm:刪除HDFS文件系統(tǒng)上的文件或目錄hadoopfs-rm/jdk-8u211-linux-x64.tar.gztHDFS常用命令操作-rm:刪除目錄,則需要加上參數(shù)“-r”hadoopfs-rm-r/bigdata/bigdata1HDFS常用命令操作6.-get:將HDFS上的文件下載到本地(Linux操作系統(tǒng))HDFS常用命令操作7.-cat:查看HDFS文件系統(tǒng)上的文件內(nèi)容hadoopfs-cat/test.txt查看HDFS文件系統(tǒng)上的文件內(nèi)容的前3行HDFS常用命令操作8.-ls:查看HDFS文件系統(tǒng)中根目錄下的文件和目錄HDFS常用命令操作9.-cp:復(fù)制HDFS文件系統(tǒng)上的文件HDFS常用命令操作10.-mv:移動(dòng)HDFS文件系統(tǒng)上的文件HDFS常用命令操作使用-mv也可以實(shí)現(xiàn)重命名功能hadoopfs-mv/bigdata/test.txt/bigdata/bigdata1/test2.txt本章小結(jié)本節(jié)介紹了使用HDFS命令行進(jìn)行文件創(chuàng)建、文件下載、文件重命名、文件刪除、目錄創(chuàng)建等操作,相信大家對HDFS命令有了一定理解,為我們后續(xù)學(xué)校HDFSJavaAPI打下了基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFS命令行操作目錄content0201Hadoop集群部署方式Hadoop集群搭建HDFS文件操作命令HDFS的文件操作命令包括:hadoopfs使用范圍最廣,可以操作各種文件系統(tǒng),如本地文件、HDFS文件、HFTP文件、S3文件等。hadoopdfs針對HDFS文件系統(tǒng)的操作命令。hdfsdfs與hadoopdfs類似,針對HDFS文件系統(tǒng)的操作。Hadoop集群的部署方式HDFS分布式文件系統(tǒng)中的基本操作與其他文件系統(tǒng)類似,包括文件創(chuàng)建、文件下載、文件重命名、文件刪除、目錄創(chuàng)建等操作。HDFS中的文件或者目錄一定使用絕對路徑,HDFS路徑從“/”開始。HDFS常用命令操作創(chuàng)建目錄命令HDFS常用命令操作創(chuàng)建級聯(lián)目錄命令HDFS常用命令操作兩個(gè)命令的區(qū)別hadoopfs-mkdir-p./bigdatahadoopfs-mkdir-p/bigdataHDFS常用命令操作上傳文件到HDFS上課外擴(kuò)展傳到HDFS上的數(shù)據(jù),最終在哪里?HDFS常用命令操作刪除HDFS上的文件HDFS常用命令操作下載HDFS上的文件HDFS常用命令操作移動(dòng)文件HDFS常用命令操作查看HDFS文件系統(tǒng)上的文件內(nèi)容的前3行查看HDFS文件系統(tǒng)中根目錄下的文件和目錄HDFS常用命令操作復(fù)制文件HDFS常用命令操作復(fù)制文件HDFS常用命令操作刪除HDFS上文件或目錄本章小結(jié)本節(jié)介紹了使用HDFS命令行進(jìn)行文件創(chuàng)建、文件下載、文件重命名、文件刪除、目錄創(chuàng)建等操作,相信大家對HDFS命令有了一定理解,為我們后續(xù)學(xué)校HDFSJavaAPI打下了基礎(chǔ)。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——HDFSAPI操作05目錄content02刪除文件引入依賴06移動(dòng)或重命名文件01搭建客戶端環(huán)境03上傳文件下載文件04搭建HDFS客戶端環(huán)境步驟1:將Windows操作系統(tǒng)下的Hadoop壓縮包解壓到E盤,文件夾名為hadoop。步驟2:配置HADOOP_HOME環(huán)境變量,如下所示:搭建HDFS客戶端環(huán)境步驟3:配置Path環(huán)境變量,如下所示:搭建HDFS客戶端環(huán)境步驟4:創(chuàng)建一個(gè)Maven工程,創(chuàng)建Maven工程過程如下所示,輸入所建Maven工程的名稱。搭建HDFS客戶端環(huán)境HDFSAPI準(zhǔn)備環(huán)境完成之后,編寫Java代碼,實(shí)現(xiàn)HDFS功能。引入依賴在編寫代碼之前,需要引入開發(fā)HDFSAPI客戶端相應(yīng)的依賴,如下所示:<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.9.2</version></dependency></dependencies>HDFS文件上傳將Windows系統(tǒng)上本地E盤下面report.txt文件上傳到HDFS集群,源代碼如下所示:該參數(shù)為:副本數(shù)和文件塊大?。?默認(rèn)副本數(shù)量為3,塊大小為128M)FileSystem.get構(gòu)造一個(gè)訪問HDFS系統(tǒng)的客戶端對象:第一個(gè)參數(shù)為URI:名稱節(jié)點(diǎn)所在的節(jié)點(diǎn);第二個(gè)參數(shù)為客戶端特別指定的:例如文件備份數(shù)量和塊大小等;第三個(gè)參數(shù)為客戶端的身份,該參數(shù)值為用戶名。copyFromLocalFile實(shí)現(xiàn)上傳一個(gè)文件到HDFS上,在該方法中指定待上傳的文件及其位置,以及將要上傳至HDFS上的位置。HDFS文件上傳參數(shù)既可以在代碼中設(shè)置,也可以在Hadoop集群中設(shè)置;那么參數(shù)優(yōu)先級是怎么樣的呢?優(yōu)先級排序:客戶端代碼>ClassPath>xxx-site.xml>xxx-default.xmlHDFS文件上傳將HDFS集群上的report.txt文件下載到Windows系統(tǒng)的E盤下面,源代碼編寫如下所示:HDFS下載文件HDFS下載文件連接HDFS的源碼與文件上傳的源碼一致;copyToLocalFile實(shí)現(xiàn)了將HDFS上的文件下載到本地Windows系統(tǒng):第一個(gè)參數(shù)指是否將原文件刪除;第二參數(shù)指要下載的文件路徑;第三個(gè)參數(shù)指將文件下載到的路徑;最后一個(gè)參數(shù)是否開啟文件校驗(yàn)。刪除HDFS集群上的文件,源代碼編寫如下所示:HDFS文件刪除delete:刪除HDFS文件系統(tǒng)上指定文件的內(nèi)容:第一個(gè)參數(shù)表示要?jiǎng)h除的文件名;第二參數(shù)表示是否遞歸刪除。將HDFS集群上文件名進(jìn)行更改和移動(dòng),源代碼編寫如下所示:HDFS文件名更改和移動(dòng)rename:文件移動(dòng)和重命名:第一個(gè)參數(shù)為要移動(dòng)或者重命名的文件;第二個(gè)參數(shù)為移動(dòng)后或者重命名后的文件。本節(jié)介紹了HDFSAPI的編寫,包括Windows本地文件上傳,將HDFS上文件下載到Windows本地、刪除HDFS上的文件、以及移動(dòng)或者重命名文件,相信大家對HDFSAPI編寫有了全新的認(rèn)識,為我們后續(xù)學(xué)習(xí)大數(shù)據(jù)知識打下了堅(jiān)實(shí)基礎(chǔ)。本節(jié)小結(jié)Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——認(rèn)識MapReduce目錄content02MapReduce設(shè)計(jì)思想01MapReduce簡介03MapReduce特點(diǎn)MapReduce簡介在大數(shù)據(jù)時(shí)代,數(shù)據(jù)量非常大,不能把數(shù)據(jù)放在一個(gè)單機(jī)上運(yùn)行,而是借助一個(gè)集群通過多臺機(jī)器同時(shí)并行處理大規(guī)模數(shù)據(jù)集,幫助我們獲得海量的計(jì)算能力;單機(jī)無法運(yùn)行集群多臺機(jī)器并行處理MapReduce簡介開源實(shí)現(xiàn)谷歌公司最早提出分布式并行編程MapReduce,Hadoop平臺對它進(jìn)行了開源實(shí)現(xiàn),成為Hadoop平臺兩個(gè)核心組件之一。MapReduce簡介任何一個(gè)節(jié)點(diǎn)出現(xiàn)問題不會影響其他節(jié)點(diǎn)正常運(yùn)行,又設(shè)置了冗余和容錯(cuò)機(jī)制。整個(gè)集群可以隨意增加減少計(jì)算節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)只需要很廉價(jià)的PC機(jī)。只需要告訴Hadoop“做什么?”,整個(gè)系統(tǒng)框架自動(dòng)實(shí)現(xiàn)分布式部署。Hadoop平臺對Google上的MapReduce進(jìn)行了很多相關(guān)的優(yōu)化處理:集群架構(gòu)和容錯(cuò)性硬件價(jià)格及擴(kuò)展性編程和學(xué)習(xí)難度MapReduce設(shè)計(jì)思想Reduce函數(shù)Map函數(shù)屏蔽所有編程細(xì)節(jié),把復(fù)雜的并行編程過程高度抽象為:MapReduce名稱的由來:MapReduce整個(gè)框架中核心設(shè)計(jì)只有這兩個(gè)函數(shù),底層的細(xì)節(jié)都被隱藏掉了,所以它極大的降低了分布式并行編程的難度,這是MapReduce的突出優(yōu)點(diǎn)。MapReduce設(shè)計(jì)思想策略理念函數(shù)兩個(gè)函數(shù)一個(gè)策略一個(gè)理念MapReduce的設(shè)計(jì)思想總結(jié)有:一個(gè)策略,一個(gè)理念,兩個(gè)函數(shù)。MapReduce設(shè)計(jì)思想一個(gè)策略:“分而治之”第一步:MapReduce采用分而治之;第二步:把非常龐大的數(shù)據(jù)集,切分成非常多的獨(dú)立小分片;第三步:然后為每一個(gè)分片單獨(dú)地啟動(dòng)一個(gè)Map任務(wù);最后:最終通過多個(gè)Map任務(wù),并行地在多個(gè)機(jī)器上去處理。MapReduce設(shè)計(jì)思想一個(gè)理念:”計(jì)算向數(shù)據(jù)靠攏”機(jī)器:數(shù)據(jù)機(jī)器:數(shù)據(jù)機(jī)器:數(shù)據(jù)機(jī)器:計(jì)算在大數(shù)據(jù)計(jì)算設(shè)計(jì)時(shí),采用“計(jì)算向數(shù)據(jù)靠攏”,移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更加經(jīng)濟(jì),大大減少了整個(gè)網(wǎng)絡(luò)中數(shù)據(jù)傳輸開銷,大大提升整個(gè)分布式程序的處理性能。機(jī)器:數(shù)據(jù)MapReduce設(shè)計(jì)思想MapReduce把復(fù)雜的并行編程過程高度抽象為Map和Reduce兩個(gè)函數(shù)Map對一組數(shù)據(jù)元素進(jìn)行某種重復(fù)式的處理,提取數(shù)據(jù)的特征。Reduce對Map的中間結(jié)果進(jìn)行某種進(jìn)一步的結(jié)果整理。兩個(gè)函數(shù):Map函數(shù)和Reduce函數(shù)=+MapReduce設(shè)計(jì)思想統(tǒng)一構(gòu)架,隱藏系統(tǒng)層細(xì)節(jié)通過抽象模型和計(jì)算框架把需要“做什么”與“怎么做”分開,為設(shè)計(jì)者提供一個(gè)高層的編程接口和框架。將具體完成并行計(jì)算任務(wù)相關(guān)的諸多系統(tǒng)層細(xì)節(jié)隱藏起來,交給計(jì)算框架去處理。MapReduce優(yōu)點(diǎn)0203易于編程良好的擴(kuò)展性高容錯(cuò)性01只需要告訴Hadoop“做什么?”,整個(gè)系統(tǒng)框架自動(dòng)實(shí)現(xiàn)分布式部署。整個(gè)集群可以隨意增加減少計(jì)算節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)只需要很廉價(jià)的PC機(jī)。任何一個(gè)節(jié)點(diǎn)出現(xiàn)問題不會影響其他節(jié)點(diǎn)正常運(yùn)行,又設(shè)置了冗余和容錯(cuò)機(jī)制。MapReduce不足不擅長實(shí)時(shí)計(jì)算不擅長流式計(jì)算不擅長有向圖計(jì)算性能局限應(yīng)用局限MapReduce不足不擅長流式計(jì)算不擅長有向圖計(jì)算不擅長實(shí)時(shí)計(jì)算MapReduce無法在毫秒或者秒級內(nèi)返回結(jié)果。321流式計(jì)算的輸入數(shù)據(jù)是動(dòng)態(tài)的,而MapReduce的輸入數(shù)據(jù)集是靜態(tài)的,不能動(dòng)態(tài)變化;MapReduce適用于海量數(shù)據(jù)的離線批處理;不適合數(shù)據(jù)事務(wù)處理或單一請求處理。多個(gè)應(yīng)用程序存在依賴關(guān)系,后一個(gè)應(yīng)用程序的輸入為前一個(gè)的輸出。在這種情況下,MapReduce并不是不能做,而是使用后,每個(gè)MapReduce作業(yè)的輸出結(jié)果都會寫入到磁盤,會造成大量的磁盤IO開銷,導(dǎo)致性能非常低。MapReduce不足Map任務(wù)和Reduce任務(wù)存在著嚴(yán)格的依賴關(guān)系,Map任務(wù)的中間結(jié)果存儲在本地磁盤上,Reduce任務(wù)需要從磁盤上獲取Map計(jì)算的中間結(jié)果并將其作為Reduce的輸入,這樣就會產(chǎn)生大量的磁盤IO開銷,使得計(jì)算機(jī)性能降低。性能局限MapReduce不適合一般的Web應(yīng)用,因?yàn)檫@些應(yīng)用只是簡單的數(shù)據(jù)訪問且每次訪問請求所需要的資源非常少,同時(shí)還需要滿足高并發(fā)訪問需求。應(yīng)用局限本節(jié)小結(jié)MapReduce是針對大規(guī)模集群中的分布式文件進(jìn)行并行處理的計(jì)算模型;MapReduce設(shè)計(jì)目標(biāo)就是讓不熟悉分布式并行編程的開發(fā)人員,將自己的程序輕松運(yùn)行在分布式系統(tǒng)上。Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——MapReduce工作流程目錄content02Reduce過程Map過程0405寫入文件01分片和格式化數(shù)據(jù)源03Shuffle過程MapReduce工作流程概述MapReduce編程簡單且功能強(qiáng)大。專門為并行處理大規(guī)模數(shù)據(jù)而設(shè)計(jì)。對于簡單數(shù)據(jù)處理,只需要執(zhí)行Map任務(wù)。對于復(fù)雜任務(wù),根據(jù)實(shí)際的業(yè)務(wù)需求設(shè)置合適的Reduce任務(wù)數(shù)。MapReduce工作流程MapReduce工作流程第一步:分片和格式化數(shù)據(jù)源將存儲在分布式文件系統(tǒng)中數(shù)據(jù)集切分成獨(dú)立的輸入分片。每一個(gè)輸入分片對應(yīng)一個(gè)Map任務(wù)(有多少輸入分片就會存在多少M(fèi)ap任務(wù))。輸入分片是邏輯概念。輸入分片中存儲了一些元數(shù)據(jù)信息。輸入分片處理成<key1,value1>形式的數(shù)據(jù),再傳遞給Map任務(wù)。第二步:Map過程TWITTERSKYPEFACEBOOK經(jīng)過map()函數(shù)處理后,獲得一系列<key2,value2>形式的輸出。Map過程利用map()函數(shù)來處理數(shù)據(jù)。map()函數(shù)中具體的數(shù)據(jù)處理方法由用戶自己定義。map()函數(shù)接收<key1,value1>形式的數(shù)據(jù)輸入。1234YOUTUBE第三步:Shuffle過程
Shuffle過程map()函數(shù)的輸出并不會直接交給Reduce任務(wù),而是需要經(jīng)過分區(qū)、排序、合并、溢寫、歸并等處理,將處理后的數(shù)據(jù)作為Reduce任務(wù)的輸入。這一系列處理過程稱為Shuffle。第三步:Shuffle過程
Map的Shuffle過程1.Map端的Shuffle過程(1)map()函數(shù)的輸出并不會立即寫入磁盤,MapReduce會為每個(gè)Map任務(wù)分配一個(gè)環(huán)形內(nèi)存緩沖區(qū)(bufferinmemory),用于存儲map()函數(shù)的輸出。(2)在將環(huán)形內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫入磁盤之前,需要對數(shù)據(jù)進(jìn)行分區(qū)、排序和合并(可選)操作。第三步:Shuffle過程
Map的Shuffle過程1.Map端的Shuffle過程分區(qū):主要目的是將數(shù)據(jù)均勻地分配給Reduce任務(wù),以實(shí)現(xiàn)MapReduce的負(fù)載均衡。排序:MapReduce的默認(rèn)操作,主要是將Map任務(wù)的輸出按key進(jìn)行排序。每個(gè)分區(qū)中的數(shù)據(jù)都是有序的。合并:排序結(jié)束后,合并操作可根據(jù)需求選擇是否要執(zhí)行;合并操作是將具有相同key的<key,value>的value加起來,從而減少溢寫的數(shù)據(jù)量。第三步:Shuffle過程
Map的Shuffle過程1.Map端的Shuffle過程(3)環(huán)形內(nèi)存緩沖區(qū)中的數(shù)據(jù)一旦達(dá)到閾值,后臺線程便開始把數(shù)據(jù)溢寫到本地磁盤的臨時(shí)文件(即溢寫文件)中。(4)系統(tǒng)需要將所有溢寫文件中的數(shù)據(jù)進(jìn)行歸并,以生成一個(gè)大的溢寫文件。歸并操作就是將相同key的value歸并成一個(gè)集合,形成新的鍵值對。(5)文件歸并操作完成后生成最終的Map任務(wù)輸出文件,文件保存在Map任務(wù)所在節(jié)點(diǎn)的本地磁盤上,Map任務(wù)執(zhí)行結(jié)束。第三步:Shuffle過程2.Reduce端的Shuffle過程(1)Map任務(wù)結(jié)束,Reduce任務(wù)啟動(dòng)相同數(shù)量的復(fù)制線程并行復(fù)制Map任務(wù)的輸出文件。(2)當(dāng)緩存中的數(shù)據(jù)達(dá)到閾值,即需要溢寫到磁盤時(shí),Reduce任務(wù)會將復(fù)制數(shù)據(jù)進(jìn)行歸并排序(MergeSort),生成溢寫文件。
Reduce的Shuffle過程Reduce過程Reduce任務(wù)接收歸并排序后的數(shù)據(jù)流,并對已有序的相同key的鍵值對調(diào)用一次reduce()函數(shù)。Reduce任務(wù)輸入是<key2,list(value2)>形式的中間結(jié)果,輸出的是<key3,value3>形式的計(jì)算結(jié)果。Reduce任務(wù)輸出結(jié)果經(jīng)過輸出格式化后再輸出到文件系統(tǒng)中,并且每個(gè)作業(yè)輸出文件默認(rèn)以“part-r-00000”開始,并用后5位數(shù)遞增的方式命名。123
Reduce過程寫入文件MapReduce框架會自動(dòng)把ReduceTask生成的<key,value>傳入OutputFormat的write方法,實(shí)現(xiàn)文件的寫入操作。本節(jié)小結(jié)(2)Map過程(5)寫入文件(1)分片和格式化數(shù)據(jù)源(3)Shuffle過程(4)Reduce過程Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——單詞統(tǒng)計(jì)分析設(shè)計(jì)目錄content02設(shè)計(jì)思路01設(shè)計(jì)過程part-r-00000的內(nèi)容如下:part-r-00001的內(nèi)容如下:words1.txt的內(nèi)容如下:thisisagoodpigthatisagoodbearwords2.txt的內(nèi)容如下:thisisabadpigthatisabadbearMapReduce案例描述輸入文件是words1.txt和words2.txt兩個(gè)文本文件,文件內(nèi)容僅有字符串和空格。輸出文件為part-r-00000和part-r-00001,文件內(nèi)容是:文件中出現(xiàn)的單詞及單詞出現(xiàn)的次數(shù)。單詞統(tǒng)計(jì)?設(shè)計(jì)思路各個(gè)單詞之間的頻數(shù)不具有相關(guān)性,可以將不同的單詞分發(fā)到不同的節(jié)點(diǎn)上處理;在統(tǒng)計(jì)單詞數(shù)量任務(wù)中,可以將大的數(shù)據(jù)集切分成小的數(shù)據(jù)集,且各數(shù)據(jù)集之間相互獨(dú)立,方便并行處理;MapReduce單詞統(tǒng)計(jì)任務(wù)的解決思路符合MapReduce的編程思想。設(shè)計(jì)思路指定輸入文件所在的位置將兩個(gè)文件切分成兩個(gè)輸入分片,然后對輸入分片進(jìn)行格式化,文件按行分解,從而形成以行偏移量為key、行內(nèi)容為value的鍵值對。將鍵值對的value按空格分解成一個(gè)個(gè)單詞,生成<word,1>形式的鍵值對。輸入階段輸入分片及其格式化階段設(shè)計(jì)map()函數(shù)階段設(shè)計(jì)思路設(shè)計(jì)reduce()函數(shù),將輸入的<word,list(value)>形式的數(shù)據(jù)進(jìn)行匯總,最后生成以key為單詞、value為單詞頻數(shù)的鍵值對。系統(tǒng)默認(rèn)的輸出格式為“單詞+空格+單詞頻數(shù)”的形式,若要輸出特定樣式的數(shù)據(jù),需要對輸出結(jié)果進(jìn)行格式化,需要進(jìn)行指定。指定單詞統(tǒng)計(jì)程序的輸出結(jié)果文件位置。設(shè)計(jì)reduce()函數(shù)階段輸出格式化階段輸出階段設(shè)計(jì)過程1.輸入分片及其格式化:對輸入分片進(jìn)行格式化操作,形成<key1,value1>形式的數(shù)據(jù)流,key1為偏移量,從0開始,每讀取一個(gè)字符就增加1;value1為每行文本內(nèi)容。包括空格、換行符等設(shè)計(jì)過程map()函數(shù)將接收到的<key1,value1>形式的輸入數(shù)據(jù)流,按空格進(jìn)行拆分,輸出結(jié)果為<key2,1>形式的數(shù)據(jù)。key2為字符串形式的單詞,value的值為1,表示單詞數(shù)為1。2.Map過程設(shè)計(jì)過程將多個(gè)Map任務(wù)的<key2,value2>形式的輸出,處理成<key2,list(value2)>形式的中間結(jié)果。3.Shuffle過程設(shè)計(jì)過程reduce()函數(shù)接收<key2,list(value2)>形式的數(shù)據(jù)流,對相同單詞的值集合進(jìn)行計(jì)算,匯總出單詞出現(xiàn)的總次數(shù)。4.Reduce過程功能實(shí)現(xiàn)part-r-00000的內(nèi)容如下:part-r-00001的內(nèi)容如下:words1.txt的內(nèi)容如下:thisisagoodpigthatisagoodbearwords2.txt的內(nèi)容如下:thisisabadpigthatisabadbearMapReduce輸入分片及其格式化MapShuffleReduce單詞統(tǒng)計(jì)本節(jié)小結(jié)MapReduce編程規(guī)范單詞統(tǒng)計(jì)設(shè)計(jì)思路單詞統(tǒng)計(jì)設(shè)計(jì)過程Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——單詞統(tǒng)計(jì)功能代碼-Mapper實(shí)現(xiàn)目錄content02Reducer階段代碼編寫01Mapper階段代碼編寫03Drive階段代碼編寫pom.xml文件內(nèi)容<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.9.2</version></dependency>Mapper階段代碼publicclassWordCountMapperextendsMapper<LongWritable,Text,Text,IntWritable>{ @Override protectedvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString();//將Text類型轉(zhuǎn)成字符型 String[]words=line.split("");//切割單詞 for(Stringword:words){//遍歷words context.write(newText(word),newIntWritable(1)); } }}繼承Mapper類WordCountMapper類使用extends關(guān)鍵字繼承了Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>類,輸入Mapper后會自動(dòng)補(bǔ)全。重寫map方法重寫map方法刪除此行重寫map方法Stringline=value.toString();//將Text類型轉(zhuǎn)成字符型String[]words=line.split("");//切割漢字for(Stringword:words){//遍歷words context.write(newText(word),newIntWritable(1));}map()方法編寫邏輯代碼:Hadoop大數(shù)據(jù)項(xiàng)目開發(fā)——單詞統(tǒng)計(jì)分析-mapper代碼實(shí)現(xiàn)目錄content02Reducer類的編寫01Mapper類的編寫03Driver類的編寫添加依賴:hadoop-commonhadoop-hdfshadoop-client實(shí)戰(zhàn)開發(fā):WordCountMapperWordCountReducerWordCountMain/開發(fā)環(huán)境:mavenIDEA/Eclipse上傳運(yùn)行:hadoopjarwordcount-1.0-SNAPSHOT.jar
/input/data.txt/output/wc單詞統(tǒng)計(jì)功能開發(fā)流程引入依賴<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.9.2</version></dependency>本案例中的測試數(shù)據(jù)位于“G:/wordcount/input”的文件夾中。首先在新建項(xiàng)目中的pom.xml文件中引入依賴,如圖所示:Mapper類的編寫新建WordCountMapper類,該類繼承了org.apache.hadoop.mapreduce.Mapper類。WordCountMapper類是map()函數(shù)的執(zhí)行者,用戶需要根據(jù)數(shù)據(jù)處理需求重寫map()方法。創(chuàng)建WordCountMapper類Mapper類的編寫importjava.io.IOException;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;publicclassWordCountMapperextendsMapper<LongWritable,Text,Text,IntWritable>{ @Override protectedvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString();//將Text類型轉(zhuǎn)成字符型 String[]words=line.split("");//切割單詞 for(Stringword:words){//遍歷words context.write(newText(word),newIntWritable(1)); } }}WordCountMapper類的代碼如圖所示:Mapper類的編寫上述代碼中可知,WordCountMapper類使用extends關(guān)鍵字繼承了Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>類,其中:KEYIN:是MapTask讀取到key的數(shù)據(jù)類型,是一行的起始偏移量的數(shù)據(jù)類型,使用長整型,在MapReduce中使用LongWritable。VALUEIN:是MapTask讀取到的數(shù)據(jù)的value的類型,是一行的內(nèi)容的數(shù)據(jù)類型,本案例中一行內(nèi)容的數(shù)據(jù)類型為文本型,在MapReduce中使用Text。KEYOUT:是用戶的自定義map方法要返回的結(jié)果Key-Value中的key的數(shù)據(jù)類型,在WordCount邏輯中,需要輸出的單詞是字符型,在MapReduce中使用Text。VALUEOUT:是用戶的自定義map方法要返回的結(jié)果Key-Value中value的數(shù)據(jù)類型,在wordcount邏輯中,需要輸出的單詞數(shù)量是整數(shù),在MapReduce中使用IntWritable。在mapreduce中,map產(chǎn)生的數(shù)據(jù)需要傳輸給reduce,需要進(jìn)行序列化和反序列化。而jdk中的原生序列化機(jī)制產(chǎn)生的數(shù)據(jù)量比較冗余,就會導(dǎo)致數(shù)據(jù)在mapreduce運(yùn)行過程中傳輸效率低下。所以,hadoop專門設(shè)計(jì)了自己的序列化機(jī)制,那么,mapreduce中傳輸?shù)臄?shù)據(jù)類型就必須實(shí)現(xiàn)hadoop自己的序列化接口。hadoop為jdk中的常用基本類型Long,String,Integer,F(xiàn)loat等數(shù)據(jù)類型封裝了自己的實(shí)現(xiàn)了hadoop序列化接口的類型:LongWritable,Text,IntWritable,F(xiàn)loa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1 《學(xué)會尊重》(教學(xué)設(shè)計(jì))部編版道德與法治六年級下冊
- 2024年秋九年級歷史上冊 第2單元 古代歐洲文明 第4課 希臘城邦和亞歷山大帝國教學(xué)實(shí)錄 新人教版
- 智能家居產(chǎn)品市場競爭力分析預(yù)案
- 5 國家機(jī)構(gòu)有哪些 第三課時(shí)(教學(xué)設(shè)計(jì))-統(tǒng)編版道德與法治六年級上冊
- 某煙草公司機(jī)關(guān)綜合大樓室內(nèi)裝飾工程施工組織設(shè)計(jì)方案
- 9《小水滴的訴說》《快來幫幫我》教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治二年級下冊統(tǒng)編版
- 1 有余數(shù)的除法-第二課時(shí)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年二年級下冊數(shù)學(xué)蘇教版
- 2024年春八年級生物下冊 第七單元 第二章 第三節(jié) 基因的顯性和隱性教學(xué)實(shí)錄 (新版)新人教版
- 5魯濱遜漂流記(節(jié)選)教學(xué)設(shè)計(jì)-2023-2024學(xué)年六年級下冊語文統(tǒng)編版
- 2024年秋九年級歷史上冊 第20課 第一次工業(yè)革命教學(xué)實(shí)錄 新人教版
- 金蝶云星空操作手冊V3
- 安全生產(chǎn)風(fēng)險(xiǎn)防控“六項(xiàng)機(jī)制”做法及經(jīng)驗(yàn)分享
- 2024新版人教PEP英語(2025春)七年級下冊教學(xué)課件:Unit2 Reading Plus
- 水利工程施工監(jiān)理規(guī)范(SL288-2014)用表填表說明及示例
- 兒歌:媽媽過生日
- 時(shí)間單位換算表
- 《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》第1章計(jì)算機(jī)網(wǎng)絡(luò)概論
- DTSD342-9N說明書(精編版)
- 沸騰焙燒爐設(shè)計(jì)相關(guān)計(jì)算
- 群塔監(jiān)理實(shí)施細(xì)則
評論
0/150
提交評論