MapReduce原理及程式設計

2021-10-07 15:44:06 字數 3638 閱讀 1820

二.mapreduce程式設計模型

mapreduce是乙個分布式計算框架

適用於大規模資料處理場景

每個job包含map和reduce兩部分

分而治之

構建抽象模型:map和reduce

隱藏系統層細節

優點

**實現

資料定義格式

mapreduce執行過程

必須可序列化(serializablehadoop實現的是writable介面

都繼承了writable介面

keys必須實現writablecomparable介面

inputsplit(資料切片)

切片和資料塊區別?

資料庫block:hdfs上的物理切割,是乙個物理概念

split劃分是在記錄的邊界處

通常情況下切片的個數等於(不應大於)資料塊的個數

常用inputformat介面實現類

**示例如下:

public

class

extends

}}

combiner相當於本地化的reduce操作reducer可以被用作combiner的條件實現combiner用於在map端對key進行分割槽

自定義partitioner

package hadoop.hdfs.flowcount.partitioner;

import org.apache.hadoop.io.text;

import org.apache.hadoop.mapreduce.partitioner;

/** * @author sunyong

* @date 2020/07/02

* @description

*/public

class

provincepartitioner

extends

partitioner

elseif(

"137"

.equals

(pronum)

)elseif(

"138"

.equals

(pronum)

)elseif(

"139"

.equals

(pronum)

)return partition;

}}

reducer主要方法如下:void setup(context context)void reduce(key key, iterable values, context context)void cleanup(context context)

定義了如何將資料從reducer進行輸出

常用outputformat介面實現類

//建立job

job job = job.

getinstance

(getconf()

,"wordcountmr");

//設定jar一般為載入當前類

job.

setjarbyclass

(類名.

class);

//設定輸入

fileinputformat.

addinputpath

(job,

newpath

(args[0]

));job.

setinputformatclass

( textinputformat.

class);

//設定輸出

fileoutputformat.

setoutputpath

( job,

newpath

(args[1]

));job.

setoutputformatclass

( textoutputformat.

class);

//設定map

job.

class);

job.

setmapoutputkeyclass

( text.

class);

job.

setmapoutputvalueclass

( intwritable.

class);

//設定reduce

job.

setreducerclass

( wcreducer.

class);

job.

setoutputkeyclass

( text.

class);

job.

setoutputvalueclass

( intwritable.

class);

//提交程式執行

boolean result = job.

waitforcompletion

(true);

system.

exit

(result?0:1);

1.reduce join2.map join問題使用推測執行啟動備份任務

MapReduce程式設計job概念原理

在hadoop中,每個mapreduce任務都被初始化為乙個job,每個job又可分為兩個階段 map階段和reduce階段。這兩個階段分別用兩個函式來表示。map函式接收乙個形式的輸入,然後同樣產生乙個形式的中間輸出,hadoop會負責將所有具有相同中間key值的value集合在一起傳遞給redu...

Mapreduce工作原理及流程

乙個mapreduce作業在hado上執行的整個過程可以分為4個實體 1 客戶端,提交mapreduce作業 在客戶端上使用runjob 方法來新建jobclient例項和呼叫它的submitjob 方法。提交作業後,runjob將每秒輪詢作業的進度,如果發現與上乙個記錄不同,便把報告顯示到控制台。...

MapReduce環境 原理 架構及操作

hadoop培訓課程 mapreduce環境 原理 架構及操作 1 環境說明 hadoop搭建環境 l 虛擬機器作業系統 centos6.6 64位,單核,1g記憶體 l jdk 1.7.0 55 64位 l hadoop 1.1.2 2 mapreduce原理 2.1 mapreduce簡介 ma...