新聞中心
1、什么是MapReduce
1. Hadoop MapReduce 是一個(gè) 分布式計(jì)算框架,用于輕松編寫(xiě)分布式應(yīng)用程序,這些應(yīng)用程序以可靠,容錯(cuò)的方式并行處理大型硬件集群(數(shù)千個(gè)節(jié)點(diǎn))上的大量數(shù)據(jù)(多TB數(shù)據(jù)集)

2. MapReduce 是一種面向海量數(shù)據(jù)處理的一種指導(dǎo)思想,也是一種用于對(duì)大規(guī)模數(shù)據(jù)進(jìn)行分布式計(jì)算的編程模型。
2、Map Reduce的優(yōu)缺點(diǎn)
2.1 優(yōu)點(diǎn)
? MapReduce易于編程: 它簡(jiǎn)單的實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序
? 良好的擴(kuò)展性: 當(dāng)你的計(jì)算資源不能得到滿(mǎn)足的時(shí)候,你可以通過(guò)簡(jiǎn)單的增加機(jī)器來(lái)擴(kuò)展它的計(jì)算能力。
? 高容錯(cuò)性: MapReduce設(shè)計(jì)的初衷就是使程序能夠部署在廉價(jià)的PC機(jī)器上,這就要求它具有很高的容錯(cuò)性。比如其中一臺(tái)機(jī)器掛了,它可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另外一個(gè)節(jié)點(diǎn)上運(yùn)行,不至于這個(gè)任務(wù)運(yùn)行失敗,而且這個(gè)過(guò)程不需要人工參與,而完全是由Hadoop內(nèi)部完成的。
? 適合PB級(jí)以上海量數(shù)據(jù)的離線處理: 可以實(shí)現(xiàn)上千臺(tái)服務(wù)器集群并發(fā)工作,提供數(shù)據(jù)處理能力。
2.2 缺點(diǎn)
? 實(shí)時(shí)計(jì)算性能差: MapReduce 主要應(yīng)用于離線作業(yè),無(wú)法做到秒級(jí)或者是亞秒級(jí)別的數(shù)據(jù)響應(yīng)。
? 不能進(jìn)行流式計(jì)算: 流式計(jì)算的輸入數(shù)據(jù)是動(dòng)態(tài)的,而MapReduce的輸入數(shù)據(jù)集是靜態(tài)的,不能動(dòng)態(tài)變化。這是因?yàn)镸apReduce自身的設(shè)計(jì)特點(diǎn)決定了數(shù)據(jù)源必須是靜態(tài)的。
? 不擅長(zhǎng)DAG(有向無(wú)環(huán)圖)計(jì)算 多個(gè)應(yīng)用程序存在依賴(lài)關(guān)系,后一個(gè)應(yīng)用程序的輸入為前一個(gè)的輸出。在這種情況下,MapReduce并不是不能做,而是使用后,每個(gè)MapReduce作業(yè)的輸出結(jié)果都會(huì)寫(xiě)入到磁盤(pán),會(huì)造成大量的磁盤(pán)IO,導(dǎo)致性能非常的低下。
3、 MapReduce進(jìn)程
一個(gè)完整的MapReduce程序在分布式運(yùn)行時(shí)有三類(lèi)實(shí)例進(jìn)程: (1)MrAppMaster:負(fù)責(zé)整個(gè)程序的過(guò)程調(diào)度及狀態(tài)協(xié)調(diào)。 (2)MapTask:負(fù)責(zé)Map階段的整個(gè)數(shù)據(jù)處理流程。 (3)ReduceTask:負(fù)責(zé)Reduce階段的整個(gè)數(shù)據(jù)處理流程。
4、MapReduce編程規(guī)范
? 用戶(hù)編寫(xiě)的程序代碼分成三個(gè)部分: Mapper、Reducer和Driver(客戶(hù)端提交作業(yè)驅(qū)動(dòng)程序)
? 用戶(hù)自定義的Mapper和Reducer都要繼承各自的父類(lèi)。
Mapper階段:
1. 用戶(hù)自定義的Mapper要繼承自己的父類(lèi)
2. Mapper的輸入數(shù)據(jù)是KV對(duì)的形式(KV的類(lèi)型可自定義)
3. Mapper中的業(yè)務(wù)邏輯寫(xiě)在map()方法中
4. Mapper的輸出數(shù)據(jù)是KV對(duì)的形式(KV的類(lèi)型可自定義)
5. map()方法(MapTask進(jìn)程)對(duì)每一個(gè)
Reducer階段:
1. 用戶(hù)自定義的Reducer要繼承自己的父類(lèi)
2. Reducer的輸入數(shù)據(jù)類(lèi)型對(duì)應(yīng)Mapper的輸出數(shù)據(jù)類(lèi)型,也是KV
3. Reducer的業(yè)務(wù)邏輯寫(xiě)在reduce()方法中
4. ReduceTask進(jìn)程對(duì)每一組相同k的
Driver: 描述的是提交Job對(duì)象需要的各種必要的信息。
MapReduce內(nèi)置了很多默認(rèn)屬性,比如: 排序(key的字典序)、分組(reduce階段key相同的為一組,一組調(diào)用一次reduce處理)等,這些都和數(shù)據(jù)的K有關(guān),所以說(shuō)kv的類(lèi)型數(shù)據(jù)確定是及其重要的。
5、常用數(shù)據(jù)序列化類(lèi)型
|
Java類(lèi)型 |
Hadoop Writable類(lèi)型 |
|
Boolean |
BooleanWritable |
|
Byte |
ByteWritable |
|
Int |
IntWritable |
|
Float |
FloatWritable |
|
Long |
LongWritable |
|
Double |
DoubleWritable |
|
String |
Text |
|
Map |
MapWritable |
|
Array |
ArrayWritable |
|
Null |
NullWritable |
文章名稱(chēng):MapReduce的基礎(chǔ)知識(shí)
地址分享:http://fisionsoft.com.cn/article/ccspiso.html


咨詢(xún)
建站咨詢(xún)
