20200602大資料mapreduce程式設計

2021-10-06 18:31:05 字數 3187 閱讀 6756

整理一下最近學習的mapreduce程式設計

聽說mapreduce公司裡基本上不用了,所以這裡就簡單學習一下

我都是在本地測試,不在yarn上測,這樣節省時間一些

1.mapreduce介紹

mapreduce思想在生活中處處可見。或多或少都曾接觸過這種思想。mapreduce的思想核心 是「分而治之」,適用於大量複雜的任務處理場景(大規模資料處理場景)。

map負責「分」,即把複雜的任務分解為若干個「簡單的任務」來並行處理。可以進行拆分的 前提是這些小任務可以平行計算,彼此間幾乎沒有依賴關係。

reduce負責「合」,即對map階段的結果進行全域性彙總。 mapreduce執行在yarn集群

1. resourcemanager 2. nodemanager

這兩個階段合起來正是mapreduce思想的體現。

2. mapreduce 程式設計規範

mapreduce的開發一共有八個步驟,其中map階段分為2個步驟,shuffle階段4個步驟,reduce階段分為2個步驟

map階段2個步驟

1. 設定 inputformat 類, 將資料切分為 key-value(k1和v1) 對, 輸入到第二步

2. 自定義 map 邏輯, 將第一步的結果轉換成另外的 key-value(k2和v2) 對, 輸出結果

shuffle階段4個步驟

3. 對輸出的 key-value 對進行 分割槽

4. 對不同分割槽的資料按照相同的 key 排序

5. (可選) 對分組過的資料初步 規約 , 降低資料的網路拷貝

6. 對資料進行 分組 , 相同 key 的 value 放入乙個集合中

reduce 階段 2 個步驟

7. 對多個 map 任務的結果進行排序以及合併, 編寫 reduce 函式實現自己的邏輯, 對輸入的 key-value 進行處理, 轉為新的 key-value(k3和v3)輸出

8. 設定 outputformat 處理並儲存 reduce 輸出的 key-value 資料

寫乙個wordcount的mapreduce**

vi 乙個 wc.txt

hello,world,hadoop

hive,sqoop,flume,hello

kitty,tom,jerry,world

hadoop

可以上傳到hdfs上然後跑yarn,也可直接跑本地

注意:首先你要配置一下pom.xml

用的什麼版本就配什麼版本

//有興趣可以去看看原始碼,我看著頭疼,棄了

@override

protected void map(longwritable key, text value, context context) throws ioexception, interruptedexception }}

public class wordcountreducer extends reducer

//2:將k3和v3寫入上下文中

context.write(key, new longwritable(count));}}

//每個main其實都差不多的,不過還是挺難寫的

public class jobmain extends configured implements tool

public static void main(string args) throws exception

@override

protected void reduce(text key, iterablevalues, context context) throws ioexception, interruptedexception

}public class mypartitioner extends partitionerelse}}

public class jobmain extends configured implements tool

public static void main(string args) throws exception

}資料可以去黑馬那邊找下 

sort:

資料:a    1

a    9

b    3

a    7

b    8

b    10

a    5

public class pairwritable implements writablecomparable

public pairwritable(string first, int second)

/*** 方便設定字段

*/public void set(string first, int second)

/*** 反序列化

*/@override

public void readfields(datainput input) throws ioexception

/*** 序列化

*/@override

public void write(dataoutput output) throws ioexception

/** 重寫比較器

*/public int compareto(pairwritable o) else

}public int getsecond()

public void setsecond(int second)

public string getfirst()

public void setfirst(string first)

@override

public string tostring() ';}}

@override

public  void map(longwritable key, text value, context context) throws ioexception, interruptedexception

}public class sortreducer extends reducer}}

public class secondarysort  extends configured implements tool

}得到的結果:

a    1

a    5

a    7

a    9

b    3

b    8

b    10

今天暫時先整理到這==

Mapr使用資料(四) MAPR指標和工作績效

該mapr度量服務收集並顯示詳細的分析有關組成您的hadoop工作的任務和任務的嘗試。您可以使用mapr控制系統,以顯示基於這些分析圖表和與特定的工作診斷效能問題。例如,如果乙個工作列出100 map任務完成和99 降低任務完成,您可以過濾檢視中的mapr控制系統只列出reduce任務。一旦你有你的...

大資料時代 大資料,大視野

關於 大資料,不同的書和不同的作者可能會有不太完全相同的定義。如,有的學者認為 所涉及的資料量規模巨大,無法通過目前主流軟體工具在合理時間內達到擷取 管理 處理並整理成為幫助企業經營決策更積極目的的資訊。而維克托認為大資料是人們在大規模資料的基礎上可以做到的事情,而這些事情在小規模資料的基礎上是無法...

20170706大資料工作

今天的工作,建表同時生成 上午 mybatis generator 自動生成工具,下午 建表同時生成 打包跑通整個流程。程式設計多年,踩了乙個基礎的坑 識別符號用來作為類 方法和變數的名字 語法規則 以字母 下劃線 美元符號 開始,後跟這三種符號或數字。至於為什麼變數名不能以數字開頭?我們可以假設變...