多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > Hadoop導航:版本、生態(tài)圈及MapReduce模型

Hadoop導航:版本、生態(tài)圈及MapReduce模型

來源:程序員人生   發(fā)布時間:2014-09-26 13:38:46 閱讀次數(shù):3238次

【編者按】經(jīng)過數(shù)年的發(fā)展,Hadoop已成為通用的海量數(shù)據(jù)處理平臺。然而打開Hadoop版本發(fā)布頁,不同方法計算的版本號讓人眼花繚亂。那么對于初學者或者已經(jīng)使用了Hadoop的機構(gòu)究竟該如何進行選擇?MapReduce的工作模型究竟是什么樣的?這里我們一起看@萬境絕塵近日發(fā)表的博客。


CSDN推薦:歡迎免費訂閱《Hadoop與大數(shù)據(jù)周刊》獲取更多Hadoop技術(shù)文獻、大數(shù)據(jù)技術(shù)分析、企業(yè)實戰(zhàn)經(jīng)驗,生態(tài)圈發(fā)展趨勢。


以下為原文:

Hadoop版本和生態(tài)圈

1. Hadoop版本

(1) Apache Hadoop版本介紹

Apache的開源項目開發(fā)流程:

  • 主干分支:新功能都是在主干分支(trunk)上開發(fā)。
  • 特性獨有分支:很多新特性穩(wěn)定性很差,或者不完善,在這些分支的獨有特定很完善之后,該分支就會并入主干分支。
  • 候選分支:定期從主干分支剝離,一般候選分支發(fā)布,該分支就會停止更新新功能,如果候選分支有BUG修復,就會重新針對該候選分支發(fā)布一個新版本,候選分支就是發(fā)布的穩(wěn)定版本。

造成Hadoop版本混亂的原因:

  1. 主要功能在分支版本開發(fā):0.20分支發(fā)布之后,主要功能一直在該分支上進行開發(fā),主干分支并沒有合并這個分支,0.20分支成為了主流。
  2. 低版本的后發(fā)布:0.22版本發(fā)布要晚于0.23版本。
  3. 版本重命名:0.20分支的0.20.205版本重命名為1.0版本,這兩個版本是一樣的,只是名字改變了。

Apache Hadoop版本示意圖:

(2) Apache Hadoop版本功能介紹

第一代Hadoop特性:

  • append:支持文件追加功能,讓用戶使用HBase的時候避免數(shù)據(jù)丟失,也是使用HBase的前提。
  • raid:保證數(shù)據(jù)可靠,引入校驗碼校驗數(shù)據(jù)塊數(shù)目。
  • symlink:支持HDFS文件鏈接。
  • security:hadoop安全機制。
  • namenode HA:為了避免namenode單點故障情況,HA集群有兩臺namenode。

第二代Hadoop特性:

  • HDFS Federation:NameNode制約HDFS擴展,該功能讓多個NameNode分管不同目錄,實現(xiàn)訪問隔離和橫向擴展。
  • yarn:MapReduce擴展性和多框架方面支持不足,yarn是全新的資源管理框架,將JobTracker資源管理和作業(yè)控制功能分開,ResourceManager負責資源管理,ApplicationMaster負責作業(yè)控制。

0.20版本分支:只有這個分支是穩(wěn)定版本,其它分支都是不穩(wěn)定版本。

  • 0.20.2版本(穩(wěn)定版):包含所有特性,經(jīng)典版。
  • 0.20.203版本(穩(wěn)定版):包含append,不包含symlink raid namenodeHA功能。
  • 0.20.205版本/1.0版本(穩(wěn)定版):包含append security,不包含symlink raid namenodeHA功能。
  • 1.0.1~1.0.4版本(穩(wěn)定版):修復1.0.0的bug和進行一些性能上的改進。

0.21版本分支(不穩(wěn)定版):包含append raid symlink namenodeHA,不包含security。

0.22版本分支(不穩(wěn)定版):包含 append raid symlink那么弄得HA,不包含mapreduce security。

0.23版本分支:

  • 0.23.0版本(不穩(wěn)定版):第二代的hadoop,增加了HDFS Federation和yarn。
  • 0.23.1~0.23.5(不穩(wěn)定版):修復0.23.0的一些BUG,以及進行一些優(yōu)化。
  • 2.0.0-alpha~2.0.2-alpha(不穩(wěn)定版):增加了namenodeHA 和 Wire-compatiblity功能。

(3) Cloudera Hadoop對應(yīng)Apache Hadoop版本

2. Hadoop生態(tài)圈

