hadoop需要哪些技术支持
hadoop是一個開源軟件框架,可安裝在一個商用機器集群中,使機器可彼此通信并協同工作,以高度分布式的方式共同存儲和處理大量數據。最初,Hadoop 包含以下兩個主要組件:Hadoop Distributed File System (HDFS) 和一個分布式計算引擎,該引擎支持以 MapReduce 作業的形式實現和運行程序。 Hadoop 還提供了軟件基礎架構,以一系列 map 和 reduce 任務的形式運行 MapReduce 作業。Map 任務在輸入數據的子集上調用map函數。在完成這些調用后,reduce任務開始在 map函數所生成的中間數據上調用reduce任務,生成最終的輸出。map和reduce任務彼此單獨運行,這支持并行和容錯的計算。 最重要的是,Hadoop 基礎架構負責處理分布式處理的所有復雜方面:并行化、調度、資源管理、機器間通信、軟件和硬件故障處理,等等。得益于這種干凈的抽象,實現處理數百(或者甚至數千)個機器上的數 TB 數據的分布式應用程序從未像現在這么容易過,甚至對于之前沒有使用分布式系統的經驗的開發人員也是如此。
map reduce 過程圖 shuffle combine 整體的Shuffle過程包含以下幾個部分:Map端Shuffle、Sort階段、Reduce端Shuffle。即是說:Shuffle 過程橫跨 map 和 reduce 兩端,中間包含 sort 階段,就是數據從 map task 輸出到reduce task輸入的這段過程。 sort、combine 是在 map 端的,combine 是提前的 reduce ,需要自己設置。 Hadoop 集群中,大部分 map task 與 reduce task 的執行是在不同的節點上。當然很多情況下 Reduce 執行時需要跨節點去拉取其它節點上的map task結果。如果集群正在運行的 job 有很多,那么 task 的正常執行對集群內部的網絡資源消耗會很嚴重。而對于必要的網絡資源消耗,最終的目的就是最大化地減少不必要的消耗。還有在節點內,相比于內存,磁盤 IO 對 job 完成時間的影響也是可觀的。從最基本的要求來說,對于 MapReduce 的 job 性能調優的 Shuffle 過程,目標期望可以有: 完整地從map task端拉取數據到reduce 端。 在跨節點拉取數據時,盡可能地減少對帶寬的不必要消耗。 減少磁盤IO對task執行的影響。 總體來講這段Shuffle過程,能優化的地方主要在于減少拉取數據的量及盡量使用內存而不是磁盤。 YARN ResourceManager 代替集群管理器 ApplicationMaster 代替一個專用且短暫的 JobTracker NodeManager 代替 TaskTracker 一個分布式應用程序代替一個 MapReduce 作業 一個全局 ResourceManager 以主要后臺進程的形式運行,它通常在專用機器上運行,在各種競爭的應用程序之間仲裁可用的集群資源。 在用戶提交一個應用程序時,一個稱為 ApplicationMaster 的輕量型進程實例會啟動來協調應用程序內的所有任務的執行。這包括監視任務,重新啟動失敗的任務,推測性地運行緩慢的任務,以及計算應用程序計數器值的總和。有趣的是,ApplicationMaster 可在容器內運行任何類型的任務。 NodeManager 是 TaskTracker 的一種更加普通和高效的版本。沒有固定數量的 map 和 reduce slots,NodeManager 擁有許多動態創建的資源容器。
大數據Hadoop開發廠商有Amazon Web Services、Cloudera、Hortonworks、IBM、MapR科技、華為和大快搜索。這些廠商都是基于Apache開源項目,然后增加打包、支持、集成等特性以及自己的創新等內容。 大快的大數據通用計算平臺(DKH),已經集成相同版本號的開發框架的全部組件。如果在開源大數據框架上部署大快的開發框架,需要平臺的組件支持如下: 數據源與SQL引擎:DK.Hadoop、spark、hive、sqoop、flume、kafka 數據采集:DK.hadoop 數據處理模塊:DK.Hadoop、spark、storm、hive 機器學習和AI:DK.Hadoop、spark NLP模塊:上傳服務器端JAR包,直接支持 搜索引擎模塊:不獨立發布
總結
以上是生活随笔為你收集整理的hadoop需要哪些技术支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Leaflet】鼠标提取坐标
- 下一篇: C语言的预处理、编译、汇编、链接