十三 MapReduce介紹

2021-10-05 22:29:10 字數 1537 閱讀 1674

mr是乙個分布式運算程式的程式設計框架,是使用者開發基於hadoop的資料分析應用核心框架,mr的核心功能就是將使用者編寫的業務邏輯**和自帶的預設元件整合成乙個完整的分布式運算程式併發執行在hadoop集群上。

1、優點

1.1 mr易於程式設計:它簡單的實現一些介面,就可以完成乙個分布表示式程式。這個程式可以分不到大量廉價的機器上執行,也就是說你寫乙個分布式程式,跟寫乙個簡單的序列程式是一模一樣的。就是因為這個特點使得mr程式設計變得非常流行。

1.2 良好的擴充套件性:當你的計算資源不能得到滿足的時候,你可以通過簡單的增加機器來擴充套件它的計算能力。

1.3 高容錯性:mr設計的初衷就是使程式能夠部署在廉價的pc機器上,這就要求它具有很高的容錯性。比如其中一台機器掛了,它可以把上面的計算任務轉移到另外乙個節點上執行,不至於這個任務執行失敗,而且這個過程不需要人工參與,而完全是由hadoop內部完成的。

1.4 適合pb級以上海量資料的離線處理:可以實現上千臺伺服器集群併發工作,提供資料處理能力。

2、缺點

2.1 不擅長實時計算:mr無法像mysql一樣,在毫秒或者秒級內返回結果。

2.2 不擅長流式計算:流式計算的輸入資料是動態的,而mapreduce的輸入資料集是靜態的,不能動態變化。這是因為 mr 自身的設計特點決定了資料來源必須是靜態的。

2.3 不擅長dag(有向圖)計算:多個應用程式存在依賴關係,後乙個應用程式的輸入為前乙個的輸出。在這種情況下,mr 並不是不能做,而是使用後,每個mapreduce作業的輸出結果都會寫入到磁碟,會造成大量的磁碟io,導致效能非常的低下。

1)分布式的運算程式往往需要分成至少2個階段。

2)第乙個階段的maptask併發例項,完全並行執行,互不相干。

3)第二個階段的reducetask併發例項互不相干,但是他們的資料依賴於上乙個階段的所有maptask併發例項的輸出。

4)mapreduce程式設計模型只能包含乙個map階段和乙個reduce階段,如果使用者的業務邏輯非常複雜,那就只能多個mapreduce程式,序列執行。

乙個完整的mapreduce程式在分布式執行時有三類例項程序:

1、map階段

(5)map()方法(maptask程序)對每乙個呼叫一次

2、reducer階段

(1)使用者自定義的reducer要繼承自己的父類

(3)reducer的業務邏輯寫在reduce()方法中

(4)reducetask程序對每一組相同k的組呼叫一次reduce()方法

3、driver階段
相當於yarn集群的客戶端,用於提交我們整個程式到yarn集群,提交的是封裝了mapreduce程式相關執行引數的job物件

MapReduce簡單介紹

mapreduce 定義 hadoop 中的 mapreduce 是乙個使用簡單的軟體框架,基於它寫出來的應用程式能夠執行在由上千個商用機器組成的大型集群上,並以一種可靠容錯式並行處理tb級別的資料集。mapreduce hadoop mapreduce 源於 google 在2004年12月份發表...

MapReduce入門介紹

mapreduce 定義 mapreduce 是乙個分布式運算程式的程式設計框架,是使用者開發 基於 hadoop 的資料分析應用 的核心框架。mapreduce 核心功能是將使用者編寫的業務邏輯 和自帶預設元件整合成乙個完整的分布式運算程式,併發執行在乙個 hadoop 集群上。mapreduce...

Hadoop筆記(一) MapReduce介紹

mapreduce提出了乙個程式設計模型,該模型將問題進行抽象,並轉換為乙個資料集 由鍵值對組成 的計算。該計算由map和reduce兩部分組成,提供對外的介面。定址時間的提高遠遠慢於傳輸速率的提高。mapreduce比較適合以批處理方式處理需要分析整個資料集的問題 ad hoc 一次寫入 多次讀取...