Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件_第1頁
Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件_第2頁
Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件_第3頁
Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件_第4頁
Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩529頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

hadoop大數(shù)據(jù)開發(fā)實(shí)例教程全套可編輯PPT課件目錄Contents01020304大數(shù)據(jù)生態(tài)系統(tǒng)Hadoop的安裝與基本配置Hadoop文件系統(tǒng)基于Shell和JavaAPI操作HDFS03MapReduce和YARN技術(shù)目錄Contents06070809分布式數(shù)據(jù)倉庫——Hive技術(shù)分布式協(xié)調(diào)服務(wù)——ZooKeeper技術(shù)分布式數(shù)據(jù)庫——HBase技術(shù)Hadoop中的數(shù)據(jù)遷移工具——Sqoop技術(shù)10Spark的安裝與基礎(chǔ)應(yīng)用大數(shù)據(jù)生態(tài)系統(tǒng)011.1了解大數(shù)據(jù)1.2Hadoop簡介1.3實(shí)訓(xùn)1收集Hadoop相關(guān)案例了解大數(shù)據(jù)(產(chǎn)生、概念、特征)及“物、云、大、智”之間的關(guān)系了解Hadoop的應(yīng)用案例了解及認(rèn)識Hadoop和它的核心組件了解MapReduce作業(yè)的運(yùn)行方式1243

本模塊從了解大數(shù)據(jù)(bigdata)入手,簡明扼要地敘述大數(shù)據(jù)的產(chǎn)生、大數(shù)據(jù)的概念、大數(shù)據(jù)的“4V”特征、大數(shù)據(jù)應(yīng)用案例,展示物聯(lián)網(wǎng)(產(chǎn)生數(shù)據(jù))、云計(jì)算(承載數(shù)據(jù))、大數(shù)據(jù)(挖掘數(shù)據(jù))和人工智能(學(xué)習(xí)數(shù)據(jù))相輔相成、彼此依附和相互助力的關(guān)系,再通過對Hadoop的層層“揭秘”來認(rèn)識Hadoop和它的核心組件及其常用的其他組件。目標(biāo)和要求大數(shù)據(jù)生態(tài)系統(tǒng)1.1了解大數(shù)據(jù)

被譽(yù)為“大數(shù)據(jù)之父”的維克托·邁爾-舍恩伯格曾提到“世界的本質(zhì)就是大數(shù)據(jù)”,當(dāng)今社會生活中到處都是數(shù)據(jù)。不僅如此,在人人互聯(lián)的廉價存儲時代,我們收集的數(shù)據(jù)的性質(zhì)也在發(fā)生變化。對于許多企業(yè)而言,它們的關(guān)鍵數(shù)據(jù)曾經(jīng)僅限于其業(yè)務(wù)數(shù)據(jù)庫和數(shù)據(jù)文件。在這些類型的系統(tǒng)中,數(shù)據(jù)被組織成有序的行和列,其中信息的每個字節(jié)在其性質(zhì)和業(yè)務(wù)價值方面都易于管理和理解。當(dāng)今這些數(shù)據(jù)和數(shù)據(jù)庫仍然非常重要,但是應(yīng)用的數(shù)據(jù)類型和數(shù)據(jù)處理方式發(fā)生了翻天覆地的變化,大數(shù)據(jù)悄然而至,讓我們一起揭開大數(shù)據(jù)的神秘面紗。1.1了解大數(shù)據(jù)1.1.1大數(shù)據(jù)的產(chǎn)生

大數(shù)據(jù)的產(chǎn)生可追溯至1887年。1887—1890年,美國統(tǒng)計(jì)學(xué)家赫爾曼·霍爾瑞斯為了統(tǒng)計(jì)1890年的人口普查數(shù)據(jù),發(fā)明了一臺電動器來讀取卡片上的洞數(shù),該設(shè)備讓美國用1年時間就完成了原本需耗時8年的人口普查活動,由此在全球范圍內(nèi)引發(fā)了數(shù)據(jù)處理的新紀(jì)元。社交網(wǎng)絡(luò)、電子商務(wù)等互聯(lián)網(wǎng)應(yīng)用成為新的數(shù)據(jù)來源,傳感器、二維碼、無線射頻識別(radiofrequencyidentification,RFID)、位置信息等物聯(lián)網(wǎng)應(yīng)用成為新的數(shù)據(jù)采集方法,全時空數(shù)據(jù)的可采集性應(yīng)用,智能算法的使用,非結(jié)構(gòu)的數(shù)據(jù)形態(tài)飛速增加,數(shù)據(jù)獲取成本、存儲成本和處理成本的下降,所有因素都推動了數(shù)據(jù)量的爆炸式膨脹。數(shù)據(jù)大爆炸和數(shù)據(jù)結(jié)構(gòu)的變化為數(shù)據(jù)處理帶來新的挑戰(zhàn),人類正從信息技術(shù)(informationtechnology,IT)時代走向數(shù)據(jù)技術(shù)(datatechnology,DT)時代。1.1了解大數(shù)據(jù)1.1.2大數(shù)據(jù)的概念

大數(shù)據(jù)可一拆為二來看,就是“大”和“數(shù)據(jù)”。

數(shù)據(jù)最小的基本單位是bit,可存儲一個0或者1,8bit相當(dāng)于1Byte。數(shù)據(jù)量等級單位有Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB,它們依次按照進(jìn)率1024(210)來計(jì)算。常規(guī)PC的存儲和處理數(shù)據(jù)的體量一般到達(dá)GB級別,而互聯(lián)網(wǎng)、企業(yè)IT、物聯(lián)網(wǎng)、短信、電話、網(wǎng)絡(luò)搜索、在線交易等,隨時都在快速累積龐大的數(shù)據(jù),數(shù)據(jù)量很容易達(dá)到TB、PB或EB等級,沒有辦法在可容忍的時間下使用常規(guī)軟件方法完成存儲、管理和處理任務(wù)。等級界值分分鐘就臨近了,“大數(shù)據(jù)”的概念延伸而出。何為大?1.1了解大數(shù)據(jù)1.1.2大數(shù)據(jù)的概念

在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)是指所有能輸入計(jì)算機(jī)并被計(jì)算機(jī)程序處理的符號介質(zhì)的總稱,是用于輸入電子計(jì)算機(jī)進(jìn)行處理,具有一定意義的數(shù)字、字母、符號和模擬量等的統(tǒng)稱。計(jì)算機(jī)存儲和處理的對象十分廣泛,表示這些對象的數(shù)據(jù)也隨之變得越來越復(fù)雜。例如,應(yīng)用下載記錄、語音通話記錄、淘寶“雙11”新訂單記錄等都為數(shù)據(jù),有些是由二維表結(jié)構(gòu)來邏輯表達(dá)和實(shí)現(xiàn)的數(shù)據(jù),嚴(yán)格地遵循數(shù)據(jù)格式與長度規(guī)范,主要通過關(guān)系型數(shù)據(jù)庫進(jìn)行存儲和管理,這種稱為結(jié)構(gòu)化數(shù)據(jù)。與之相對的是有些數(shù)據(jù)則“雜亂無章”或部分有序,不適于由數(shù)據(jù)庫二維表來表現(xiàn),包括所有格式的辦公文檔、XML、HTML、各類報表、圖片和音頻、視頻信息等,這種稱為非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)。

對于大數(shù)據(jù),研究機(jī)構(gòu)Gartner給出了定義:大數(shù)據(jù)是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn)。何為數(shù)據(jù)?1.1了解大數(shù)據(jù)1.1.3大數(shù)據(jù)的特征(1)數(shù)據(jù)體量巨大(volume)(4)價值密度低(value)(3)處理速度快(velocity)(2)數(shù)據(jù)類型繁多(variety)

大數(shù)據(jù)的“3V”特征,描述了數(shù)據(jù)挑戰(zhàn)“大”的背后因素。這三個特征標(biāo)準(zhǔn)是評估大數(shù)據(jù)問題并提供清晰口號的簡便方法。通常的經(jīng)驗(yàn)法則是:如果數(shù)據(jù)存儲和分析工作具有這三個特征中的任何一個,則很可能會帶來巨大的數(shù)據(jù)挑戰(zhàn),須利用大數(shù)據(jù)技術(shù)來解決。

大數(shù)據(jù)最核心的價值就是對于海量數(shù)據(jù)進(jìn)行存儲和分析。相比現(xiàn)有的其他技術(shù)而言,大數(shù)據(jù)的“廉價、迅速、優(yōu)化”這三方面的綜合成本是最優(yōu)的。1.1了解大數(shù)據(jù)1.1.4大數(shù)據(jù)應(yīng)用案例

大數(shù)據(jù)應(yīng)用顛覆人類思維,產(chǎn)生巨大成功的案例數(shù)不勝數(shù),下面略舉幾例,一起來領(lǐng)略一下大數(shù)據(jù)的神奇應(yīng)用。

Kaggle,一個為所有人提供數(shù)據(jù)挖掘競賽的公司,在一次關(guān)于二手車的數(shù)據(jù)分析比賽中得到,橙色二手車有質(zhì)量問題的可能性是其他顏色二手車的一半。為什么?探尋事物的因果關(guān)系是人類的本性,但是大數(shù)據(jù)時代可以做某種程度的妥協(xié),可以只需要關(guān)注“是什么”,而忽略“為什么”。1.大數(shù)據(jù)應(yīng)用案例之顛覆思維1.1了解大數(shù)據(jù)1.1.4大數(shù)據(jù)應(yīng)用案例2.大數(shù)據(jù)應(yīng)用案例之喬布斯抗癌蘋果公司的傳奇總裁史蒂夫·喬布斯在與癌癥斗爭的過程中采用了與其他患者不同的方式,他對自身DNA和腫瘤DNA進(jìn)行排序,得到的不是一個只有一系列標(biāo)記的樣本,而是包括整個基因密碼的數(shù)據(jù)文檔。對于一個普通的癌癥患者,醫(yī)生只能期望他的DNA排列與試驗(yàn)中使用的樣本足夠相似。但是,史蒂夫·喬布斯的醫(yī)生們能夠基于喬布斯的特定基因組成,按所需效果用藥。如果癌癥病變導(dǎo)致藥物失效,醫(yī)生可以及時更換另一種藥,也就是喬布斯所說的“從一片睡蓮葉跳到另一片上”。喬布斯開玩笑說:“我要么是第一個通過這種方式戰(zhàn)勝癌癥的人,要么就是最后一個因?yàn)檫@種方式死于癌癥的人?!彪m然他的愿望都沒有實(shí)現(xiàn),但是這種獲得所有數(shù)據(jù)而不僅是樣本的典型大數(shù)據(jù)思維方法還是將他的生命延長了好幾年。大數(shù)據(jù)為人類的生命延續(xù)開啟了一扇新的窗戶。1.1了解大數(shù)據(jù)1.1.4大數(shù)據(jù)應(yīng)用案例

