日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Hadoop導航:版本、生態圈及MapReduce模型

Hadoop導航:版本、生態圈及MapReduce模型

來源:程序員人生   發布時間:2014-09-26 13:38:46 閱讀次數:3243次

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


CSDN推薦:歡迎免費訂閱《Hadoop與大數據周刊》獲取更多Hadoop技術文獻、大數據技術分析、企業實戰經驗,生態圈發展趨勢。


以下為原文:

Hadoop版本和生態圈

1. Hadoop版本

(1) Apache Hadoop版本介紹

Apache的開源項目開發流程:

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

造成Hadoop版本混亂的原因:

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

Apache Hadoop版本示意圖:

(2) Apache Hadoop版本功能介紹

第一代Hadoop特性:

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

第二代Hadoop特性:

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

0.20版本分支:只有這個分支是穩定版本,其它分支都是不穩定版本。

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

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

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

0.23版本分支:

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

(3) Cloudera Hadoop對應Apache Hadoop版本

2. Hadoop生態圈

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

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

MapReduce模型簡介

MapReduce簡介:MapReduce是一種數據處理編程模型。

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

1. MapReduce數據模型解析

MapReduce數據模型:

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

MapReduce作業組成:一個MapReduce工作單元,包括輸入數據,MapReduce程序和配置信息。

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

  • JobTracker作用:JobTracker控制TaskTracke上任務的運行,進行統一調度。
  • TaskTracker作用:執行具體的MapReduce程序。
  • 統一調度方式:TaskTracker運行的同時將運行進度發送給JobTracker,JobTracker記錄所有的TaskTracker。
  • 任務失敗處理:如果一個TaskTracker任務失敗,JobTracker會調度其它TaskTracker上重新執行該MapReduce作業。

2. Map數據流

輸入分片:MapReduce程序執行的時候,輸入的數據會被分成等長的數據塊,這些數據塊就是分片。

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

數據本地優化:map任務運行在本地存儲數據的節點上,才能獲得最好的效率。

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

Map任務輸出:Map任務執行結束后,將計算結果寫入到本地硬盤,不是寫入到HDFS中。

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

3. Reduce數據流

Reduce任務:map任務的數量要遠遠多于Reduce任務。

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

MapReduce數據流框圖解析:

  • 單個MapReduce的數據流:

  • 多個MapReduce模型:


  • 沒有Reduce程序的MapReduce數據流:


Map輸出分區:多個reduce任務,每個reduce任務都對應著一些map任務,我們將這些map任務根據其輸入reduce任務進行分區,為每個reduce建立一個分區。

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

混洗:map任務和reduce任務之間的數據流成為混。

  • reduce數據來源:每個reduce任務的輸入數據來自多個map
  • map數據去向:每個map任務的結果都輸出到多個reduce中

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

4. Combiner 引入

MapReduce瓶頸:帶寬限制了MapReduce執行任務的數量,Map和Reduce執行過程中需要進行大量的數據傳輸。

解決方案:合并函數Combiner,將多個Map任務輸出的結果合并,將合并后的結果發送給Reduce作業。

5. HadoopStreaming

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

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

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

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

6. Hadoop Pipes

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

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

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


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

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 黄网址在线 | 国产成人精品亚洲777人妖 | 精品一区二区三区在线视频 | 综合久久狠狠色成人网 | 黄色日批片 | 韩国日本美国免费毛片 | 欧美亚洲国产一区二区三区 | 粉嫩久久99精品久久久久久夜 | 国产激情精品一区二区三区 | 成人福利网站 | 久久99国产精品久久99大师 | 日韩国产在线 | 欧美 日韩 国产 在线 | 免费污污网站 | 91精品国产欧美一区二区 | 91看片官网 | 亚洲一区二区三区在线免费观看 | 亚洲视频免费在线观看 | 麻豆传媒免费看 | 国产精品国产三级国产a | 久久综合成人精品亚洲另类欧美 | 精国品产一区二区三区有限公司 | 91成人网 | 亚洲久草 | 国产成人精品免费视频大全最热 | 亚洲精品一区二区三区中文字幕 | 91嫩草在线| 国产h在线观看 | 亚洲xxxx做受欧美 | 国产伦精品一区二区三区照片 | 国产精品久久久久久久久久久免费看 | 日韩免费网站 | 国产一区二区毛片 | 国产一区二区三区久久 | 欧美亚洲一区二区三区 | 精品国产免费久久久久久尖叫 | 天天操狠狠操 | 国产成人免费av一区二区午夜 | 玖玖在线| 欧美日本在线 | 91久久国产综合久久91精品网站 |