1.大數(shù)據(jù)是什么
顧名思義大數(shù)據(jù)就是指大量的數(shù)據(jù),大數(shù)據(jù)技術(shù)一般包括采集、處理(批處理/流處理)、存儲(chǔ)、分析、應(yīng)用。通常大數(shù)據(jù)會(huì)有以下5個(gè)特點(diǎn)(大數(shù)據(jù)的5個(gè)"V"):
Volume:指數(shù)據(jù)量大。數(shù)據(jù)的單位從我們熟悉的MB,GB,TB已經(jīng)到了PB、ZB等。
Velocity:指數(shù)據(jù)產(chǎn)生速度快。想象一下,在原來(lái)只采集一棟樓宇的電量用度、溫度變化時(shí)一天可能只會(huì)有少量的數(shù)據(jù),現(xiàn)在隨著發(fā)展在整個(gè)城市中都部署有大量的采集器,這時(shí)候數(shù)據(jù)的生成就不是一開(kāi)始的時(shí)候可以想到的了,也不能通過(guò)傳統(tǒng)的系統(tǒng)再去采集這么大量的數(shù)據(jù)。
Veracity:指數(shù)據(jù)真實(shí)性。大量的數(shù)據(jù)可能會(huì)出現(xiàn)由于人為因素、環(huán)境因素等采集到一些異常的數(shù)據(jù),這種情況下就需要對(duì)異常數(shù)據(jù)進(jìn)行校驗(yàn)、清洗,保障數(shù)據(jù)的真實(shí)性。
Value:指數(shù)據(jù)價(jià)值。我們對(duì)采集到大量的數(shù)據(jù)進(jìn)行建模分析,從中挖掘更深層的價(jià)值,比如通過(guò)對(duì)某地近兩年來(lái)河流的水流量采集可以更好的預(yù)測(cè)汛期,發(fā)出更精準(zhǔn)的預(yù)警,從而避免造成損失。
Variety:指數(shù)據(jù)類(lèi)型繁多。隨著發(fā)展可能由原來(lái)單一的結(jié)構(gòu)化的數(shù)據(jù)變化為多樣的數(shù)據(jù),比如說(shuō)通過(guò)攝像頭采集到的視頻信息、通過(guò)用戶(hù)通過(guò)不同途徑上傳的文件等。
大數(shù)據(jù)具有更大的數(shù)據(jù)量、更快的速度、更多的數(shù)據(jù)類(lèi)型等特點(diǎn)。在一定的數(shù)據(jù)真實(shí)性基礎(chǔ)上,大數(shù)據(jù)技術(shù)最終要為數(shù)據(jù)背后的價(jià)值服務(wù)。
2.Hadoop是什么
Hadoop是一個(gè)開(kāi)源的、高可靠、高擴(kuò)展、高容錯(cuò)、高效的分布式計(jì)算和存儲(chǔ)框架。主要用來(lái)解決大量數(shù)據(jù)的存儲(chǔ)和分析計(jì)算的問(wèn)題。
下面我們通過(guò)對(duì)Hadoop的核心組件介紹來(lái)了解Hadoop到底是什么。
2.1 HDFS
HDFS(Hadoop Distributed File System)是一個(gè)分布式文件系統(tǒng)。
分布式:將大量的文件分批存儲(chǔ)到大量的服務(wù)器上,以便于采取分而治之的方式對(duì)海量數(shù)據(jù)進(jìn)行計(jì)算分析;
文件系統(tǒng):用于存儲(chǔ)文件,通過(guò)文件的元數(shù)據(jù)信息來(lái)定位文件的具體位置。
2.1.1 HDFS架構(gòu)概述:
2.1.1.1 NameNode:
負(fù)責(zé)存儲(chǔ)文件的元數(shù)據(jù),如文件名、文件目錄結(jié)構(gòu)、文件屬性(創(chuàng)建時(shí)間、地址、副本數(shù)、權(quán)限),以及每個(gè)文件的塊列表和塊所在的DataNode等。
2.1.1.2 DataNode:
負(fù)責(zé)在本地文件系統(tǒng)中存儲(chǔ)文件的具體內(nèi)容。
2.1.1.3 SecondaryNameNode(2NN):
負(fù)責(zé)定時(shí)對(duì)NameNode的元數(shù)據(jù)進(jìn)行備份。
2.1.2 HDFS的缺點(diǎn):
不適合存儲(chǔ)大量小文件
占用NameNode大量的內(nèi)存來(lái)存儲(chǔ)文件的元數(shù)據(jù),小文件存儲(chǔ)的尋址時(shí)間超過(guò)讀取時(shí)間。
不適合低延時(shí)數(shù)據(jù)訪問(wèn)
不能像MySQL那樣對(duì)數(shù)據(jù)的可以實(shí)時(shí)訪問(wèn)。
不支持并發(fā)寫(xiě)入、文件隨機(jī)修改
一個(gè)文件在同一時(shí)刻只允許一個(gè)寫(xiě)操作,不允許多個(gè)線程同時(shí)修改,對(duì)文件只支持追加,不可以刪除。
2.2 MapReduce
使用集群進(jìn)行計(jì)算的方式被稱(chēng)為分布式計(jì)算,MapReduce是Hadoop中一個(gè)分布式計(jì)算的組件。
2.2.1 MapReduce架構(gòu)概述:
MapReduce將計(jì)算過(guò)程分為兩個(gè)階段:Map和Reduce。
Map階段并行計(jì)算客戶(hù)端輸入的數(shù)據(jù)。
Reduce階段對(duì)Map階段計(jì)算得到的結(jié)果進(jìn)行匯總。
2.3 YARN
YARN(YetAnotherResourceNegotiator)是資源協(xié)調(diào)者,是Hadoop的資源管理器。
2.3.1 YARN架構(gòu)概述:
2.3.1.1 ResourceManager(RM):
負(fù)責(zé)整個(gè)集群的資源調(diào)度。
2.3.1.2 NodeManager(NM):
負(fù)責(zé)單個(gè)節(jié)點(diǎn)服務(wù)器的資源調(diào)度。
2.3.1.3 Container:
容器,相當(dāng)于一臺(tái)獨(dú)立的服務(wù)器,里面封裝了任務(wù)運(yùn)行所需的資源。
2.3.1.4 ApplicationMaster(AM):
負(fù)責(zé)對(duì)單個(gè)任務(wù)運(yùn)行期間的資源調(diào)度。
2.4 三個(gè)組件的關(guān)系