2020年,新冠肺炎疫情在全球擴(kuò)散蔓延,嚴(yán)重影響了人們的正常生活和工作,限制了生產(chǎn)與商業(yè)活動。大數(shù)據(jù)技術(shù)為新時代中國特色社會主義的疫情防控模式給予了重要支撐,各類技術(shù)創(chuàng)新和應(yīng)用也有力地支撐了復(fù)工復(fù)產(chǎn)。首先,大數(shù)據(jù)支持臨床診療持續(xù)改進(jìn)。其次,大數(shù)據(jù)支持病毒溯源和流行病學(xué)調(diào)查。最后,大數(shù)據(jù)技術(shù)在疫情的遠(yuǎn)程診療、疫情預(yù)警及物資調(diào)配等方面也做出了重要的戰(zhàn)略支撐和保障。重大流行病疫情防控仍然任道而重遠(yuǎn),因此開發(fā)重大流行病綜合管理決策支持系統(tǒng),形成數(shù)字作戰(zhàn)地圖,解決“數(shù)據(jù)孤島”治理難題,仍需要大數(shù)據(jù)、互聯(lián)網(wǎng)、云平臺支持下的應(yīng)急管理和科學(xué)決策,需要技術(shù)的創(chuàng)新和有效應(yīng)用。3.大數(shù)據(jù)應(yīng)用案例之疫情防控1.1了解大數(shù)據(jù)1.1.4大數(shù)據(jù)應(yīng)用案例

GoogleFluTrends通過對聚合搜索的結(jié)果進(jìn)行分析,可以比疾控機(jī)構(gòu)更快速地偵測到疾病的暴發(fā)。而且,盡管衛(wèi)生報告每周都得到更新,但報告僅限于單個國家。GoogleFluTrends卻有著幾近涵蓋全球的視角:它在任何人們使用Google搜索的地點(diǎn)收集數(shù)據(jù)。更重要的是,由于它是每日更新的,因而它可以向人們傳遞更即時的消息。4.大數(shù)據(jù)應(yīng)用案例之流感預(yù)測1.1了解大數(shù)據(jù)1.1.4大數(shù)據(jù)應(yīng)用案例

10多年前,音樂元數(shù)據(jù)公司Gracenote收到來自蘋果公司的神秘忠告,建議其購買更多的服務(wù)器。Gracenote照做了,而后蘋果推出iTunes和iPod,Gracenote從而成就了元數(shù)據(jù)帝國。在車內(nèi)聽的歌曲很可能反映你的真實(shí)喜好,Gracenote就擁有此種技術(shù)。它采用智能手機(jī)和平板電腦內(nèi)置的麥克風(fēng)識別用戶電視或音響中播放的歌曲,并可檢測掌聲或噓聲等反應(yīng),甚至還能檢測用戶是否調(diào)高了音量。這樣,Gracenote可以研究用戶真正喜歡的歌曲、聽歌的時間和地點(diǎn)。Gracenote擁有數(shù)百萬首歌曲的音頻和元數(shù)據(jù),因而可以快速識別歌曲信息,并按音樂風(fēng)格、歌手、地理位置等分類。5.大數(shù)據(jù)應(yīng)用案例之音樂1.1了解大數(shù)據(jù)1.1.5“物、云、大、智”之間的關(guān)系智能時代的今天,“物、云、大、智”存在于生活的每個角落,從產(chǎn)品營銷至信息服務(wù),從日常生活應(yīng)用至高端科學(xué)研究。大數(shù)據(jù)的應(yīng)用與研究總是與物聯(lián)網(wǎng)、云計(jì)算、人工智能緊緊相連,它們的關(guān)系如圖1-1所示。圖1-1物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)和人工智能關(guān)系1.1了解大數(shù)據(jù)1.1.5“物、云、大、智”之間的關(guān)系物聯(lián)網(wǎng)(Internetofthings,IOT)可以簡單地理解為物物相連的互聯(lián)網(wǎng),正是得益于大數(shù)據(jù)和云計(jì)算的支持,互聯(lián)網(wǎng)才正在向物聯(lián)網(wǎng)擴(kuò)展,并進(jìn)一步升級至體驗(yàn)更佳、解放生產(chǎn)力的人工智能時代。1.人工智能——智能時代的應(yīng)用領(lǐng)域人工智能的應(yīng)用領(lǐng)域比較多,如機(jī)器人領(lǐng)域、語言識別領(lǐng)域、圖像識別領(lǐng)域和專家系統(tǒng)等;它的應(yīng)用實(shí)例也是數(shù)不勝數(shù),如指紋識別、人臉識別、視網(wǎng)膜識別、虹膜識別、智能搜索和博弈等。2.大數(shù)據(jù)——人工智能背后的基石大數(shù)據(jù)是人工智能的基石,目前的深度學(xué)習(xí)主要建立在大數(shù)據(jù)的基礎(chǔ)上,即對大數(shù)據(jù)進(jìn)行訓(xùn)練,并從中歸納出可以被計(jì)算機(jī)運(yùn)用在類似數(shù)據(jù)上的知識或規(guī)律。3.物聯(lián)網(wǎng)——人工智能基礎(chǔ)1.1了解大數(shù)據(jù)1.1.5“物、云、大、智”之間的關(guān)系云計(jì)算是將人們傳統(tǒng)的IT工作轉(zhuǎn)為以網(wǎng)絡(luò)為依托的云平臺運(yùn)行,美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)在2011年下半年公布了云計(jì)算定義的最終稿,給出了云計(jì)算模式所具備的5個基本特征(按需自助服務(wù)、廣泛的網(wǎng)絡(luò)訪問、資源共享、快速的可伸縮性和可度量的服務(wù))、3種服務(wù)模式[SaaS(軟件即服務(wù))、PaaS(平臺即服務(wù))和IaaS(基礎(chǔ)設(shè)施即服務(wù))]和4種部署方式(私有云、社區(qū)云、公有云和混合云)。云計(jì)算發(fā)展較早,經(jīng)過10年的發(fā)展,國內(nèi)已經(jīng)擁有超百億規(guī)模,云計(jì)算也不再只是充當(dāng)存儲與計(jì)算的工具而已。可以預(yù)見的是,未來云計(jì)算將在助力人工智能發(fā)展層面意義深遠(yuǎn)。而同時,人工智能的迅猛發(fā)展、海量數(shù)據(jù)的積累,也將會為云計(jì)算帶來未知性和可能性。4.云計(jì)算——人工智能背后強(qiáng)大的助推器物聯(lián)網(wǎng)(產(chǎn)生數(shù)據(jù))、云計(jì)算(承載數(shù)據(jù))、大數(shù)據(jù)(挖掘數(shù)據(jù))和人工智能(學(xué)習(xí)數(shù)據(jù))相輔相成,彼此依附,相互助力,合力搭檔在一起才更有力量:給未來多一些可能,給未知多一些可能性。1.2Hadoop簡介1.2.1認(rèn)識Hadoop1.大數(shù)據(jù)對Hadoop有什么樣的需求

Hadoop絕不是傳統(tǒng)的信息技術(shù)工具,它非常適合應(yīng)對許多大數(shù)據(jù)挑戰(zhàn),尤其是海量數(shù)據(jù)和各種數(shù)據(jù)結(jié)構(gòu),但是也有不太適合Hadoop的,就是即時分析高速數(shù)據(jù)。盡管Hadoop是進(jìn)行大數(shù)據(jù)分析的重要工具,但它也不是能解決所有的大數(shù)據(jù)問題,整個大數(shù)據(jù)域并不是Hadoop的同義詞。

龐大的數(shù)據(jù)量在許多情況下對傳統(tǒng)的數(shù)據(jù)挖掘技術(shù)提出了幾乎無法克服的挑戰(zhàn),即使條件良好,它也只能處理一部分可用的寶貴數(shù)據(jù)。Google于是努力尋找一種新方法來分析其搜索引擎收集的大量數(shù)據(jù),Hadoop正是這種努力的結(jié)果,它代表了一種有效且經(jīng)濟(jì)高效的方式,可將大型分析挑戰(zhàn)減少為可管理的小型任務(wù)。1.2Hadoop簡介1.2.1認(rèn)識Hadoop

DougCutting在2003—2004年發(fā)表了兩個學(xué)術(shù)論文來描述Google的技術(shù):GoogleFileSystem(GFS)和MapReduce。DougCutting開發(fā)的Hadoop是一個開源平臺,提供MapReduce和GFS技術(shù)的實(shí)現(xiàn)。Yahoo公司在2006年雇用了DougCutting,并很快成為Hadoop項(xiàng)目的堅(jiān)定支持者。2.Hadoop的起源和有趣的名字Hadoop最初旨在用作2002年開始的ApacheNutch項(xiàng)目的基礎(chǔ)結(jié)構(gòu)。Nutch是一個開源Web搜索引擎,是Lucene項(xiàng)目的一部分。Apache項(xiàng)目的創(chuàng)建是為了開發(fā)開源軟件,并得到Apache軟件基金會(ASF)的支持,該基金會是一個由分散的開發(fā)人員社區(qū)組成的非營利性公司。開源軟件通常以公共和協(xié)作的方式開發(fā),是一種源代碼可供任何人免費(fèi)研究、修改和分發(fā)的軟件。Nutch需要一種可以擴(kuò)展到數(shù)十億個網(wǎng)頁的架構(gòu),并且所需的架構(gòu)受到Google文件系統(tǒng)(GFS)的啟發(fā),并最終成為Hadoop分布式文件系統(tǒng)(HDFS)。1.2Hadoop簡介1.2.1認(rèn)識Hadoop