Apache支持:Hadoop的核心項目都受Apache支持的,除了Hadoop之外,還有下面幾個項目,也是Hadoop不可或缺的一部分。

  • HDFS:分布式文件系統(tǒng),用于可靠的存儲海量數(shù)據(jù)。
  • MapReduce:分布式處理數(shù)據(jù)模型,可以運行于大型的商業(yè)云計算集群中。
  • Pig:數(shù)據(jù)流語言和運行環(huán)境,用來檢索海量數(shù)據(jù)集。
  • HBase:分布式數(shù)據(jù)庫,按列存儲,HBase使用HDFS作為底層存儲,同時支持MapReduce模型的海量計算和隨機讀取。
  • Zookeeper:提供Hadoop集群的分布式的協(xié)調(diào)服務(wù),用于構(gòu)建分布式應(yīng)用,避免應(yīng)用執(zhí)行失敗帶來的不確定性損失。
  • Sqoop:該工具可以用于HBase 和 HDFS之間的數(shù)據(jù)傳輸,提高數(shù)據(jù)傳輸效率。
  • Common:分布式文件系統(tǒng),通用IO組件與接口,包括序列化、Java RPC和持久化數(shù)據(jù)結(jié)構(gòu)。
  • Avro:支持高效跨語言的RPC及永久存儲數(shù)據(jù)的序列化系統(tǒng)。

MapReduce模型簡介

MapReduce簡介:MapReduce是一種數(shù)據(jù)處理編程模型。

  • 多語言支持:MapReduce可以使用各種語言編寫,例如Java、Ruby、Python、C++。
  • 并行本質(zhì) :MapReduce 本質(zhì)上可以并行運行的。

1. MapReduce數(shù)據(jù)模型解析

MapReduce數(shù)據(jù)模型:

  • 兩個階段:MapReduce的任務(wù)可以分為兩個階段,Map階段和Reduce階段。
  • 輸入輸出:每個階段都使用鍵值對作為輸入和輸出,IO類型可以由程序員進行選擇。
  • 兩個函數(shù):map函數(shù)和reduce函數(shù)。

MapReduce作業(yè)組成:一個MapReduce工作單元,包括輸入數(shù)據(jù),MapReduce程序和配置信息。

作業(yè)控制:作業(yè)控制由JobTracker(一個)和TaskTracker(多個)進行控制的。

  • JobTracker作用:JobTracker控制TaskTracke上任務(wù)的運行,進行統(tǒng)一調(diào)度。
  • TaskTracker作用:執(zhí)行具體的MapReduce程序。
  • 統(tǒng)一調(diào)度方式:TaskTracker運行的同時將運行進度發(fā)送給JobTracker,JobTracker記錄所有的TaskTracker。
  • 任務(wù)失敗處理:如果一個TaskTracker任務(wù)失敗,JobTracker會調(diào)度其它TaskTracker上重新執(zhí)行該MapReduce作業(yè)。

2. Map數(shù)據(jù)流

輸入分片:MapReduce程序執(zhí)行的時候,輸入的數(shù)據(jù)會被分成等長的數(shù)據(jù)塊,這些數(shù)據(jù)塊就是分片。

  • 分片對應(yīng)任務(wù):每個分片都對應(yīng)著一個Map任務(wù),即MapReduce中的map函數(shù)。
  • 并行處理:每個分片執(zhí)行Map任務(wù)要比一次性處理所有數(shù)據(jù)時間要短。
  • 負載均衡:集群中的計算機有的性能好有的性能差,按照性能合理的分配分片大小,比平均分配效率要高,充分發(fā)揮出集群的效率。
  • 合理分片:分片越小負載均衡效率越高,但是管理分片和管理map任務(wù)總時間會增加,需要確定一個合理的分片大小,一般默認為64M,與塊大小相同。

數(shù)據(jù)本地優(yōu)化:map任務(wù)運行在本地存儲數(shù)據(jù)的節(jié)點上,才能獲得最好的效率。

  • 分片=數(shù)據(jù)塊:一個分片只在單個節(jié)點上存儲,效率最佳。
  • 分片>數(shù)據(jù)塊:分片大于數(shù)據(jù)塊,那么一個分片的數(shù)據(jù)就存儲在了多個節(jié)點上,map任務(wù)所需的數(shù)據(jù)需要從多個節(jié)點傳輸,會降低效率。

Map任務(wù)輸出:Map任務(wù)執(zhí)行結(jié)束后,將計算結(jié)果寫入到本地硬盤,不是寫入到HDFS中。

  • 中間過渡:Map的結(jié)果只是用于中間過渡,這個中間結(jié)果要傳給Reduce任務(wù)執(zhí)行,reduce任務(wù)的結(jié)果才是最終結(jié)果,map中間值最后會被刪除。
  • map任務(wù)失敗:如果map任務(wù)失敗,會在另一個節(jié)點重新運行這個map任務(wù),再次計算出中間結(jié)果。

3. Reduce數(shù)據(jù)流

Reduce任務(wù):map任務(wù)的數(shù)量要遠遠多于Reduce任務(wù)。

  • 無本地化優(yōu)勢:Reduce的任務(wù)的輸入是Map任務(wù)的輸出,reduce任務(wù)的絕大多數(shù)數(shù)據(jù)本地是沒有的。
  • 數(shù)據(jù)合并:map任務(wù)輸出的結(jié)果,會通過網(wǎng)絡(luò)傳到reduce任務(wù)節(jié)點上,先進行數(shù)據(jù)的合并,然后在輸入到reduce任務(wù)中進行處理。
  • 結(jié)果輸出:reduce的輸出直接輸出到HDFS中。
  • reduce數(shù)量:reduce數(shù)量是特別指定的,在配置文件中指定。

