2011年的時候我們在百度搜索Hadoop相關的問題每天只有零星幾個,2015年再去百度搜索Hadoop已經有800多萬個問題,而如今已然已經過億了,Hadoop已成為大數據必備的基礎設施了。Hadoop被公認是一套行業大數據標準開源軟件,在分布式環境下提供了海量數據的處理能力。幾乎所有主流廠商都圍繞Hadoop開發工具、開源軟件、商業化工具和技術服務。近年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明顯增加了Hadoop方面的投入。那么到底什么是Hadoop?它有什么作用?它的基礎架構是怎么樣的?今天就Hadoop的這些基本概念來做一次簡單的梳理。
一、Hadoop是什么?
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構, 是一個存儲系統+計算框架的軟件框架。主要解決海量數據存儲與計算的問題,是大數據技術中的基石。Hadoop以一種可靠、高效、可伸縮的方式進行數據處理,用戶可以在不了解分布式底層細節的情況下,開發分布式程序,用戶可以輕松地在Hadoop上開發和運行處理海量數據的應用程序。
二、Hadoop能解決什么問題
1、海量數據存儲
HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(High throughput)來訪問數據,適合那些有著超大數據集(large data set)的應用程序,它由n臺運行著DataNode的機器組成和1臺(另外一個standby)運行NameNode進程一起構成。每個DataNode 管理一部分數據,然后NameNode負責管理整個HDFS 集群的信息(存儲元數據)。
2、資源管理,調度和分配
Apache Hadoop YARN(Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統和調度平臺,可為上層應用提供統 一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨 大好處。
三、Hadoop組件架構是什么樣的
看過了Hadoop 的基本介紹之后。我們來了解HDFS 和 YARN的核心架構和原理,先上HDFS框架圖:
看完上面的圖之后,先來思考幾個問題:
1、元數據信息是什么,NameNode是如何維護元數據的,元數據信息如何保障一致性?
NameNode維護了HDFS 集群的元數據信息,包括文件的目錄樹,每個文件對應的數據塊列表,權限設置,副本數等等。
元數據信息存儲在內存里,那么NameNode異常宕機情況下咋辦?
NameNode對元數據的修改包含兩個部分
內存數據修改
修改內存之后寫一條EditLog
再來看兩個概念 FsImage 和 EditLog:
FsImage:FsImage是NameNode內存中元數據的鏡像文件,是元數據的一個永久性checkpoint,包含了HDFS的所有目錄和文件idnode的序列化信息,可以類比銀行的賬戶余額,只有簡單的信息。
EditLog:EditLog是用于銜接內存元數據和FsImage之間的操作日志,保存了自最后一次檢查點之后,所有針對HDFS文件系統的操作,比如增加文件、重命名文件、刪除目錄等等,可以類比銀行的賬戶流水,包括每一筆的記錄,如果日積月累,流水信息可以非常大。
那么如果Editlog變的非常大之后,宕機之后需要讀取Editlog進行恢復元數據,這是一個非常慢點過程。這個時候該StandbyNameNode 節點上場了。Standby 節點從JournalNode集合拉取Editlog,并定時將Editlog合并成FsImage. FsImage是一份合并之后的存量數據信息。同時將FsImage 上傳到ActiveNode節點。
2、NameNode Active 和 standby 之間是如何切換并始終保持一個ActiveNode?
我們可以在上面的HDFS框架圖中看到,鏈接ZK集群和NameNode的組件ZKFC
1、ZKFC 監控NameNode的監控狀態
2、ZKFC 利用ZK提供的主備節點選舉來切換
3、通知和修改NameNode的狀態
4、確認元數據同步完成之后對外提供服務
再來看YARN框架圖:
上圖描述了YARN的一個任務的提交和資源分配流程,在整個過程中涉及到如下的組件:
ResourceManeger:負責所有資源的監控、分配和管理,并處理客戶端請求,啟動和監控AppMaster,NodeManager
NodeManager:單個節點上的資源管理和任務管理,處理ResourceManager,AppMaster 的命令
AppMaster:負責某個具體應用程序的調度和協調,為應用程序申請資源,并對任務進行監控
Container:YARN中的一個動態資源分配的概念,其擁有一定的內存,核數。
一個任務提交的整體流程:
(1)Client向YARN中提交應用程序,
其中包括ApplicationMaster程序、命令、用戶程序,資源等。
(2)ResourceManager為該應用程序分配第一個Container,并與對應的NodeManager通信,要求它在這個Container中啟動應用程序的ApplicationMaster。
(3)ApplicationMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManager查看應用程序的運行狀態,然后它將為各個任務申請資源,并監控它的運行狀態
(4)ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
(5)一旦ApplicationMaster申請到資源后,便與對應的NodeManager通信,要求它啟動任務。
(6)NodeManager為任務設置好運行環境(包括環境變量、Jar包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務。
(7)各個任務通過某個RPC協議向ApplicationMaster匯報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態。
(8)應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關閉自己。
通過上面的內容,可以對Hadoop 的一些基本框架有一些簡單的印象了。之后在使用的時候可以對照上面的結構圖和Hadoop 官網或者社區進行深入理解。
到此,關于“什么是Hadoop”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注本站網站,小編會繼續努力為大家帶來更多實用的文章!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
招行朝朝寶和朝朝盈有啥區別?1.發售機構不一樣。朝朝寶是招商銀行代銷招銀理財公司的理財產品;朝朝盈是招商銀行自營的理財產品。2.投資標的不一樣。朝朝寶對接5只理財產品;朝朝盈對接1支基金。3.資金贖回到賬時間不一樣。朝朝寶快速贖回(限額5萬)實時到賬,朝朝盈普通贖回T+1日到賬,快速贖回立即到賬(限額1萬)。4.資金可消費性不一樣。朝朝寶的資金不贖回可直接使用;朝朝盈的資金不能直接消費,需贖回方可...
(資料圖片僅供參考)生活中,很多人都不知道趙寶剛青春三部曲最后一部 趙寶剛青春三部曲,其實非常簡單,下面就是小編搜索到的趙寶剛青春三部曲最后一部 趙寶剛青春三部曲相關的一些知識,我們一起來學習下吧!今天來聊聊關于趙寶剛青春三部曲最后一部,趙寶剛青春三部曲的文章,現在就為大家來簡單介紹下趙寶剛青春三部曲最后一部,趙寶剛青春三部曲,希望對各位小伙伴們有所幫助。1、趙寶剛的青春三部曲第二部:《我的青春誰...
【資料圖】隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如黃花機場t1和t2區別,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!黃花機場的t1和t2的區別就是T1為老航站樓。而T2為新航站樓。并且現在主要使用的就是T2航站樓,而且現在所有的國內和國際出發的航班都會到達T2航站樓。機場,亦稱飛機場、空港,較正式的名稱是航空站。機場有不同的大小,除了跑道之外,...