2004年,Google發(fā)表了一篇介紹MapReduce的論文,到2005年,Nutch同時使用MapReduce和HDFS。2006年年初,MapReduce和HDFS成為Lucene子項(xiàng)目的一部分,該子項(xiàng)目名為Hadoop。2008年2月,Hadoop集群生成雅虎的搜索索引。2008年初,Hadoop已成為Apache的頂級項(xiàng)目,并被許多公司使用。2008年4月,Hadoop用時209秒,利用910個節(jié)點(diǎn)集群對TB級數(shù)據(jù)進(jìn)行排序,打破了世界紀(jì)錄。2009年5月,Yahoo能夠使用Hadoop在62秒內(nèi)排序1TB數(shù)據(jù)。2.Hadoop的起源和有趣的名字

至于Hadoop這個名字,它只是DougCutting的兒子給他的毛絨大象取的名字。這個名稱是唯一的且易于記憶的——其特性使其成為一個不錯的選擇。1.2Hadoop簡介1.2.1認(rèn)識Hadoop

Hadoop的核心是一個框架,用于將數(shù)據(jù)存儲在大型商用硬件集群上——負(fù)擔(dān)得起且易于使用的日常計(jì)算機(jī)硬件,并針對該數(shù)據(jù)運(yùn)行應(yīng)用程序。使用負(fù)擔(dān)得起的計(jì)算資源網(wǎng)絡(luò)來獲得業(yè)務(wù)解決能力是Hadoop的關(guān)鍵價值主張,通俗地講,就是把一堆PC通過網(wǎng)絡(luò)連接起來能完成大型數(shù)據(jù)處理。3.Hadoop究竟是什么MapReduce分布式處理框架Hadoop分布式文件系統(tǒng)(HDFS)Hadoop1.2Hadoop簡介1.2.1認(rèn)識Hadoop

在Hadoop上運(yùn)行的應(yīng)用程序?qū)⑵涔ぷ鞣峙浣o集群中的node節(jié)點(diǎn)(集群是一組互連的計(jì)算機(jī),它們可以共同解決同一問題),HDFS中存儲將要處理的數(shù)據(jù)。Hadoop集群可以跨越數(shù)千臺計(jì)算機(jī),HDFS將數(shù)據(jù)存儲在其中,并且MapReduce作業(yè)在數(shù)據(jù)附近節(jié)點(diǎn)進(jìn)行處理,從而使I/O成本保持較低。同時,MapReduce也極其靈活,可以開發(fā)各種應(yīng)用程序。3.Hadoop究竟是什么Hadoop集群是一種計(jì)算集群,也就是主要用于計(jì)算目的的集群,許多計(jì)算機(jī)(node)可以共享計(jì)算工作負(fù)載,并利用集群中非常大的聚合帶寬。Hadoop集群通常由主節(jié)點(diǎn)和許多從屬節(jié)點(diǎn)組成,主節(jié)點(diǎn)主要用于控制Hadoop中的存儲和處理系統(tǒng),而從節(jié)點(diǎn)存儲集群中的所有數(shù)據(jù)并在其中處理數(shù)據(jù)。1.2Hadoop簡介1.2.2Hadoop核心組件

Hadoop三大核心組件Hadoop的資源管理器YARN(yetanotherresourcenegotiator,資源協(xié)調(diào)者)Hadoop的數(shù)據(jù)存儲工具HDFS(Hadoopdistributefilesystem,分布式文件管理系統(tǒng))分布式計(jì)算框架HadoopMapReduce1.2Hadoop簡介1.2.2Hadoop核心組件

Hadoop使用HDFS進(jìn)行數(shù)據(jù)存儲。HDFS具有主/從體系結(jié)構(gòu),主服務(wù)(NameNode)控制對數(shù)據(jù)文件的訪問。從站服務(wù)(DataNodes)在集群中的每個節(jié)點(diǎn)上進(jìn)行分布,DataNodes管理與節(jié)點(diǎn)相關(guān)聯(lián)的存儲,為客戶端讀取和寫入請求以及為其他任務(wù)提供服務(wù)。

Hadoop使用MapReduce進(jìn)行分布式處理。MapReduce涉及對分布式數(shù)據(jù)集的一系列操作的處理。數(shù)據(jù)由鍵-值對組成,并且計(jì)算只有映射階段和歸約階段。用戶定義的MapReduce作業(yè)在集中群的計(jì)算節(jié)點(diǎn)上運(yùn)行。一般來說,MapReduce作業(yè)的運(yùn)行方式如下:1.2Hadoop簡介1.2.2Hadoop核心組件

(1)在Map階段,輸入數(shù)據(jù)被分為大量的片段,每個片段都被分配給一個Map任務(wù)。(2)這些映射任務(wù)分布在整個集群中。(3)每個映射任務(wù)都會從其分配的片段中處理鍵-值對,并生成一組中間鍵-值對。(4)中間數(shù)據(jù)集按鍵排序,并將排序后的數(shù)據(jù)劃分為多個與Reduce任務(wù)數(shù)量匹配的片段。(5)在Reduce階段,每個Reduce任務(wù)都會處理分配給它的數(shù)據(jù)片段,并生成一個輸出鍵-值對。(6)這些Reduce任務(wù)也分布在整個集群中,并在完成后將其輸出寫入HDFS。1.2Hadoop簡介1.2.2Hadoop核心組件

Hadoop早期版本中的HadoopMapReduce框架具有一個稱為JobTracker的單一主服務(wù)和多個稱為TaskTrackers的從屬服務(wù),集群中每個節(jié)點(diǎn)一個。將MapReduce作業(yè)提交給JobTracker時,該作業(yè)將被放入隊(duì)列中,然后根據(jù)管理員定義的調(diào)度規(guī)則運(yùn)行。JobTracker管理著MapReduce任務(wù)到TaskTrackers的分配。但在Hadoop后期版本中,一個新的資源管理系統(tǒng)YARN提供通用的計(jì)劃和資源管理服務(wù),因此不僅可以在Hadoop集群上運(yùn)行MapReduce應(yīng)用程序,還可以進(jìn)行資源的調(diào)度管理。

Hadoop不僅限于MapReduce和HDFS,它還是一系列相關(guān)項(xiàng)目(實(shí)際上是一個生態(tài)系統(tǒng)),用于分布式計(jì)算和大規(guī)模數(shù)據(jù)處理。這些項(xiàng)目中的大多數(shù)由ApacheSoftwareFoundation托管,形成了ApacheHadoop生態(tài)系統(tǒng)。ApacheHadoop生態(tài)系統(tǒng)中其他部分開源組件及其具體描述如表1-1所示。1.2Hadoop簡介1.2.2Hadoop核心組件表1-1Hadoop生態(tài)系統(tǒng)中其他部分開源組件及其具體描述1.2Hadoop簡介1.2.2Hadoop核心組件

Hadoop生態(tài)系統(tǒng)及其商業(yè)發(fā)行版還在繼續(xù)發(fā)展中,新技術(shù)或新工具將不斷出現(xiàn),目前各種Hadoop生態(tài)系統(tǒng)項(xiàng)目及它們之間的關(guān)系如圖1-2所示。圖1-2各種Hadoop生態(tài)系統(tǒng)項(xiàng)目及它們之間的關(guān)系1.2Hadoop簡介1.2.2Hadoop核心組件

用戶可以從Apache軟件基金會或提供自己的Hadoop發(fā)行版的公司獲得Hadoop。僅可直接從ApacheSoftwareFoundation獲得的產(chǎn)品可以稱為Hadoop版本。其他公司的產(chǎn)品可以包括官方的ApacheHadoop發(fā)行文件,但是Apache軟件基金會不支持從ApacheHadoop源樹中“派生”(并代表其修改或擴(kuò)展版本)的產(chǎn)品。1.3實(shí)訓(xùn)1收集Hadoop相關(guān)案例1.實(shí)訓(xùn)目的(1)了解大數(shù)據(jù)及“物、云、大、智”之間的關(guān)系;(2)了解Hadoop的應(yīng)用案例;(3)了解及認(rèn)識Hadoop與組件;(4)了解MapReduce作業(yè)的運(yùn)行方式。2.實(shí)訓(xùn)內(nèi)容(1)搜索Hadoop使用案例,制作案例Hadoop體系結(jié)構(gòu)圖;(2)查找國內(nèi)尤其是互聯(lián)網(wǎng)公司使用Hadoop的實(shí)際案例;(3)參照Hadoop體系中各組件功效,結(jié)合案例查看組件選用狀態(tài);(4)繪制案例體系架構(gòu)圖,示例如圖1-3所示。1.3實(shí)訓(xùn)1收集Hadoop相關(guān)案例圖1-3網(wǎng)易猛犸大數(shù)據(jù)架構(gòu)平臺

(1)按題目要求查找案例并繪制案例體系架構(gòu)圖(“文字+截圖”方式);(2)總結(jié)實(shí)訓(xùn)心得與體會。模塊2Hadoop的安裝與基本配置模塊2Hadoop的安裝與基本配置3.實(shí)訓(xùn)要求感謝聆聽Hadoop的安裝與基本配置022.1Linux環(huán)境搭建2.2Hadoop環(huán)境變量配置2.3Hadoop的安裝模式2.4Hadoop的格式化與啟動驗(yàn)證2.5實(shí)訓(xùn)2Hadoop的安裝與基本配置——偽分布式(1)熟練掌握在VMwareWorkstation虛擬機(jī)中安裝Linux的方法;(2)掌握Hadoop環(huán)境的基礎(chǔ)搭建與環(huán)境變量設(shè)置;(3)知道JavaJDK的安裝與檢驗(yàn);(4)掌握偽分布式/完全分布式Hadoop的安裝與配置;(5)知道修改Hadoop的若干配置文件,正常啟動Hadoop的相關(guān)守護(hù)進(jìn)程的方法;(6)知道在虛擬機(jī)中備份與恢復(fù)操作系統(tǒng)的方法。

本模塊從“零”基礎(chǔ)入門者視角,首先講解如何搭建Linux環(huán)境,清楚地交代學(xué)習(xí)本課程需要使用的軟件,同時完整地演示了VMwareWorkstation虛擬機(jī)安裝Linux系統(tǒng),接著進(jìn)行Hadoop環(huán)境變量的配置。為了實(shí)驗(yàn)的清晰及后續(xù)集群實(shí)驗(yàn)的成功,對部署好的虛擬機(jī)復(fù)制多份,并進(jìn)行了相關(guān)的規(guī)劃部署。最后利用搭建好的Hadoop環(huán)境完成Hadoop的單機(jī)、偽分布式和完全分布式的安裝、格式化和啟動,且通過jps和Web方式進(jìn)行了驗(yàn)證。目標(biāo)和要求Hadoop的安裝與基本配置2.1Linux環(huán)境搭建

