1. 程式人生 > 其它 >【JAVA】基礎結構

【JAVA】基礎結構

Hadoop是一個分散式系統基礎架構,主要解決海量資料的儲存和海量資料的分析計算問題。


 

Hadoop1.x和Hadoop2.x區別:

在Hadoop1.x時代,Hadoop中的MapReduce同時處理計算和資源排程,耦合性較大,

在Hadoop2.x時代,增加了Yarn,Yarn只負責資源的排程,MapReduce只負責運算。


Hadoop組成:

HDFS架構概述

HDFS是一個檔案系統,用於儲存檔案,其次,它是分散式的,由很多伺服器聯合起來實現其功能。

優點

1)高容錯,資料自動儲存多個副本。它通過增加副本的形式,提高容錯性。一個副本丟失之後,它自動恢復。

2)適合處理大資料。

3)可構建在廉價的機器上,通過多副本機制,提高可靠性。

缺點

1)不適合低延時資料訪問,比如毫秒級的儲存資料,是做不到的。

2)無法高效的對大量小檔案進行儲存。儲存大量的小檔案,會佔用NameNode大量的記憶體來儲存檔案目錄和塊資訊。

而且小檔案儲存的定址時間會超過讀取時間,它違反了HDFS的設計目標。

3)不支援併發寫入、檔案隨機修改。一個檔案只能有一個寫,不允許多個執行緒同時寫。僅支援資料追加,不支援檔案

的隨機修改。

HDFS由四部分組成,HDFS Client、NameNode、DataNode和Secondary NameNode。HDFS是一個主/從體系結構,HDFS叢集擁有一個NameNode和一些DataNode。NameNode管理檔案系統的元資料DataNode儲存實際的資料。

HDFS Client:
1、提供一些命令來管理、訪問 HDFS,比如啟動或者關閉HDFS。
2、與 DataNode 互動,讀取或者寫入資料;讀取時,要與 NameNode 互動,獲取檔案的位置資訊;寫入 HDFS 的時候,Client 將檔案切分成 一個一個的Block,然後進行儲存。

NameNode:即Master,
1、管理 HDFS 的名稱空間。
2、管理資料塊(Block)對映資訊
3、配置副本策略
4、處理客戶端讀寫請求。

DataNode:就是Slave。NameNode 下達命令,DataNode 執行實際的操作。
1、儲存實際的資料塊。
2、執行資料塊的讀/寫操作。

Secondary NameNode:並非 NameNode 的熱備。當NameNode 掛掉的時候,它並不能馬上替換 NameNode 並提供服務。


1、輔助 NameNode,分擔其工作量。
2、定期合併 fsimage和fsedits,並推送給NameNode。
3、在緊急情況下,可輔助恢復 NameNode。

Yarn架構概述

YARN 是Hadoop分散式處理框架中的資源管理和作業排程技術。負責將系統資源分配給在 Hadoop 叢集中執行的各種應用程式,並排程要在不同叢集節點上執行的任務。

ResourceManager:

1.處理客戶端請求。
2.監控NodeManager。
3.啟動或監控ApplicationMaster。
4.資源的分配和排程。

NodeManager:

1.管理來自單個節點上的資源。
2.處理來自ResourceManager的命令。
3.處理來自ApplicationMaster的命令。

ApplicationMaster:

1.負責資料的切分。
2.為應用程式申請資源並分配給內部的任務。
3.任務的監控與容錯。

Container:

Container的YARN中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等。

MapReduce架構概述

MapReduce負責海量資料的計算。

工作方式簡單來說就是我們要數圖書館中的所有書。你數1號書架,我數2號書架。這就是“Map”。我們人越多,數書就更快。

現在我們到一起,把所有人的統計數加在一起。這就是“Reduce”。