日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型

發(fā)布時(shí)間:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

忘的差不多了, 先補(bǔ)概念, 然后開始搭建集群實(shí)戰(zhàn) ...

.


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



1. Hadoop版本



(1) Apache Hadoop版本介紹


Apache的開源項(xiàng)目開發(fā)流程 :?

-- 主干分支 : 新功能都是在 主干分支(trunk)上開發(fā);

-- 特性獨(dú)有分支 : 很多新特性穩(wěn)定性很差, 或者不完善, 在這些分支的獨(dú)有特定很完善之后, 該分支就會并入主干分支;

-- 候選分支 : 定期從主干分支剝離, 一般候選分支發(fā)布, 該分支就會停止更新新功能, 如果候選分支有BUG修復(fù), 就會重新針對該候選分支發(fā)布一個(gè)新版本;候選分支就是發(fā)布的穩(wěn)定版本;


造成Hadoop版本混亂的原因?:?

--?主要功能在分支版本開發(fā)?: 0.20分支發(fā)布之后, 主要功能一直在該分支上進(jìn)行開發(fā), 主干分支并沒有合并這個(gè)分支, 0.20分支成為了主流;

--?低版本的后發(fā)布?: 0.22版本 發(fā)布 要晚于 0.23版本;

--?版本重命名?: 0.20分支的 0.20.205版本重命名為 1.0版本, 這兩個(gè)版本是一樣的, 只是名字改變了;


Apache Hadoop 版本示意圖 :?



.

(2) Apache Hadoop 版本功能介紹


第一代Hadoop特性?:

--?append?: 支持文件追加功能, 讓用戶使用HBase的時(shí)候避免數(shù)據(jù)丟失, 也是使用HBase的前提;

--?raid?: 保證數(shù)據(jù)可靠, 引入校驗(yàn)碼校驗(yàn)數(shù)據(jù)塊數(shù)目;

--?symlink?: 支持HDFS文件鏈接;

--?security?: hadoop安全機(jī)制;

--?namenode HA?: 為了避免 namenode單點(diǎn)故障情況, HA集群有兩臺namenode;


第二代Hadoop特性 :?

--?HDFS Federation?: NameNode制約HDFS擴(kuò)展, 該功能讓多個(gè)NameNode分管不同目錄, 實(shí)現(xiàn)訪問隔離和橫向擴(kuò)展;

--?yarn?: ?MapReduce擴(kuò)展性 和 多框架方面支持不足, yarn 是全新的資源管理框架, 將JobTracker資源管理作業(yè)控制功能分開, ResourceManager負(fù)責(zé)資源管理, ApplicationMaster負(fù)責(zé)作業(yè)控制;



0.20版本分支 : 只有這個(gè)分支是穩(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)定版) : 修復(fù)1.0.0的bug 和 進(jìn)行一些性能上的改進(jìn);


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)定版) : 修復(fù) 0.23.0 的一些BUG, 以及進(jìn)行一些優(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的核心項(xiàng)目都受Apache支持的, 除了Hadoop之外, 還有下面幾個(gè)項(xiàng)目, 也是Hadoop不可或缺的一部分;

-- HDFS : 分布式文件系統(tǒng), 用于可靠的存儲海量數(shù)據(jù);

-- MapReduce : 分布式處理數(shù)據(jù)模型, 可以運(yùn)行于大型的商業(yè)云計(jì)算集群中;

-- Pig : 數(shù)據(jù)流語言運(yùn)行環(huán)境, 用來檢索海量數(shù)據(jù)集;

-- HBase : 分布式數(shù)據(jù)庫, 按列存儲, HBase使用HDFS作為底層存儲, 同時(shí)支持MapReduce模型的海量計(jì)算隨機(jī)讀取;

-- 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ì)上可以并行運(yùn)行的;



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


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

-- 兩個(gè)階段 : MapReduce 的任務(wù)可以分為兩個(gè)階段, Map階段 和 Reduce階段;

-- 輸入輸出 : 每個(gè)階段都使用鍵值對作為輸入 和 輸出, IO類型可以由程序員進(jìn)行選擇;

-- 兩個(gè)函數(shù) : map 函數(shù) reduce 函數(shù);


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


作業(yè)控制 : 作業(yè)控制由 JobTracker(一個(gè)) 和 TaskTracker(多個(gè)) 進(jìn)行控制的;

-- JobTracker作用 : JobTracker 控制 TaskTracker 上任務(wù)的運(yùn)行, 進(jìn)行統(tǒng)一調(diào)度;

-- TaskTracker作用 : 執(zhí)行具體的 MapReduce ?程序;

-- 統(tǒng)一調(diào)度方式 : TaskTracker 運(yùn)行的同時(shí)將運(yùn)行進(jìn)度發(fā)送給 JobTracker, JobTracker記錄所有的TaskTracker;

-- 任務(wù)失敗處理 : 如果一個(gè) TaskTracker 任務(wù)失敗, JobTracker 會調(diào)度其它 TaskTracker 上重新執(zhí)行該MapReduce 作業(yè);


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


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

-- 分片對應(yīng)任務(wù) : 每個(gè)分片都對應(yīng)著一個(gè) Map 任務(wù), 即MapReduce 中的map函數(shù);