要想進(jìn)行Hadoop大數(shù)據(jù)關(guān)鍵技術(shù)的學(xué)習(xí),必須有一臺裝有Linux操作系統(tǒng)的計(jì)算機(jī),建議采用虛擬機(jī)(VMwareWorkstation、VirtualBox等)軟件來搭建Hadoop的學(xué)習(xí)平臺。本書采用的虛擬機(jī)是VMwareWorkstation14,Linux操作系統(tǒng)鏡像是CentOS7系列,表2-1給出了需求資源及作用對應(yīng)表。表2-1需求資源及作用對應(yīng)表

CentOS7系列鏡像可以從163等鏡像源下載,本書采取的鏡像是從/centos/7/isos/x86_64/中下載的CentOS-7-x86_64-Minimal1908.iso(最小化安裝版本,共942MB),下載其他鏡像亦可。注意2.1Linux環(huán)境搭建

需求資源準(zhǔn)備好后將進(jìn)行VMwareWorkstation虛擬機(jī)的安裝,在Windows系統(tǒng)下進(jìn)行VMwareWorkstation虛擬機(jī)的安裝較簡單,在此不再贅述(需要注意的是,要盡量選擇和Windows操作系統(tǒng)版本對等的虛擬機(jī)軟件)。VMware虛擬機(jī)安裝完成后,進(jìn)入如圖2-1所示的虛擬機(jī)軟件管理界面。2.1.1安裝部署虛擬機(jī)圖2-1VMware虛擬機(jī)軟件管理界面2.1Linux環(huán)境搭建

單擊“創(chuàng)建新的虛擬機(jī)”選項(xiàng),然后在彈出的“新建虛擬機(jī)向?qū)А睂υ捒蛑羞x中“典型(推薦)(T)”單選按鈕,如圖2-2所示。2.1.1安裝部署虛擬機(jī)圖2-2“新建虛擬機(jī)向?qū)А睂υ捒?.1Linux環(huán)境搭建

單擊“下一步”按鈕,進(jìn)入“安裝客戶機(jī)操作系統(tǒng)”界面,如圖2-3所示。2.1.1安裝部署虛擬機(jī)圖2-3“安裝客戶機(jī)操作系統(tǒng)”界面2.1Linux環(huán)境搭建

選中“稍后安裝操作系統(tǒng)”單選按鈕,然后單擊“下一步”按鈕,進(jìn)入“選擇客戶機(jī)操作系統(tǒng)”界面,如圖2-4所示。2.1.1安裝部署虛擬機(jī)圖2-4“選擇客戶機(jī)操作系統(tǒng)”界面2.1Linux環(huán)境搭建

選擇客戶機(jī)操作系統(tǒng)的類型為“Linux”,版本為“RedHatEnterpriseLinux764位”,然后單擊“下一步”按鈕,進(jìn)入“命名虛擬機(jī)”界面,如圖2-5所示。2.1.1安裝部署虛擬機(jī)圖2-5“命名虛擬機(jī)”界面2.1Linux環(huán)境搭建

填寫“虛擬機(jī)名稱”(可自定義),建議將“位置”設(shè)置為剩余空間較多的分區(qū),單擊“下一步”按鈕,進(jìn)入“指定磁盤容量”界面,如圖2-6所示。2.1.1安裝部署虛擬機(jī)圖2-6“指定磁盤容量”界面2.1Linux環(huán)境搭建

虛擬機(jī)的最大磁盤大小采用默認(rèn)值20GB,并選中“將虛擬磁盤存儲為單個文件”單選按鈕(目的是使文件不那么凌亂),單擊“下一步”按鈕,進(jìn)入“已準(zhǔn)備好創(chuàng)建虛擬機(jī)”界面,如圖2-7所示。2.1.1安裝部署虛擬機(jī)圖2-7“已準(zhǔn)備好創(chuàng)建虛擬機(jī)”界面2.1Linux環(huán)境搭建

單擊“自定義硬件”按鈕,彈出“硬件”對話框,可將虛擬機(jī)系統(tǒng)內(nèi)存設(shè)置為1024MB,具體視計(jì)算機(jī)的配置而定,如圖2-8所示。2.1.1安裝部署虛擬機(jī)圖2-8“硬件”對話框2.1Linux環(huán)境搭建

繼續(xù)選擇光驅(qū)設(shè)備“新CD/DVD(SATA)”選項(xiàng),在右側(cè)界面中選中“使用ISO映像文件”單選按鈕,并選擇下載好的CentOS7系列鏡像文件,如圖2-9所示。2.1.1安裝部署虛擬機(jī)圖2-9設(shè)置虛擬機(jī)光驅(qū)設(shè)備2.1Linux環(huán)境搭建

選擇“網(wǎng)絡(luò)適配器”選項(xiàng),VMware虛擬機(jī)提供了橋接模式、NAT模式和僅主機(jī)模式3種可選的網(wǎng)絡(luò)模式。這里采用默認(rèn)的“NAT模式”,如圖2-10所示。2.1.1安裝部署虛擬機(jī)圖2-10設(shè)置虛擬機(jī)網(wǎng)絡(luò)適配器界面2.1Linux環(huán)境搭建

根據(jù)實(shí)際情況進(jìn)行配置,然后單擊“關(guān)閉”按鈕,返回到“已準(zhǔn)備好創(chuàng)建虛擬機(jī)”界面,單擊“完成”按鈕,進(jìn)入虛擬機(jī)配置成功界面,如圖2-11所示。2.1.1安裝部署虛擬機(jī)圖2-11虛擬機(jī)配置成功界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

如果虛擬機(jī)系統(tǒng)的前期配置順利完成,就可以在虛擬機(jī)管理器界面中單擊“開啟此虛擬機(jī)”按鈕,幾秒鐘后就能看到CentOS7系統(tǒng)安裝界面,如圖2-12所示。在界面中有3個選項(xiàng),分別是安裝CentOS7系統(tǒng)、校驗(yàn)光盤并安裝CentOS7系統(tǒng)和系統(tǒng)救援模式。此時單擊進(jìn)入虛擬機(jī)系統(tǒng)中,并用方向鍵選擇第一個選項(xiàng)“InstallCentOS7”來安裝Linux系統(tǒng)。2.1Linux環(huán)境搭建圖2-12CentOS7系統(tǒng)安裝界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

按Enter鍵加載系統(tǒng)鏡像并進(jìn)行安裝,如圖2-13所示。2.1Linux環(huán)境搭建圖2-13系統(tǒng)安裝初始化2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

如圖2-14所示,選擇在安裝過程中所使用的語言,可以采取默認(rèn),也可以選擇“中文”,然后單擊“繼續(xù)”按鈕。2.1Linux環(huán)境搭建圖2-14選擇安裝過程中所使用的語言2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

如圖2-15所示,在系統(tǒng)安裝主界面中,重點(diǎn)是完成安裝位置、網(wǎng)絡(luò)和主機(jī)名兩項(xiàng)的設(shè)置,安裝位置采取默認(rèn)方式即可,而網(wǎng)絡(luò)和主機(jī)名的設(shè)置如圖2-16所示。2.1Linux環(huán)境搭建圖2-15系統(tǒng)安裝主界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

在圖2-16中開啟網(wǎng)絡(luò)連接“打開”狀態(tài),如果一切正常,將會獲取到IP地址(可能與圖中的不同),最后單擊左上角的“完成”按鈕。2.1Linux環(huán)境搭建圖2-16網(wǎng)絡(luò)和主機(jī)名設(shè)置界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

返回到圖2-15所示的系統(tǒng)安裝主界面中,單擊“開始安裝”按鈕,將顯示系統(tǒng)安裝進(jìn)度和一個重要的設(shè)置,即“ROOT密碼”設(shè)置,如圖2-17所示。2.1Linux環(huán)境搭建圖2-17CentOS7系統(tǒng)安裝配置界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

選擇“ROOT密碼”選項(xiàng),進(jìn)入“ROOT密碼”界面,如圖2-18所示,做實(shí)驗(yàn)時可以輸入弱密碼,如123456。在真正的應(yīng)用環(huán)境中應(yīng)該設(shè)置安全的密碼,若采用的是弱密碼,需要單擊兩次左上角的“完成”按鈕才能完成設(shè)置。2.1Linux環(huán)境搭建圖2-18“ROOT密碼”界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

Linux系統(tǒng)的安裝進(jìn)度視計(jì)算機(jī)的配置情況而定,安裝完成后單擊“重啟”按鈕,如圖2-19所示。2.1Linux環(huán)境搭建圖2-19系統(tǒng)安裝完成界面2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

重啟系統(tǒng)后將會看到系統(tǒng)登錄界面,如圖2-20所示。2.1Linux環(huán)境搭建圖2-20系統(tǒng)登錄界面

輸入用戶名root和密碼123456并按Enter鍵登錄系統(tǒng)。此時輸入的密碼是不可見的,只需要通過鍵盤輸入正確的密碼并按Enter鍵即可。2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

Linux系統(tǒng)大多應(yīng)用于服務(wù)器,而服務(wù)器不可能像PC一樣放在辦公室,而是放在互聯(lián)網(wǎng)數(shù)據(jù)中心(Internetdatacenter,IDC)機(jī)房的,所以登錄Linux系統(tǒng)一般都是通過遠(yuǎn)程登錄的方式。如果是Windows操作系統(tǒng),那么Linux遠(yuǎn)程登錄需要在機(jī)器上額外安裝一個終端軟件。目前比較常見的終端登錄軟件有Xshell、SecureCRT、PuTTY等,不管使用哪一個客戶端軟件,最終的目的只有一個,就是遠(yuǎn)程登錄到Linux服務(wù)器上。這些軟件有很多免費(fèi)版的,這里選擇使用Xshell軟件,Xshell軟件的下載與安裝比較簡單,在此不再贅述。Xshell軟件安裝完成后,為使遠(yuǎn)程連接后漢字不亂碼,需要設(shè)置軟件編碼格式為Unicode(UTF-8),如圖2-21所示。2.1Linux環(huán)境搭建2.1.2安裝系統(tǒng)與遠(yuǎn)程連接圖2-21設(shè)置軟件編碼格式2.1Linux環(huán)境搭建2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

