Hadoop和Hadoop2有很大的區別么?
01-15
作為一個初學者,想學習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的橫向擴展問題四、系統架構
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、內存、磁碟和網路),並報告給RM4. 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讀取一個非常大的本地文件時,讀入內存後分區會自動分布到多個節點上嗎?
※伺服器集群負載均衡原理?