Hadoop和Hadoop2有很大的區別么?

作為一個初學者,想學習Hadoop,不知其與二代產品區別大么?網上關於Hadoop2的書籍資料很少,有沒有什麼可以推薦的?


區別是很大的,簡單來說就是從定製化變成可插拔組件的形式,看下圖

hadoop2中yarn是一個資源管理系統,其上除了可運行MapReduce外,還可以運行內存計算框架Spark,實時流數據處理框架Storm等。

當然是學習hadoop2了,先從搭環境,運行自帶例子wordcount開始,然後熟悉周邊產品hive,pig,hbase等,最後要是還不滿足,就去看源碼。


hadoop原先可以看成是一個框架,而現在能理解成一個平台,可以運行別的框架。


一、本質

Hadoop2.0,相比於Hadoop1.0,最明顯的區別是YARN系統和HDFS2.0的新特性

二、Yarn解決了什麼問題

1. 降低運維成本和數據共享成本

2. 減小了 JobTracker(也就是現在的 RM)的負擔

3. 使得多種計算框架可以運行在一個集群中

4. 資源表示成內存量,解決了之前的map slot/reduce slot分開造成集群資源閑置的情況

三、HDFS2.0解決了什麼問題

1. NameNode HA 解決了Hadoop1.0中NameNode的單點問題

2. NameNode Federation 解決了NameNode的橫向擴展問題

3. HDFS Snapshot 解決了數據備份,防止用戶錯誤操作和容災恢復

4. HDFS Cache 可以防止頻繁使用的數據被從內存中清除

5. HDFS ACL 使得許可權控制可以對單個用戶操作

6.異構層級存儲結構 支持一個集群中,有多種不同的存儲介質

四、系統架構

1.ResourceManager(RM)

? RM處理客戶端請求,接收JobSubmitter提交的作業,按照作業的上下文(Context) 信息,以及從 NodeManager(NM) 收集來的狀態信息,啟動調度過程,分配一個 Container 作為 App Master

? RM擁有為系統中所有應用資源分配的決定權,是中心服務,做的事情就是調度、啟動每一個Job所屬的Application、另外監控Application的存在情況

? 與運行在每個節點上的NM進程交互,通過心跳通信,達到監控NM的目的

2. ApplicationMaster(AM)

? 應用程序的Master,每一個應用對應一個AM,類似舊的JobTracker

? 與RM協商資源

– 與Scheduler協商合適的Container

? 與NM協同工作與Scheduler協商合適的Container進行Container的監控

? 以一個普通Container的身份運行

3. NodeManager(NM)

? 是slave進程,類似TaskTracker的角色,是每個機器框架代理

? 處理來自RM的任務請求

? 接收並處理來自ApplicationMaster的Container啟動、停止等各種請求

? 負責啟動應用程序的Container(執行應用程序的容器),並監控他們的資源使用情況(CPU、內存、磁碟和網路),並報告給RM

4. Container

? 是任務運行環境的抽象封裝

? Container只是使用NM上指定資源的權利

? AM必須向NM提供更多的信息來啟動Container

? 描述任務的運行資源(節點、內存、cpu)、啟動命令和運行環境

Yarn是重構的MapReduce,其根本思想:將 JobTracker 兩個主要的功能分離成單獨的組件,這兩個功能是資源管理(RM)和任務調度(AM)

五、Yarn的執行流程與容錯

1. RM掛掉:

單點故障,新版本可以基於Zookeeper實現HA高可用集群,可通過配置進行設置準備RM,主提供服務,備同步主的信息,一旦主掛掉,備立即做切換接替進行服務

2. NM掛掉:

當NM掛了,會通過心跳方式通知RM,RM將情況通知對應AM,AM作進一步處理

3. AM掛掉:

若掛掉,RM負責重啟,其實RM上有一個RMApplicationMaster,是AM的AM,上面保存已經完成的task

以上.

如果覺得本文對你有幫助,可以幫忙點個贊表示支持嗎,謝謝!

如果有任何意見和建議,也歡迎再下方留言~

關注這個公眾號,每天22:00會有三道大數據面試題準時推送給你哦~


hadoop2的主節點自動還原也是很重要的


老實說,我不明白為什麼一個update會引起那麼大的轟動

一個軟體做一些架構調整是很正常的

但很多書籍和技術文章貌似把這個update描述的極其意義重大


改進了,而已。


推薦閱讀:

如何入門分散式計算?
雙十一時,阿里的技術人員在後台做了些什麼?
當spark讀取一個非常大的本地文件時,讀入內存後分區會自動分布到多個節點上嗎?
伺服器集群負載均衡原理?

TAG:分散式計算 | Hadoop | Apache | Java編程 |