云計(jì)算 HadoopHadoop 版本 生態(tài)圈 MapReduce模型

      網(wǎng)友投稿 615 2025-04-03

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

      .

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

      1. Hadoop版本

      (1) Apache Hadoop版本介紹

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

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

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

      -- 候選分支 : 定期從主干分支剝離, 一般候選分支發(fā)布, 該分支就會(huì)停止更新新功能, 如果候選分支有BUG修復(fù), 就會(huì)重新針對(duì)該候選分支發(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集群有兩臺(tái)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對(duì)應(yīng)Apache Hadoop版本

      .

      2. Hadoop生態(tài)圈

      Apache支持 : Hadoop的核心項(xiàng)目都受Apache支持的, 除了Hadoop之外, 還有下面幾個(gè)項(xiàng)目, 也是Hadoop不可或缺的一部分;

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

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

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

      -- HBase : 分布式數(shù)據(jù)庫(kù), 按列存儲(chǔ), HBase使用HDFS作為底層存儲(chǔ), 同時(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 及 永久存儲(chǔ)數(shù)據(jù)的序列化系統(tǒng);

      二. MapReduce模型簡(jiǎn)介

      MapReduce簡(jiǎn)介 : 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è)階段都使用鍵值對(duì)作為輸入 和 輸出, 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 會(huì)調(diào)度其它 TaskTracker 上重新執(zhí)行該MapReduce 作業(yè);

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

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

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

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

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

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

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

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

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

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

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

      -- map任務(wù)失敗 : 如果 map 任務(wù)失敗, 會(huì)在另一個(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)勢(shì) : Reduce 的任務(wù)的輸入是 Map 任務(wù)的輸出, reduce 任務(wù)的絕大多數(shù)數(shù)據(jù) 本地是沒有的;

      -- 數(shù)據(jù)合并 : map 任務(wù) 輸出的結(jié)果, 會(huì)通過網(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模型 :

      【云計(jì)算 Hadoop】Hadoop 版本 生態(tài)圈 MapReduce模型

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

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

      -- 分區(qū)標(biāo)識(shí) : map結(jié)果有許多種類鍵, 相同的鍵對(duì)應(yīng)的數(shù)據(jù) 傳給 一個(gè)reduce, 一個(gè)map 可能會(huì)給多個(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輸出格式 : 輸出的 鍵值對(duì) 是以制表符 分隔的行, 以這種形式寫出的標(biāo)準(zhǔn)輸出流中;

      -- Reduce函數(shù)的輸入輸出 : 輸入數(shù)據(jù)是 標(biāo)準(zhǔn)輸入流中的 通過制表符 分隔的鍵值對(duì) 行, 該輸入經(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)程之間的通信;

      Hadoop MapReduce 云計(jì)算

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何在Word刪除首字下沉?
      下一篇:wps表格怎樣隱藏編輯欄(怎么在wps文檔里面隱藏表格)
      相關(guān)文章
      久久91亚洲人成电影网站| 亚洲一久久久久久久久| jjzz亚洲亚洲女人| 亚洲精品无码不卡在线播放| 亚洲国产精品日韩在线观看| 97久久精品亚洲中文字幕无码| 国产亚洲av片在线观看播放 | 亚洲人成网77777亚洲色| 校园亚洲春色另类小说合集| 国产亚洲精aa在线看| 亚洲一区二区久久| 亚洲午夜精品在线| 亚洲国产成人精品电影| 亚洲白嫩在线观看| 亚洲国产美女精品久久| 亚洲一本之道高清乱码| 亚洲一区二区三区四区视频| 亚洲综合色7777情网站777| 亚洲AV成人噜噜无码网站| 色噜噜亚洲男人的天堂| 男人天堂2018亚洲男人天堂| 97久久国产亚洲精品超碰热| 亚洲www77777| 亚洲精品国产精品| 亚洲av成本人无码网站| 亚洲精品动漫人成3d在线| 国产a v无码专区亚洲av| 亚洲色偷偷偷鲁综合| 亚洲AV无码一区二区乱子伦| 亚洲日本精品一区二区| 亚洲国产精品成人久久久| 国产亚洲玖玖玖在线观看| 亚洲av色香蕉一区二区三区| 亚洲精品99久久久久中文字幕| 亚洲人成伊人成综合网久久久 | 久久亚洲精品国产精品黑人| 久久久久久亚洲AV无码专区| 亚洲成a人片在线观看播放| 77777亚洲午夜久久多喷| 亚洲国产欧美日韩精品一区二区三区| 亚洲国产日韩a在线播放|