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