要想遠(yuǎn)程連接Linux服務(wù)器,首先需要知道服務(wù)器的IP地址,如果讀者是按照前面的步驟一步一步安裝的Linux系統(tǒng),那么Linux系統(tǒng)會通過DHCP獲取到IP地址,在Linux系統(tǒng)中可以執(zhí)行ipaddr命令來獲取IP地址。2.1Linux環(huán)境搭建

Linux系統(tǒng)中是通過SSH服務(wù)實(shí)現(xiàn)遠(yuǎn)程登錄功能的,當(dāng)安裝完系統(tǒng)時,這個服務(wù)已安裝好且隨機(jī)啟動,默認(rèn)sshd服務(wù)開啟22端口。在圖2-21所示的界面中輸入ssh40(自己的實(shí)際IP地址)并按Enter鍵登錄,此時會打開如圖2-22所示的提示框。2.1.2安裝系統(tǒng)與遠(yuǎn)程連接2.1Linux環(huán)境搭建圖2-22未知主機(jī)密鑰提示2.1.2安裝系統(tǒng)與遠(yuǎn)程連接

這里是主機(jī)密鑰驗(yàn)證,只有在第一次連接時才會出現(xiàn)這個提示框,單擊“接受并保存”按鈕,后續(xù)按照提示操作即可。如果一切順利,將會出現(xiàn)如圖2-23所示的界面。2.1Linux環(huán)境搭建圖2-23Xshell登錄系統(tǒng)后的窗口及命令行2.1.3配置網(wǎng)絡(luò)服務(wù)

Linux作為服務(wù)器或單機(jī)都可能需要與網(wǎng)絡(luò)中的其他主機(jī)通信,首先要正確配置網(wǎng)絡(luò)。網(wǎng)絡(luò)配置通常包括主機(jī)名、IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器等的設(shè)置。

CentOS7系統(tǒng)自帶hostnamectl工具,使我們能夠輕松地管理系統(tǒng)的主機(jī)名,無須重啟,主機(jī)名可立即生效。2.1Linux環(huán)境搭建1.設(shè)置主機(jī)名2.1.3配置網(wǎng)絡(luò)服務(wù)2.1Linux環(huán)境搭建2.配置網(wǎng)絡(luò)

服務(wù)器對外提供服務(wù)都是通過IP地址進(jìn)行的,同時應(yīng)配置為靜態(tài)的IP地址以保證服務(wù)的可靠性,接下來將通過nmcli命令配置靜態(tài)網(wǎng)絡(luò)信息。2.1.3配置網(wǎng)絡(luò)服務(wù)2.1Linux環(huán)境搭建3.DNS生效順序

Linux下設(shè)置DNS的位置主要有如下3個地方:(1)網(wǎng)卡配置文件中DNS服務(wù)器地址設(shè)置。(2)系統(tǒng)默認(rèn)DNS服務(wù)器地址設(shè)置。(3)hosts文件指定。DNS的生效順序?yàn)閔osts文件→網(wǎng)卡配置文件中DNS服務(wù)器地址→/etc/resolv.conf。2.1.3配置網(wǎng)絡(luò)服務(wù)2.1Linux環(huán)境搭建4.關(guān)閉防火墻和SELinux

為了保證實(shí)驗(yàn)的順暢性,建議在前期學(xué)習(xí)及練習(xí)階段,可以暫時關(guān)閉防火墻和SELinux,在生產(chǎn)環(huán)境中應(yīng)根據(jù)實(shí)際應(yīng)用場景設(shè)置防火墻和SELinux。2.1.3配置網(wǎng)絡(luò)服務(wù)2.1Linux環(huán)境搭建5.配置SSH免密登錄

Hadoop集群中是通過SSH免密登錄其他主機(jī)的,為了方便操作,需要設(shè)置SSH免密登錄;如不設(shè)置,每次啟動或者停止時都需重新輸入密碼。2.1.4安裝并配置JDK

JRE包只包含Java運(yùn)行時環(huán)境(Javaruntimeenvironment),若要開發(fā)Java應(yīng)用程序,則需要安裝JDK包,此處建議安裝JDK包??梢酝ㄟ^YUM方式進(jìn)行安裝,也可以訪問Oracle官網(wǎng)(/index.html)或/archive/下載Linux相應(yīng)的安裝包進(jìn)行安裝。進(jìn)入Oracle官網(wǎng),找到相應(yīng)位置進(jìn)行下載,如圖2-24所示。2.1Linux環(huán)境搭建圖2-24在Oracle官網(wǎng)下載JDK安裝包2.1.4安裝并配置JDK

本書采用的是JavaSE8u241版本號的rpm安裝包,如圖2-25所示。2.1Linux環(huán)境搭建圖2-25下載JDK的rpm安裝包

也可以通過其他途徑進(jìn)行下載,下載后通過WinSCP/FileZilla等工具上傳到Linux系統(tǒng)中并進(jìn)行安裝。2.1.4安裝并配置JDK

從顯示的路徑信息可知,Javac安裝在/usr/java/jdk1.8.0_241-amd64目錄中,稍后會在修改Hadoop配置文件中的環(huán)境變量時用到。2.1Linux環(huán)境搭建2.2Hadoop環(huán)境變量配置

在搭建Hadoop集群時,采用root賬戶會減少一些權(quán)限上的錯誤,而在實(shí)際環(huán)境中采用root賬戶將會帶來安全隱患。本書的實(shí)驗(yàn)都是通過hadoop賬戶來進(jìn)行的,因此前期需要做一些準(zhǔn)備工作。2.2.1下載及解壓Hadoop壓縮包

進(jìn)入Apache官網(wǎng)(),在Downloads下拉列表中選擇Distribution選項(xiàng),如圖2-26所示。2.2Hadoop環(huán)境變量配置圖2-26Apache網(wǎng)站下載Hadoop入口1234562.2.1下載及解壓Hadoop壓縮包

進(jìn)入Apache的所有產(chǎn)品分支下載界面中,選擇hadoop選項(xiàng),進(jìn)一步選擇common→hadoop-2.10.0→hadoop-2.10.0.tar.gz進(jìn)行下載,如圖2-27所示。2.2Hadoop環(huán)境變量配置圖2-27Hadoop下載地址及版本2.2.1下載及解壓Hadoop壓縮包

下載后通過WinSCP/FileZilla等工具上傳到hadoop用戶家目錄的soft目錄,并解壓到hadoop目錄。2.2Hadoop環(huán)境變量配置2.2.1下載及解壓Hadoop壓縮包

Hadoop安裝目錄中常用目錄說明如表2-2所示。2.2Hadoop環(huán)境變量配置表2-2Hadoop安裝目錄中常用目錄說明2.2.2設(shè)置Hadoop環(huán)境變量

運(yùn)行Hadoop必須設(shè)置很多環(huán)境變量,可是如果每次登錄都要設(shè)置,就顯得很麻煩,因此可以在~/.bash_profile文件中設(shè)置每次用戶登錄時都會自動運(yùn)行加載一次的環(huán)境變量。2.2Hadoop環(huán)境變量配置2.2.3修改hadoop-env.sh量

要讓Hadoop可以正常運(yùn)行起來,還需要對Hadoop進(jìn)行一些基礎(chǔ)配置。hadoop-env.sh是Hadoop的配置文件,在配置文件中需要正確設(shè)置Java的安裝路徑。2.2Hadoop環(huán)境變量配置2.2.4規(guī)劃部署Hadoop實(shí)驗(yàn)環(huán)境

為了后續(xù)實(shí)驗(yàn)環(huán)境的純凈性,建議完成前面的基礎(chǔ)配置后,對虛擬機(jī)做一個快照備份,當(dāng)實(shí)驗(yàn)出現(xiàn)問題時,可以還原到基礎(chǔ)狀態(tài)。本書為了實(shí)驗(yàn)的清晰及后續(xù)集群實(shí)驗(yàn)的成功,對部署好的虛擬機(jī)復(fù)制多份,同時對后期設(shè)備的主機(jī)名稱、IP地址及功能做了規(guī)劃部署,如表2-3所示。2.2Hadoop環(huán)境變量配置表2-3主機(jī)名稱、IP地址及功能對應(yīng)表2.2.4規(guī)劃部署Hadoop實(shí)驗(yàn)環(huán)境

當(dāng)啟動復(fù)制多份Linux系統(tǒng)時,將彈出如圖2-28所示的提示框,單擊“我已復(fù)制該虛擬機(jī)”按鈕即可,此時會重新分配MAC地址。2.2Hadoop環(huán)境變量配置圖2-28單擊“我已復(fù)制該虛擬機(jī)”按鈕

還有一個關(guān)鍵點(diǎn),后續(xù)所寫的prehadoop、master、slave1和slave2是主機(jī)名稱,需要與/etc/hosts中的配置相映射,同時還要確保hadoop用戶可通過SSH+主機(jī)名方式免密登錄每一臺設(shè)備(包括自己),請參照“2.1.3配置網(wǎng)絡(luò)服務(wù)”中的“5.配置SSH免密登錄”知識點(diǎn)進(jìn)行配置。2.3Hadoop的安裝模式

Hadoop的安裝模式可以分為單機(jī)模式、偽分布式模式和完全分布式模式3種,而不同的模式所體現(xiàn)的性能也截然不同,接下來將進(jìn)行3種模式的安裝與配置。單機(jī)模式偽分布式模式完全分布式2.3.1單機(jī)安裝與配置

單機(jī)模式是Hadoop的默認(rèn)安裝模式,即解壓縮就是單機(jī)模式,這種模式所需的系統(tǒng)資源在3種模式中是最少的,這種模式下也不需要修改其他配置文件。

2.3Hadoop的安裝模式圖2-29查看Hadoop版本信息

(1)執(zhí)行命令hadoopversion查看Hadoop是否安裝成功,若出現(xiàn)如圖2-29所示的界面,則表示安裝成功。2.3.1單機(jī)安裝與配置