-- 并行處理 : 每個(gè)分片 執(zhí)行 Map 任務(wù)要比 一次性處理所有數(shù)據(jù) 時(shí)間要短;

-- 負(fù)載均衡 : 集群中的計(jì)算機(jī) 有的 性能好 有的性能差, 按照性能合理的分配 分片 大小, 比 平均分配效率要高, 充分發(fā)揮出集群的效率;?

-- 合理分片 : 分片越小負(fù)載均衡效率越高, 但是管理分片 和 管理map任務(wù) 總時(shí)間會增加, 需要確定一個(gè)合理的 分片大小, 一般默認(rèn)為 64M, 與塊大小相同;


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

-- 分片 = 數(shù)據(jù)塊 : 一個(gè)分片只在單個(gè)節(jié)點(diǎn)上存儲, 效率最佳;?

-- 分片 > 數(shù)據(jù)塊 :?分片 大于 數(shù)據(jù)塊, 那么一個(gè)分片的數(shù)據(jù)就存儲在了多個(gè)節(jié)點(diǎn)上, map 任務(wù)所需的數(shù)據(jù)需要從多個(gè)節(jié)點(diǎn)傳輸, 會降低效率;


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

-- 中間過渡 : Map的結(jié)果只是用于中間過渡, 這個(gè)中間結(jié)果要傳給 Reduce 任務(wù)執(zhí)行, reduce 任務(wù)的結(jié)果才是最終結(jié)果, map 中間值 最后會被刪除;

-- map任務(wù)失敗 : 如果 map 任務(wù)失敗, 會在另一個(gè)節(jié)點(diǎn)重新運(yùn)行這個(gè)map 任務(wù), 再次計(jì)算出中間結(jié)果;


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


Reduce任務(wù) : map 任務(wù)的數(shù)量要遠(yuǎn)遠(yuǎn)多于 Reduce 任務(wù);

-- 無本地化優(yōu)勢 : Reduce 的任務(wù)的輸入是 Map 任務(wù)的輸出, reduce 任務(wù)的絕大多數(shù)數(shù)據(jù) 本地是沒有的;

-- 數(shù)據(jù)合并 : map 任務(wù) 輸出的結(jié)果, 會通過網(wǎng)絡(luò)傳到 reduce 任務(wù)節(jié)點(diǎn)上, 先進(jìn)行數(shù)據(jù)的合并, 然后在輸入到reduce 任務(wù)中進(jìn)行處理;

-- 結(jié)果輸出 : reduce 的輸出直接輸出到 HDFS中;

-- reduce數(shù)量 : reduce數(shù)量是特別指定的, 在配置文件中指定;


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

-- 單個(gè)MapReduce的數(shù)據(jù)流 :?


-- 多個(gè)MapReduce模型 :?


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



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

-- 分區(qū)標(biāo)識 : map結(jié)果有許多種類鍵, 相同的鍵對應(yīng)的數(shù)據(jù) 傳給 一個(gè)reduce, 一個(gè)map 可能會給多個(gè)reduce輸出數(shù)據(jù);

-- 分區(qū)函數(shù) : 分區(qū)函數(shù)可以由用戶定義, 一般情況下使用系統(tǒng)默認(rèn)的分區(qū)函數(shù) partitioner, 該函數(shù)通過哈希函數(shù)進(jìn)行分區(qū);


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

-- reduce數(shù)據(jù)來源 : 每個(gè) reduce 任務(wù)的輸入數(shù)據(jù)來自多個(gè)map

-- map 數(shù)據(jù)去向 : 每個(gè) map 任務(wù)的結(jié)果都輸出到多個(gè) reduce 中;


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


4. Combiner 引入


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

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


5. Hadoop Streaming


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

-- 多語言 : Hadoop 允許使用 其它 語言寫 MapReduce 函數(shù);?

-- 標(biāo)準(zhǔn)流 : 因?yàn)?Hadoop 可以使用 UNIX 標(biāo)準(zhǔn)流 作為 Hadoop 和 應(yīng)用程序之間的接口, 因此 只要使用標(biāo)準(zhǔn)流, 就可以進(jìn)行 MapReduce 編程;


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

-- Map函數(shù)的輸入輸出 : 標(biāo)準(zhǔn)流 一行一行 的將數(shù)據(jù) 輸入到 Map 函數(shù), Map函數(shù)的計(jì)算結(jié)果寫到 標(biāo)準(zhǔn)輸出流中;

-- Map輸出格式 : 輸出的 鍵值對 是以制表符 分隔的行, 以這種形式寫出的標(biāo)準(zhǔn)輸出流中;

-- Reduce函數(shù)的輸入輸出 : 輸入數(shù)據(jù)是 標(biāo)準(zhǔn)輸入流中的 通過制表符 分隔的鍵值對 行, 該輸入經(jīng)過了Hadoop框架排序, 計(jì)算結(jié)果輸出到標(biāo)準(zhǔn)輸出流中;


6. Hadoop Pipes


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

-- 理解誤區(qū) : Pipes 不是使用 標(biāo)準(zhǔn) 輸入 輸出流作為 Map 和 Reduce 之間的Streaming, 也沒有使用JNI編程;

-- 工作原理 : Pipes 使用套接字作為 map 和 reduce 函數(shù) 進(jìn)程之間的通信;



總結(jié)

以上是生活随笔為你收集整理的【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。