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