(2)目前在單機(jī)模式下也可以執(zhí)行sbin目錄里的start-dfs.sh命令,執(zhí)行前須確認(rèn)hadoop用戶可通過SSH+主機(jī)名方式免密登錄自己設(shè)備,請參照“2.1.3配置網(wǎng)絡(luò)服務(wù)”中的“5.配置SSH免密登錄”知識點(diǎn)進(jìn)行配置。2.3Hadoop的安裝模式

以上可正常啟動,說明單機(jī)模式配置成功,基本配置的方法也差不多掌握了,這時可以通過執(zhí)行“hadoopfs-ls/”或者“hdfsdfs-ls/”命令查看HDFS單機(jī)部署目錄結(jié)構(gòu)。

按照表2-3所示的規(guī)劃,打開prehadoop主機(jī)進(jìn)行此次實(shí)驗(yàn)。接下來需要對Hadoop的配置文件進(jìn)行設(shè)置,包括hadoop-env.sh、core-site.xml、hdfs-site.xml等。Hadoop的配置文件都在/etc/hadoop目錄中,偽分布式或完全分布式的安裝就是在單機(jī)安裝的基礎(chǔ)上根據(jù)實(shí)際情況修改表2-4中的文件。2.3.2偽分布式安裝與配置

單機(jī)的Hadoop完全體現(xiàn)不了Hadoop的分布式效果,而完全分布式的部署對設(shè)備的要求也較高,折中就是偽分布式部署。它是指在一臺機(jī)器上模擬分布式效果,其主要功能是用于測試和前期基礎(chǔ)學(xué)習(xí)。2.3Hadoop的安裝模式2.3.2偽分布式安裝與配置2.3Hadoop的安裝模式表2-4Hadoop常用配置文件及功能描述2.3.2偽分布式安裝與配置2.3Hadoop的安裝模式1.hadoop-env.sh配置文件

hadoop-env.sh中必須設(shè)置Java的安裝路徑,而前期已經(jīng)進(jìn)行了相應(yīng)的JDK配置。2.3.2偽分布式安裝與配置2.3Hadoop的安裝模式2.core-site.xml配置文件

core-site.xml文件配置訪問Hadoop集群的主要信息。fs.defaultFS是指默認(rèn)文件系統(tǒng)名稱;hdfs://prehadoop:9000是指外部可以通過此方式找到集群,prehadoop是主機(jī)名,需要在/etc/hosts文件中添加IP地址和主機(jī)名的映射關(guān)系;而hadoop.tmp.dir是設(shè)置存放基礎(chǔ)配置內(nèi)容的臨時目錄,默認(rèn)在/tmp/hadoop-${}下,但是系統(tǒng)重啟后很有可能刪除/tmp下的文件而顯得不安全,所以指向其他路徑以確保安全性。

9000端口是FileSystem默認(rèn)的端口號,8020端口是NameNode節(jié)點(diǎn)Active狀態(tài)下的端口號,都可以使用。注意2.3.2偽分布式安裝與配置2.3Hadoop的安裝模式2.core-site.xml配置文件2.3.2偽分布式安裝與配置2.3Hadoop的安裝模式3.hdfs-site.xml配置文件

hdfs-site.xml用于設(shè)置HDFS分布式文件系統(tǒng),其中dfs.replication代表文件保存副本數(shù),默認(rèn)為3。由于選擇偽分布式部署,因此設(shè)置為1。

此時偽分布式部署已經(jīng)就緒,可以直達(dá)“2.4Hadoop的格式化與啟動驗(yàn)證”進(jìn)行操作。2.3.3完全分布式安裝與配置2.3Hadoop的安裝模式

偽分布式主要是基于單個節(jié)點(diǎn)的,而完全分布式則是基于兩個及多個節(jié)點(diǎn)完成搭建的。完全分布式和偽分布式的搭建,主要區(qū)別體現(xiàn)在core-site.xml和hdfs-site.xml的配置上,完全分布式會包含更多的內(nèi)容。按照表2-3所示的規(guī)劃,打開master、slave1和slave2主機(jī)進(jìn)行此處的實(shí)驗(yàn)。2.3.3完全分布式安裝與配置2.3Hadoop的安裝模式

接下來在master主機(jī)中對Hadoop的配置文件進(jìn)行設(shè)置,包括hadoop-env.sh、core-site.xml和hdfs-site.xml。

(1)hadoop-env.sh配置文件。則請參照“2.3.2偽分布式安裝與配置”中的知識點(diǎn)進(jìn)行配置。

(2)core-site.xml配置文件。請參照“2.3.2偽分布式安裝與配置”中的知識點(diǎn)進(jìn)行配置。

(3)hdfs-site.xml配置文件。hdfs-site.xml配置文件在完全分布式中可以采取默認(rèn)配置方式,若不配置,則NameNode和DataNode的保存路徑在core-site.xml中配置hadoop.tmp.dir目錄下,而SecondaryNameNode進(jìn)程是在主節(jié)點(diǎn)下的。為保證安全性和可靠性,增加名稱節(jié)點(diǎn)的路徑和本地文件系統(tǒng)數(shù)據(jù)節(jié)點(diǎn)的路徑,并可設(shè)置SecondaryNameNode的HTTP通信地址,更多選項(xiàng)配置請查閱官方相關(guān)資料。2.3.3完全分布式安裝與配置2.3Hadoop的安裝模式2.3.3完全分布式安裝與配置2.3Hadoop的安裝模式

(4)配置slaves文件。slaves文件存放的是DataNode(數(shù)據(jù)節(jié)點(diǎn)),先刪除slaves文件中之前的localhost內(nèi)容,然后在slaves文件中寫入slave節(jié)點(diǎn),此處設(shè)置的是master、slave1和slave2。

需要注意的是,這里的master、slave1和slave2是主機(jī)名稱,需要在/etc/hosts文件中做好IP地址和主機(jī)名稱的映射。2.3.3完全分布式安裝與配置2.3Hadoop的安裝模式

(5)復(fù)制master主機(jī)的Hadoop配置至slave1、slave2服務(wù)器。

此時完全分布式部署已經(jīng)就緒,可以直達(dá)“2.4Hadoop的格式化與啟動驗(yàn)證”進(jìn)行操作。2.4.1創(chuàng)建并格式化HDFS目錄2.4Hadoop的格式化與啟動驗(yàn)證

Hadoop搭建的不管是偽分布式還是完全分布式,格式化與啟動驗(yàn)證的步驟是一致的。

第一次啟動Hadoop之前,必須格式化HDFS實(shí)現(xiàn)集群的初始化。執(zhí)行命令“hdfsnamenode-format”。當(dāng)出現(xiàn)如圖2-30所示的信息時即表示格式化成功。圖2-30Hadoop格式化成功2.4.2確認(rèn)集群服務(wù)器之間可SSH免密登錄2.4Hadoop的格式化與啟動驗(yàn)證

再次確認(rèn)/etc/hosts文件中是否增加IP地址和主機(jī)名稱的映射關(guān)系,使用ssh工具登錄到每一臺服務(wù)器(包括自己),執(zhí)行命令“ssh主機(jī)名”,確認(rèn)每臺集群服務(wù)器均可SSH免密登錄。若無法SSH免密登錄,請參照“2.1.3配置網(wǎng)絡(luò)服務(wù)”中的“5.配置SSH免密登錄”知識點(diǎn)進(jìn)行配置。2.4.3啟動HDFS集群2.4Hadoop的格式化與啟動驗(yàn)證

在Hadoop的sbin目錄下有很多啟動腳本,可以根據(jù)需求啟動/停止Hadoop的守護(hù)進(jìn)程,相關(guān)作用如表2-5所示。表2-5啟動/停止腳本作用對應(yīng)表

啟動集群時,建議一個一個啟動守護(hù)進(jìn)程,方便啟動失敗時的排錯。2.4.3啟動HDFS集群2.4Hadoop的格式化與啟動驗(yàn)證

根據(jù)“2.3.2偽分布式安裝與配置”的搭建環(huán)境啟動HDFS守護(hù)進(jìn)程。1.偽分布式啟動HDFS守護(hù)進(jìn)程

由于偽分布所有功能都部署在一臺機(jī)器上,目前啟動了HDFS守護(hù)進(jìn)程,從jps查詢返回的結(jié)果可以得知Hadoop已經(jīng)正常啟動(包含NameNode、DataNode和SecondaryNameNode)。2.4.3啟動HDFS集群2.4Hadoop的格式化與啟動驗(yàn)證

根據(jù)“2.3.3完全分布式安裝與配置”的搭建環(huán)境啟動HDFS守護(hù)進(jìn)程。2.完全分布式啟動HDFS守護(hù)進(jìn)程

根據(jù)“2.3.3完全分布式安裝與配置”,目前啟動了HDFS守護(hù)進(jìn)程,從jps查詢返回的結(jié)果可知達(dá)到了預(yù)期的效果,master是NameNode,slave1是SecondaryNameNode,master、slave1和slave2都是DataNode。相應(yīng)的進(jìn)程都已經(jīng)啟動到位。2.4.4Web驗(yàn)證集群HDFS2.4Hadoop的格式化與啟動驗(yàn)證

不管是偽分布式還是完全分布式,如果使用jps命令查看守護(hù)進(jìn)程運(yùn)行正常,則可通過Web方式訪問http://NameNode主機(jī)IP地址或主機(jī)名稱:50070,如圖2-31所示。圖2-31HDFS的Web界面2.4.4Web驗(yàn)證集群HDFS2.4Hadoop的格式化與啟動驗(yàn)證

在完全分布式環(huán)境下通過Web訪問SecondaryNameNode管理界面,如圖2-32所示。圖2-32SecondaryNameNode界面2.4.4Web驗(yàn)證集群HDFS2.4Hadoop的格式化與啟動驗(yàn)證

如果打開SecondaryNameNode界面時無信息顯示,那么需要修改hadoop/hadoop-2.10.0/share/hadoop/hdfs/webapps/static/路徑下的dfs-dust.js文件,將其中的第61行修改如下:

而對經(jīng)過源碼編譯后安裝的Hadoop則不存在這個問題。2.5實(shí)訓(xùn)2Hadoop的安裝與基本配置——偽分布式1.實(shí)訓(xùn)目的(1)掌握Hadoop環(huán)境的基礎(chǔ)搭建與環(huán)境變量設(shè)置;(2)掌握J(rèn)avaJDK的安裝與檢驗(yàn);(3)掌握偽分布式Hadoop的安裝與配置;(4)掌握修改Hadoop的若干配置文件使得Hadoop的相關(guān)守護(hù)進(jìn)程能正常啟動;(5)掌握在虛擬機(jī)中備份與恢復(fù)操作系統(tǒng)的方法。(1)Linux系統(tǒng)內(nèi)存推薦1GB,盡量根據(jù)自己的物理設(shè)備進(jìn)行調(diào)整;(2)虛擬機(jī)中的網(wǎng)絡(luò)采用默認(rèn)方式,暫不更改,僅將網(wǎng)卡啟用;(3)虛擬機(jī)系統(tǒng)IP地址采取靜態(tài)IP地址,為XXX.XXX.XXX.YY(YY代表學(xué)號后兩位);(4)創(chuàng)建hadoop用戶,后續(xù)在hadoop用戶下操作;(5)設(shè)置系統(tǒng)主機(jī)名為姓名拼音(如zhangsan),并在/etc/hosts文件中建立IP地址和主機(jī)名稱的映射關(guān)系;(6)下載、上傳、解壓Hadoop壓縮包軟件到hadoop用戶家目錄(可自定);(7)設(shè)置hadoop.tmp.dir為用戶家目錄下的prehadoop目錄;(8)Hadoop的格式化與啟動驗(yàn)證;(9)通過Web訪問瀏覽查看;(10)Hadoop搭建好后進(jìn)行快照備份與恢復(fù)實(shí)驗(yàn)。2.5實(shí)訓(xùn)2Hadoop的安裝與基本配置——偽分布式2.實(shí)訓(xùn)內(nèi)容(1)按題目要求寫出相應(yīng)的實(shí)驗(yàn)步驟(“文字+截圖”方式);(2)總結(jié)實(shí)訓(xùn)心得與體會。2.5實(shí)訓(xùn)2Hadoop的安裝與基本配置——偽分布式3.實(shí)訓(xùn)要求感謝聆聽Hadoop文件系統(tǒng)033.1HDFS簡介3.2HDFS架構(gòu)3.3HDFS讀寫文件流程3.4HDFS接口3.5實(shí)訓(xùn)3Hadoop的安裝與基本配置——完全分布式知道HDFS的架構(gòu)及相關(guān)概念;知道HDFS文件讀寫流程及副本存放策略;知道HDFS的幾種接口類型及接口的應(yīng)用場景;掌握HDFSWeb接口的登錄和驗(yàn)證方法。1243