MapReduce數(shù)據(jù)流框圖解析:

  • 單個MapReduce的數(shù)據(jù)流:

  • 多個MapReduce模型:


  • 沒有Reduce程序的MapReduce數(shù)據(jù)流:


Map輸出分區(qū):多個reduce任務(wù),每個reduce任務(wù)都對應(yīng)著一些map任務(wù),我們將這些map任務(wù)根據(jù)其輸入reduce任務(wù)進行分區(qū),為每個reduce建立一個分區(qū)。

  • 分區(qū)標識:map結(jié)果有許多種類鍵,相同的鍵對應(yīng)的數(shù)據(jù)傳給一個reduce,一個map可能會給多個reduce輸出數(shù)據(jù)。
  • 分區(qū)函數(shù):分區(qū)函數(shù)可以由用戶定義,一般情況下使用系統(tǒng)默認的分區(qū)函數(shù)partitioner,該函數(shù)通過哈希函數(shù)進行分區(qū)。

混洗:map任務(wù)和reduce任務(wù)之間的數(shù)據(jù)流成為混。

  • reduce數(shù)據(jù)來源:每個reduce任務(wù)的輸入數(shù)據(jù)來自多個map
  • map數(shù)據(jù)去向:每個map任務(wù)的結(jié)果都輸出到多個reduce中

沒有Reduce:當數(shù)據(jù)可以完全并行處理的時候,就可以不適用reduce,只進行map任務(wù)。

4. Combiner 引入

MapReduce瓶頸:帶寬限制了MapReduce執(zhí)行任務(wù)的數(shù)量,Map和Reduce執(zhí)行過程中需要進行大量的數(shù)據(jù)傳輸。

解決方案:合并函數(shù)Combiner,將多個Map任務(wù)輸出的結(jié)果合并,將合并后的結(jié)果發(fā)送給Reduce作業(yè)。

5. HadoopStreaming

Hadoop多語言支持:Java、Python、Ruby、C++

  • 多語言:Hadoop允許使用其它語言寫MapReduce函數(shù)。
  • 標準流:因為Hadoop可以使用UNIX標準流作為Hadoop和應(yīng)用程序之間的接口,因此只要使用標準流,就可以進行MapReduce編程。

Streaming處理文本:Streaming在文本處理模式下,有一個數(shù)據(jù)行視圖,非常適合處理文本。

  • Map函數(shù)的輸入輸出:標準流一行一行的將數(shù)據(jù)輸入到Map函數(shù),Map函數(shù)的計算結(jié)果寫到標準輸出流中。
  • Map輸出格式:輸出的鍵值對是以制表符分隔的行,以這種形式寫出的標準輸出流中。
  • Reduce函數(shù)的輸入輸出:輸入數(shù)據(jù)是標準輸入流中的通過制表符分隔的鍵值對行,該輸入經(jīng)過了Hadoop框架排序,計算結(jié)果輸出到標準輸出流中。

6. Hadoop Pipes

Pipes概念:Pipes是MapReduce的C++接口

  • 理解誤區(qū):Pipes不是使用標準輸入輸出流作為Map和Reduce之間的Streaming,也沒有使用JNI編程。
  • 工作原理:Pipes使用套接字作為map和reduce函數(shù)進程之間的通信。

原文鏈接: Hadoop 版本 生態(tài)圈 MapReduce模型(責編/仲浩) 


以“云計算大數(shù)據(jù) 推動智慧中國 ”為主題的  第六屆中國云計算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產(chǎn)業(yè)觀察、技術(shù)培訓、主題論壇、行業(yè)研討,內(nèi)容豐富,干貨十足。票價優(yōu)惠,馬上  報名 ! 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲久久综合 | 成人99国产精品一级毛片 | 一区二区三区影视 | 2021国产成人午夜精品 | 久久精品一区二区三区四区 | 亚洲国产日韩欧美一区二区三区 | 一区二区三区欧美 | 18一20岁一级毛片 | 精品国产96亚洲一区二区三区 | 天天色成人网 | 亚洲jizzjizz| 欧美日韩性猛交xxxxx免费看 | a一级爱做片免费 | 亚洲综合精品成人 | 欧美日一区| 久久国产精品1区2区3区网页 | 复仇之路在线观看免费版高清 | 午夜色视频 | 日韩精品欧美精品中文精品 | free性欧美极度另类性性欧美 | 欧美日本一二三区 | 一级毛片在线视频 | 国内精品视频 在线播放 | 亚洲国产天堂久久综合图区 | 亚洲精品一区二区三区婷婷月 | 亚洲天堂免费在线 | 成人免费久久精品国产片久久影院 | 中文字幕第30页 | a级片毛片 | 国产高清一级毛片在线不卡 | 亚洲国产精品视频 | 一级做a爰片久久毛片 | 欧美1314www伊人久久香网 | 免费看h视频 | 高清完整视频在线播放 | 精品福利一区 | 在线观看麻豆精品国产不卡 | 成人免费视频在线播放 | 亚洲欧美日韩高清在线看 | 日韩欧美二区 | 久久精品国产精品亚洲精品 |