這篇文章主要講解了“hadoop1存在的問題有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“hadoop1存在的問題有哪些”吧!
成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,先為遂平等服務(wù)建站,遂平等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為遂平企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
對 hadoop1 和 hadoop 2 做了一個解釋 圖片不錯 拿來看看
Hadoop 1.0
從上圖中可以清楚的看出原 MapReduce 程序的流程及設(shè)計思路:
首先用戶程序 (JobClient) 提交了一個 job,job 的信息會發(fā)送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要與集群中的機器定時通信 (heartbeat), 需要管理哪些程序應(yīng)該跑在哪些機器上,需要管理所有 job 失敗、重啟等操作。
TaskTracker 是 Map-reduce 集群中每臺機器都有的一個部分,他做的事情主要是監(jiān)視自己所在機器的資源情況。
TaskTracker 同時監(jiān)視當(dāng)前機器的 tasks 運行狀況。TaskTracker 需要把這些信息通過 heartbeat 發(fā)送給 JobTracker,JobTracker 會搜集這些信息以給新提交的 job 分配運行在哪些機器上。上圖虛線箭頭就是表示消息的發(fā)送 - 接收的過程。
可以看得出原來的 map-reduce 架構(gòu)是簡單明了的,在最初推出的幾年,也得到了眾多的成功案例,獲得業(yè)界廣泛的支持和肯定,但隨著分布式系統(tǒng)集群的規(guī)模和其工作負荷的增長,原框架的問題逐漸浮出水面,主要的問題集中如下:
JobTracker 是 Map-reduce 的集中處理點,存在單點故障。
JobTracker 完成了太多的任務(wù),造成了過多的資源消耗,當(dāng) map-reduce job 非常多的時候,會造成很大的內(nèi)存開銷,潛在來說,也增加了 JobTracker fail 的風(fēng)險,這也是業(yè)界普遍總結(jié)出老 Hadoop 的 Map-Reduce 只能支持 4000 節(jié)點主機的上限。
在 TaskTracker 端,以 map/reduce task 的數(shù)目作為資源的表示過于簡單,沒有考慮到 cpu/ 內(nèi)存的占用情況,如果兩個大內(nèi)存消耗的 task 被調(diào)度到了一塊,很容易出現(xiàn) OOM。
在 TaskTracker 端,把資源強制劃分為 map task slot 和 reduce task slot, 如果當(dāng)系統(tǒng)中只有 map task 或者只有 reduce task 的時候,會造成資源的浪費,也就是前面提過的集群資源利用的問題。
源代碼層面分析的時候,會發(fā)現(xiàn)代碼非常的難讀,常常因為一個 class 做了太多的事情,代碼量達 3000 多行,,造成 class 的任務(wù)不清晰,增加 bug 修復(fù)和版本維護的難度。
從操作的角度來看,現(xiàn)在的 Hadoop MapReduce 框架在有任何重要的或者不重要的變化 ( 例如 bug 修復(fù),性能提升和特性化 ) 時,都會強制進行系統(tǒng)級別的升級更新。更糟的是,它不管用戶的喜好,強制讓分布式集群系統(tǒng)的每一個用戶端同時更新。這些更新會讓用戶為了驗證他們之前的應(yīng)用程序是不是適用新的 Hadoop 版本而浪費大量時間。
hadoop2.0:
從業(yè)界使用分布式系統(tǒng)的變化趨勢和 hadoop 框架的長遠發(fā)展來看,MapReduce 的 JobTracker/TaskTracker 機制需要大規(guī)模的調(diào)整來修復(fù)它在可擴展性,內(nèi)存消耗,線程模型,可靠性和性能上的缺陷。在過去的幾年中,hadoop 開發(fā)團隊做了一些 bug 的修復(fù),但是最近這些修復(fù)的成本越來越高,這表明對原框架做出改變的難度越來越大。
為從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發(fā)展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構(gòu),發(fā)生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn,
重構(gòu)根本的思想是將 JobTracker 兩個主要的功能分離成單獨的組件,這兩個功能是資源管理和任務(wù)調(diào)度 / 監(jiān)控。新的資源管理器全局管理所有應(yīng)用程序計算資源的分配,每一個應(yīng)用的 ApplicationMaster 負責(zé)相應(yīng)的調(diào)度和協(xié)調(diào)。一個應(yīng)用程序無非是一個單獨的傳統(tǒng)的 MapReduce 任務(wù)或者是一個 DAG( 有向無環(huán)圖 ) 任務(wù)。ResourceManager 和每一臺機器的節(jié)點管理服務(wù)器能夠管理用戶在那臺機器上的進程并能對計算進行組織。
事實上,每一個應(yīng)用的 ApplicationMaster 是一個詳細的框架庫,它結(jié)合從 ResourceManager 獲得的資源和 NodeManager 協(xié)同工作來運行和監(jiān)控任務(wù)。
上圖中 ResourceManager 支持分層級的應(yīng)用隊列,這些隊列享有集群一定比例的資源。從某種意義上講它就是一個純粹的調(diào)度器,它在執(zhí)行過程中不對應(yīng)用進行監(jiān)控和狀態(tài)跟蹤。同樣,它也不能重啟因應(yīng)用失敗或者硬件錯誤而運行失敗的任務(wù)。
ResourceManager 是基于應(yīng)用程序?qū)Y源的需求進行調(diào)度的 ; 每一個應(yīng)用程序需要不同類型的資源因此就需要不同的容器。資源包括:內(nèi)存,CPU,磁盤,網(wǎng)絡(luò)等等。可以看出,這同現(xiàn) Mapreduce 固定類型的資源使用模型有顯著區(qū)別,它給集群的使用帶來負面的影響。資源管理器提供一個調(diào)度策略的插件,它負責(zé)將集群資源分配給多個隊列和應(yīng)用程序。調(diào)度插件可以基于現(xiàn)有的能力調(diào)度和公平調(diào)度模型。
上圖中 NodeManager 是每一臺機器框架的代理,是執(zhí)行應(yīng)用程序的容器,監(jiān)控應(yīng)用程序的資源使用情況 (CPU,內(nèi)存,硬盤,網(wǎng)絡(luò) ) 并且向調(diào)度器匯報。
每一個應(yīng)用的 ApplicationMaster 的職責(zé)有:向調(diào)度器索要適當(dāng)?shù)馁Y源容器,運行任務(wù),跟蹤應(yīng)用程序的狀態(tài)和監(jiān)控它們的進程,處理任務(wù)的失敗原因。
感謝各位的閱讀,以上就是“hadoop1存在的問題有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對hadoop1存在的問題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
分享題目:hadoop1存在的問題有哪些
文章轉(zhuǎn)載:http://jinyejixie.com/article44/iehcee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、靜態(tài)網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、Google、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)