mapreduce任務編寫分為兩個階段:map階段和reduce階段,每個階段都以鍵值對作為輸入和輸出。對於ncdc數 據找出每年的最高氣溫,map階段輸入為原始資料以偏移量為鍵,每行資料為值,輸出每條記錄的年份與溫度的鍵值對,如圖所示:
圖1 map階段輸入資料格式
reduce階段的輸入為map階段的輸出,該輸出經過處理後將相同鍵對應的值排列在一起組成新的鍵值對作為reduce輸入(shuffle),含有相同鍵的元組會被傳輸到同乙個reducer任務中,reduce的輸出為計算得到的年份與該年氣溫最大值的鍵值對形式,如圖所示:
讀取ncdc資料找出每年的最高氣溫的整體流程如下所示:
圖5 ncdc資料計算每年最高氣溫整體流程圖
讀取原始資料,並將資料轉換成偏移量為鍵,每行內容為值的資料形式(input);
將步驟一得到的鍵值對資料進一步處理,提取出每行中的資料一一對應為年份為鍵,溫度為值的資料形式(map);
對map階段輸出的鍵值對按鍵進行排序處理,相同鍵對應的值放在一起(shuffle);
對每個鍵對應的值列表取最大值,最後得到年份和該年最高溫度的鍵值對形式(reduce);
輸出reduce結果(output).
mapreduce應用分為以下幾個階段
map:從儲存系統(如hdfs)中讀取資料
sort:根據鍵對map任務中的輸入資料進行排序
shuffle:劃分排序後的資料並在集群節點中重新分配
reduce:讀取合併後的資料並把它們集成為乙個結果
其中map和reduce需要編寫,其他階段由mapreduce框架進行處理。
public
class
extends
else
string quality = line.
substring(92
,93);
if(airtemperature != missing && quality.
matches
("[01459]"))
}}
map方法是對輸入資料變換,輸入和輸出始終是一一對應的關係,即輸入一行資料,輸出的是對該行資料的處理結果。
public
class
temperaturereducer
extends
reducer
//將鍵與對應的最大值寫入context
context.
write
(key,
newintwritable
(maxvalue));
}}
reduce操作需要類繼承reducer類,該類同樣是乙個包含四個引數型別的泛型類,四個泛型型別分別對應reduce方法的輸入鍵、reduce方法的輸入值、reduce方法的輸出鍵、reduce方法的輸出值,其中,前兩個泛型型別必須和map方法對應的輸出鍵、值型別相對應。由於每條資料中,乙個鍵對應多個值,即值的集合,因此在重寫的reduce方法引數中值型別為iterable。
mapreduce執行類如下所示:
public
class
tempraturetest
}
mapreduce的作業job是客戶端需要執行的乙個工作單元,它包括輸入資料、mapreduce程式和配置資訊。hadoop將作業分成若干個任務(task)來執行,任務分為map和reduce兩類。hadoop將mapreduce的輸入資料劃分成等長的小資料塊,稱為分片,並為每個分片構建乙個map任務,map任務處理由使用者定義的方法決定。對於分片的大小,乙個合理的分片大小趨向於hdfs的乙個塊大小,預設為128m,因為它是確保可以儲存在單個節點上的最大輸入塊的大小。如果分片垮兩個資料塊,則hdfs節點基本上不可能同時儲存這兩個資料塊。
單個reduce任務流如下所示:
圖6 單個reduce任務
多個reduce任務流如下所示:
圖7 多個reduce任務
從圖6、圖7可以看出對於多個reduce任務的mapreduce,map操作後會對輸出進行分割槽(partition),為每個reduce任務建立乙個分割槽,並且在map和reduce之間的shuffle操作時,乙個reduce任務的輸入來自多個map任務。
[1] tom while, hadoop權威指南(第四版)[m].北京, 清華大學出版社, 2017.
[2] benoy antony, konstantin boundnink, chryl adams, et al. hadoop大資料解決方案[m].北京, 清華大學出版社, 2017.
Hadoop大資料處理
hadoop大資料處理 以大資料處理系統的三大關鍵要素 儲存 計算 與 容錯 為起點,深入淺出地介紹了如何使用hadoop這一高效能分布式技術完成大資料處理任務。本書不僅包含了使用hadoop進行大資料處理的實踐性知識和示例,還以 並茂的形式系統性地揭示了hadoop技術族中關鍵元件的執行原理和優化...
大資料處理架構Hadoop
hive 資料倉儲 把sql語句轉換成mapreduce作業 pig流資料處理 乙個基於hadoop的大規模資料分析平台提供類似sql的查詢語言pig latin oozie作業流排程系統 hadoop上的工作流管理系統 zookeeper分布式協調服務 提供分布式協調一致性服務 hbase列族資料...
大資料處理框架 Hadoop簡單了解
大資料 收集 整理和處理大容量資料集,並從中獲得見解所需的非傳 略和技術的總稱。人工智慧 圖靈測試 指人和機器在被隔開的情況下,通過一些裝置向機器隨意提問,經過多次測試後,如果有超過30 的人不能確定被測試者是人還是機器,那麼這台機器就通過了測試,並被認為具有人類智慧型。如果乙個東西具有學習 分類和...