本模塊講解Hadoop文件系統(tǒng)(HDFS)架構(gòu)、讀寫文件流程和HDFS接口,使讀者能夠掌握相關(guān)知識,為后續(xù)學(xué)習(xí)打好基礎(chǔ)。HDFS架構(gòu)中主要涉及幾個概念和對應(yīng)的設(shè)置,讀寫文件流程通過圖文并茂的方式進(jìn)行講解,最后通過HDFS的Web接口對前面所做的講解和配置進(jìn)行驗(yàn)證。通過本模塊的學(xué)習(xí),讀者將達(dá)到以下職業(yè)能力目標(biāo)和要求:目標(biāo)和要求Hadoop文件系統(tǒng)3.1HDFS簡介HDFS(Hadoopdistributedfilesystem)是ApacheHadoop分布式文件系統(tǒng)。隨著物聯(lián)網(wǎng)的出現(xiàn)和信息技術(shù)的不斷發(fā)展,數(shù)據(jù)正以超快的速度增長,數(shù)據(jù)存儲成為需要直接面對的問題,而HDFS的設(shè)計(jì)思想正好適應(yīng)當(dāng)前大數(shù)據(jù)爆發(fā)的形勢。HDFS適合運(yùn)行在閑置/廉價的硬件集群上,通過流式文件的訪問方式來存取大文件,其具有以下幾點(diǎn)優(yōu)勢:(1)高容錯性(數(shù)據(jù)保存多個副本,能夠防止數(shù)據(jù)丟失,確保數(shù)據(jù)安全)。(2)數(shù)據(jù)存取速率快(一次寫入,多次讀取,并且選擇近的節(jié)點(diǎn)進(jìn)行讀寫操作)。(3)適合大數(shù)據(jù)批量文件處理(節(jié)點(diǎn)規(guī)??梢酝卣沟匠砂偕锨€節(jié)點(diǎn),提供很大的數(shù)據(jù)帶寬進(jìn)行文件處理)。(4)兼容各種軟硬件平臺。3.2HDFS架構(gòu)HDFS可以說是一切大數(shù)據(jù)平臺的基礎(chǔ),因?yàn)樗哂懈咝阅堋⒏呖煽啃?、高擴(kuò)展性、高吞吐率等優(yōu)點(diǎn),正是這些優(yōu)點(diǎn)為大數(shù)據(jù)的存儲、處理提供了強(qiáng)大的底層存儲架構(gòu)。HDFS采取的是Master/Slave架構(gòu)方式,由客戶端、NameNode、DataNode和SecondaryNameNode構(gòu)成,這些在集群中都是以節(jié)點(diǎn)的形式存在的,每個節(jié)點(diǎn)運(yùn)行不同類型的守護(hù)進(jìn)程。HDFS主要架構(gòu)示意圖如圖3-1所示。圖3-1HDFS主要架構(gòu)示意圖3.2HDFS架構(gòu)3.2.1blockHDFS中是按照塊(block)來存儲數(shù)據(jù)的,客戶端存儲時會按照協(xié)議將大文件劃分為一系列的塊,NameNode存儲文件的元數(shù)據(jù),DataNode存儲實(shí)際的數(shù)據(jù)塊,同時會根據(jù)性能、負(fù)載等情況均勻地分散在不同的DataNode節(jié)點(diǎn)中。Hadoop數(shù)據(jù)塊從2.7.2的默認(rèn)64MB變?yōu)?.7.3的默認(rèn)128MB,也可以通過Hadoop中的hdfssite.xml文件修改默認(rèn)數(shù)據(jù)塊大小。3.2HDFS架構(gòu)3.2.1block例如,某個300MB大小的文件,修改block大小之前(默認(rèn)為128MB),其在HDFS中的實(shí)際存儲情況如圖3-2所示。圖3-2HDFS默認(rèn)配置下的文件塊分布HDFS存儲時,只占據(jù)每塊實(shí)際容量大小,如圖3-2中剩余的第三塊只占據(jù)了44MB,而不是128MB。如果設(shè)置的塊大小為300MB,則只需要一個塊就解決了,尋址的開銷就會被最小化,不過數(shù)據(jù)塊不是設(shè)置得越大越好,雖然數(shù)據(jù)塊設(shè)置得越大,mapper就越少,但mapper失敗之后重啟的時間也越長。3.2HDFS架構(gòu)3.2.2NameNodeNameNode(元數(shù)據(jù)節(jié)點(diǎn))是HDFS的主進(jìn)程,整個集群中只有一個,維護(hù)著整個文件系統(tǒng)的目錄樹,管理著數(shù)據(jù)塊(block)映射信息,NameNode可以被認(rèn)為是一個調(diào)度者,而DataNode就是一個命令執(zhí)行者,只能被動地讀寫數(shù)據(jù)塊。當(dāng)NameNode啟動時它會將存儲在本地的fsimage(元數(shù)據(jù)鏡像文件,保存著文件系統(tǒng)的目錄樹)和edits(元數(shù)據(jù)操作日志,保存著對目錄樹的修改操作)中的內(nèi)容寫入內(nèi)存中已實(shí)例化的元數(shù)據(jù)(metadata)中,當(dāng)metadata在內(nèi)存中的大小或操作數(shù)超過一定閾值時,則會寫入硬盤中存儲使之持久化。3.2HDFS架構(gòu)3.2.3DataNodeDataNode(數(shù)據(jù)節(jié)點(diǎn))是HDFS的從進(jìn)程,所有的存儲從節(jié)點(diǎn)上都應(yīng)該有此進(jìn)程。DataNode會按照客戶端或者NameNode的要求,針對特定的數(shù)據(jù)塊進(jìn)行讀寫和復(fù)制操作。為了保證文件在設(shè)備上的安全性,可以通過Hadoop中的hdfs-site.xml文件來修改每個數(shù)據(jù)塊在集群中保存的份數(shù)。數(shù)值越高,冗余性就越好,相對占用的存儲空間就越多。由于HDFS采用的是Master/Slave架構(gòu),因此還可以實(shí)時動態(tài)地向集群中增加或刪除DataNode節(jié)點(diǎn)。3.2HDFS架構(gòu)3.2.4SecondaryNameNodeSecondaryNameNode(輔助元數(shù)據(jù)節(jié)點(diǎn))并非NameNode的備份,而是NameNode的輔助節(jié)點(diǎn),定期從NameNode請求fsimage和edits文件,然后把fsimage和edits文件合并成新的fsimage文件,NameNode從SecondaryNameNode獲取合并好的新的fsimage文件并將舊的替換掉,如圖3-3所示。圖3-3SecondaryNameNode輔助NameNode示意圖3.2HDFS架構(gòu)3.2.5客戶端客戶端(client)上應(yīng)該有NameNode訪問協(xié)議(如IP、端口和協(xié)議等),以及相關(guān)支持的命令和jar包,客戶端從NameNode獲取文件相關(guān)信息,最終是直接從DataNode進(jìn)行讀/寫數(shù)據(jù)操作。HDFS提供了非常多的訪問接口,包括Shell接口、JavaAPI接口、自帶的Web接口等,不管采用哪種方式去訪問HDFS,都會調(diào)用相關(guān)的jar包,jar包中的程序會根據(jù)約定規(guī)則主動去訪問NameNode并取得相關(guān)服務(wù)。3.2HDFS架構(gòu)3.2.6副本存放策略在HDFS中,一個文件會被拆分為一個或多個數(shù)據(jù)塊。默認(rèn)情況下,每個數(shù)據(jù)塊都會有3個副本,而每個副本都會被存放在不同的機(jī)器上,同時每一個副本都有自己唯一的編號,副本的存放策略如圖3-4所示。圖3-4HDFS副本的存放策略示意圖3.2HDFS架構(gòu)3.2.6副本存放策略副本存放策略(1)第1個副本:放在上傳文件的DataNode;若是集群外提交,則會隨機(jī)選擇,但是不會選擇存儲過滿、CPU太忙的節(jié)點(diǎn)。(2)第2個副本:放在與第1個副本不同且隨機(jī)選擇的機(jī)架上的節(jié)點(diǎn)上。(3)第3個副本:放在與第2個副本相同機(jī)架上的不同節(jié)點(diǎn)上。(4)剩余的副本隨機(jī)選擇節(jié)點(diǎn)。3.2HDFS架構(gòu)3.2.7安全模式系統(tǒng)啟動時,NameNode進(jìn)入安全模式,將會對各個DataNode上所擁有的數(shù)據(jù)塊列表對進(jìn)行數(shù)據(jù)報告的收集,若數(shù)據(jù)塊達(dá)到最小副本數(shù),則可能等待十幾秒就會退出安全模式狀態(tài)。若不滿足最小副本數(shù)值要求,則該塊會復(fù)制到其他DataNode以滿足最小值。安全模式下不能進(jìn)行文件系統(tǒng)的任何修改,可以通過命令退出、進(jìn)入、查看NameNode的安全模式。3.3HDFS讀寫文件流程HDFS有一個DFS(分布式文件系統(tǒng))實(shí)例,客戶端通過調(diào)用這個實(shí)例的創(chuàng)建create()方法就可以在HDFS上創(chuàng)建文件。假設(shè)請求存儲300MB的文件d(HDFS采用默認(rèn)塊大小128MB),這個寫入流程示意圖如圖3-5所示。3.3.1HDFS寫文件流程圖3-5數(shù)據(jù)寫入流程示意圖3.3HDFS讀寫文件流程3.3.1HDFS寫文件流程(1)客戶端使用HDFS提供的接口,向NameNode發(fā)起寫文件請求。(2)NameNode通過執(zhí)行不同的檢查來確保這個文件不存在,而且客戶端有新建該文件的權(quán)限。如果檢查都通過了,NameNode就會為文件創(chuàng)建一個文件元數(shù)據(jù)(meta)記錄,同時響應(yīng)可以上傳文件;反之,則向客戶端拋出一個異常。(3)客戶端寫入文件數(shù)據(jù)到本地文件系統(tǒng)的一個臨時文件。(4)待臨時文件達(dá)到塊大小(默認(rèn)為128MB)時,開始向NameNode發(fā)出請求(上傳第1個數(shù)據(jù)塊),請求返回DataNode信息。(5)NameNode在文件系統(tǒng)中進(jìn)行遍歷,尋找數(shù)據(jù)節(jié)點(diǎn)DataNode,選定后在文件元數(shù)據(jù)中進(jìn)行記錄,并返回給客戶端相關(guān)數(shù)據(jù)塊及其對應(yīng)DataNode的地址列表(列表中包含副本存放的地址等信息),假設(shè)返回存儲d1數(shù)據(jù)塊DataNodes節(jié)點(diǎn)為Node1、Node2和Node11。3.3HDFS讀寫文件流程3.3.1HDFS寫文件流程(6)客戶端通過返回的信息,以數(shù)據(jù)包(一般為4KB)的形式上傳給第一個DataNode,DataNode在把數(shù)據(jù)包寫入本地磁盤的同時會向第2個DataNode傳送數(shù)據(jù),當(dāng)然第2個DataNode在把數(shù)據(jù)包寫入本地磁盤的同時會向第3個DataNode傳送數(shù)據(jù),以此類推。最終數(shù)據(jù)包以流水線的形式寫入或備份到所有DataNode節(jié)點(diǎn)。(7)傳送管道(pipeline)中的每個DataNode節(jié)點(diǎn)在收到數(shù)據(jù)后都會向前面的DataNode發(fā)送一個ACK,最后由第一個DataNode向客戶端發(fā)回一個ACK。如果數(shù)據(jù)比較大,就將其分割為多個數(shù)據(jù)塊,并循環(huán)執(zhí)行(4)(5)(6)(7)過程。(8)當(dāng)客戶端收到數(shù)據(jù)塊的確認(rèn)后,認(rèn)為數(shù)據(jù)塊都已經(jīng)持久化到指定的DataNode節(jié)點(diǎn),則會向NameNode發(fā)送一個傳輸完成的ACK確認(rèn)。3.3HDFS讀寫文件流程3.3.2HDFS讀文件流程HDFS有一個文件系統(tǒng)實(shí)例,客戶端通過調(diào)用這個實(shí)例的open()方法就可以打開存儲在HDFS上的文件。假設(shè)請求讀取文件d(d由d1、d2和d3數(shù)據(jù)塊構(gòu)成),這個讀取流程示意圖如圖3-6所示。圖3-6數(shù)據(jù)讀取流程示意圖3.3HDFS讀寫文件流程3.3.2HDFS讀文件流程(1)客戶端使用HDFS提供的接口向NameNode發(fā)起讀文件請求。(2)NameNode會視情況返回文件的部分或全部block列表,同時返回每個block所在的DataNode地址。(3)客戶端收到block相關(guān)信息后,會從副本數(shù)中選取距離客戶端最近的DataNode讀取block數(shù)據(jù)。3.3HDFS讀寫文件流程3.3.2HDFS讀文件流程(4)當(dāng)快要讀取完成當(dāng)前的block數(shù)據(jù)時,為下個block讀取尋找最佳的DataNode節(jié)點(diǎn)。當(dāng)前的block數(shù)據(jù)讀取完畢后,關(guān)閉與該DataNode的連接,連接下個block相關(guān)的DataNode,繼續(xù)進(jìn)行block數(shù)據(jù)讀取。(5)讀取的block都會進(jìn)行checksum校驗(yàn),若有錯,則從副本重新讀取。若數(shù)據(jù)校驗(yàn)都無錯誤,則附加存儲到本地文件系統(tǒng)。3.4HDFS接口3.4.1了解四類接口HDFS可以說是大數(shù)據(jù)處理領(lǐng)域最基礎(chǔ)的存儲服務(wù),它提供了常用的四類統(tǒng)一訪問接口來供上層應(yīng)用。(1)HDFSShell接口。HDFSShell接口主要面向HDFS管理員,通過Shell接口,管理員可以查看HDFS系統(tǒng)級別的統(tǒng)計(jì)信息和文件系統(tǒng)。(2)HDFSJavaAPI接口。HDFSJavaAPI接口主要面向Java開發(fā)工程師,利用此接口進(jìn)行程序開發(fā)、大數(shù)據(jù)計(jì)算等。(3)WebHDFSRESTAPI接口。WebHDFSRESTAPI接口主要面向前端工程師,通過調(diào)用此API,前端工程師能夠開發(fā)一套自定義的Web頁面。(4)HDFS自帶Web接口。HDFS自帶Web接口主要面向HDFS管理員,在此頁面上顯示的信息主要包括HDFS系統(tǒng)級別的統(tǒng)計(jì)信息和文件系統(tǒng),且此頁面只支持讀操作。3.4HDFS接口3.4.2HDFSWeb接口下的驗(yàn)證下面通過HDFSWeb界面驗(yàn)證前面所講的知識點(diǎn),通過Web訪問http://NameNode主機(jī)IP地址或主機(jī)名稱:50070,如圖3-7所示(截取部分)。圖3-7HDFSWeb界面部分截圖3.4HDFS接口3.4.2HDFSWeb接口下的驗(yàn)證從圖3-7中可以驗(yàn)證有3個Live的節(jié)點(diǎn)數(shù),同時也可以通過選擇“Utilities”→“Browsethefilesystem”選項(xiàng)進(jìn)入文件系統(tǒng),并可以查詢“/”根目錄下的文件信息,如圖3-8所示。3.4HDFS接口3.4.2HDFSWeb接口下的驗(yàn)證圖3-8HDFSWeb文件系統(tǒng)接口及瀏覽文件信息3.4HDFS接口3.4.2HDFSWeb接口下的驗(yàn)證圖3-9HDFSWeb文件系統(tǒng)接口從圖3-8中可以看到一個14B大小的HDFSWebTest.txt文件,擁有3個副本,BlockSize大小為128MB,因此該文件應(yīng)當(dāng)占用1個塊,如圖3-9所示。從圖3-9中可確定HDFSWebTest.txt文件塊數(shù),以及Block0的位置信息,分別存放于master、slave2和slave1節(jié)點(diǎn)上。3.5實(shí)訓(xùn)3Hadoop的安裝與基本配置——完全分布式1.實(shí)訓(xùn)目的(1)(2)(3)(4)(5)掌握Hadoop環(huán)境的基礎(chǔ)搭建與環(huán)境變量設(shè)置;掌握J(rèn)avaJDK的安裝與檢驗(yàn);掌握完全分布式Hadoop的安裝與配置;掌握修改Hadoop的配置文件使得Hadoop的相關(guān)守護(hù)進(jìn)程正常啟動的方法;掌握復(fù)制操作系統(tǒng)的方法。2.實(shí)訓(xùn)內(nèi)容(1)Linux系統(tǒng)內(nèi)存推薦1GB,盡量根據(jù)自己的物理設(shè)備進(jìn)行調(diào)整;(2)虛擬機(jī)中的網(wǎng)絡(luò)采用默認(rèn)方式,暫不更改,僅將網(wǎng)卡啟用;(3)虛擬機(jī)系統(tǒng)IP地址采取靜態(tài)IP地址,地址為XXX.XXX.XXX.YY(YY代表學(xué)號后兩位);(4)復(fù)制虛擬機(jī),按照表3-1進(jìn)行環(huán)境搭建;3.5實(shí)訓(xùn)3Hadoop的安裝與基本配置——完全分布式表3-1完全分布式環(huán)境搭建表2.實(shí)訓(xùn)內(nèi)容(5)創(chuàng)建hadoop用戶,后續(xù)在hadoop用戶下操作;(6)設(shè)置系統(tǒng)主機(jī)名為master,并在/etc/hosts文件中建立IP地址和主機(jī)名稱的映射關(guān)系(此處操作master,后續(xù)復(fù)制到slaves節(jié)點(diǎn));(7)下載、上傳、解壓Hadoop壓縮包到hadoop家目錄(可自定);(8)設(shè)置hadoop.t

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論