MAPREDUCER學習筆記

2022-09-10 21:30:39 字數 2382 閱讀 6057

mapreduce基本原理   

一,概念理解

1,mapreduce是乙個分布式運算程式的程式設計架構,相對於hdfs來說就是客戶端。其核心功能就是將使用者編寫的業務邏輯**和自帶預設元件整合成乙個完整的分布式運算程式,並執行在乙個hadoop集群上。

二,mapreduce框架結構及核心執行機制

2,mr程式執行的流程(以wordcount為例子)

maptask啟動後根據給定的切片範圍進行資料處理。

執行reducertask,將運算結果通過使用者指定的outputformat將結果輸出到外部儲存。

三,mapreduce程式的執行模式

1,本地執行模式:而處理的資料及輸出結果可以在本地檔案系統。

2,集群執行模式:將mapreduce程式提交給yarn集群resourcemanager,分發到很多的節點上併發執行處理的資料和輸出結果應該位於hdfs檔案系統。

四,wordcount示例編寫

1,定義乙個

package com;

import j**a.io.ioexception;

import org.apache.hadoop.io.intwritable;

import org.apache.hadoop.io.longwritable;

import org.apache.hadoop.io.text;

/*keyin指的是輸入的key

* valueuin指的是輸入的value

* keyout輸出的key值

* valueout輸出的value值

*/ /*longwritable key 讀取檔案內容的偏移量

* text value 文字neirong

* * */

//從寫map方法

@override

throws ioexception, interruptedexception

}}

2,定義乙個reducer類

package

com;

import

j**a.io.ioexception;

import

j**a.util.iterator;

import

org.apache.hadoop.io.intwritable;

import

org.apache.hadoop.io.text;

import

org.apache.hadoop.mapreduce.reducer;

/** reduce的keyin指的是輸入的key

* reduce的valuein 指的是輸入的value

* redude的keyout指的是 輸出的key

* reduce 的valueout 指的是 輸出的value值

* *

* */

public

class wordcountreducer extends reducer

context.write(keyin,

newintwritable(count));

} }

3,定義乙個主類,用來描述job並提交job

package

com;

import

org.apache.hadoop.conf.configuration;

import

org.apache.hadoop.fs.path;

import

org.apache.hadoop.io.intwritable;

import

org.apache.hadoop.mapred.jobconf;

import

org.apache.hadoop.mapreduce.job;

import

org.apache.hadoop.mapreduce.lib.input.fileinputformat;

import

org.apache.hadoop.mapreduce.lib.output.fileoutputformat;

import

com.sun.jersey.core.impl.provider.entity.xmljaxbelementprovider.text;

public

class

wordcountsubmit

}

MapReducer程式除錯技巧

寫過程式分布式 的人都知道,分布式的程式是比較難以除錯的,但是也不是不可以除錯,對於hadoop分布式集群來說,在其上面執行的是mapreduce程式,因此,有時候寫好了mapreduce程式之後,執行結果發現跟自己想要的結果不一樣,但是有沒有報錯,此時就很難發現問題,查詢問題的方法之一就是對程式進...

MapReducer中的多次歸約處理

我們知道,mapreduce 在reducer 可能有人疑惑幾個問題 端進行歸約處理?端進行歸約處理?端可以進行歸約處理,為什麼在reducer端還要處理?進行歸約後,資料量變小了,這樣再通過網路傳輸時,傳輸時間就變短了,減少了整個作業的執行時間。回答第二個問題 因為reducer 進行歸約的類稱為...

MapReducer糾錯之序列化反序列化問題

在mapreducer程式設計中經常會出現序列化反序列化的說法 在這裡解釋一下 序列化 序列化的意思就是把記憶體中的物件變成位元組儲存到磁碟上 反序列化 反序列化的意思就是把磁碟上的物件活化到記憶體中 說到這裡也許還是沒有說清楚序列化的意思,在大資料中,假設有乙個非常大的集群,也就是很多計算機,這一...