mr執行原理

2021-10-21 20:15:58 字數 2126 閱讀 9925

mapreduce思想 先分再合 分而治之

map:負責分,所謂的分指的是把大的複雜的任務劃分成小的任務,然後並行處理提高效率

(如果任務不可以拆分或者任務內部存在著依賴關係 這樣不適合分而至之)

reduce:負責合 ,所謂的合指的是把上步分成的小任務結果聚合成最終的結果

兩步加起來就是mapreduce思想的體現。

hadoop mapreduce 設計構思

如何解決大資料的高效計算問題:使用先分再合 分而治之的思想

抽象出map reduce的程式設計模型:在mr框架中 資料都是以kv鍵值對形式的存在

統一封裝底層架構邏輯 使用者負責做什麼 程式負責怎麼做 兩者結合構成mr程式

所謂的程式設計框架或者說程式設計規範指的是:只要按照別人的規範套路來 就可以實現與之對應的功能

mapreduc程式設計規範和架構構思

從**層面看把上面3個類打成jar包 就構成了乙個mr的程式。

1從執行層面看:mr案例:wordcount

需求描述:統計指定檔案中每個單詞出現的總次數

hadoop allen hadoop

allen hello hadoop

hadoop 2

allen 312

處理思路

集群模式

指的把程式打成jar包提交給yarn集群執行 由yanr分配運算資源

這種模式是mr程式在正式環境中執行的模式

這種模式下mr程式才是分布式計算的程式

這種模式下資料位於hdfs檔案系統之上。

本地模式

指的是在本地以執行緒模型mr執行的環境 由本地機器提供運算資源

這種模式是開發環境使用

這種模式程式是單機版的 不是分布式的程式

這種模式通常資料可以位於本地檔案系統

至於mr程式到底是是本地模式還是集群模式,取決於配置

mapreduce.framework.name 是local 還有yarn

如果不寫會嘗試載入執行程式所在機器的環境變數 檢視具體配置。

關於mr的輸入

如果指向的是乙個檔案 那麼就處理這個檔案

如果指向的是乙個資料夾(目錄),那麼就處理這個資料夾下所有的檔案

mapreduce程式 maptask個數由哪些因數決定

檔案的個數

檔案的大小

切片的大小

reducetask個數是由哪些因數決定

預設是1

是由設定決定

job.setnumreducetasks(n)

n為幾 個數就是幾

mapreduce程式設計技巧

在mr中 要牢牢把握住key是什麼 因為key有很多預設的屬性存在

排序 -----> key的字典序

分割槽 -----> key雜湊 % reducetask

分組 -----> key相同的分為一組

在mr中 可以把上乙個mr的輸出直接作為下乙個mr的輸入

程式可以自動識別裡面那些是真實資料所在的檔案。

輸出資料檔案有多個------>reducetask至少兩個及以上------>預設是乙個,如何設定多個?------>job.setnumreducetasks(n)----->涉及到資料的分割槽-------->分割槽的規則------->預設分割槽規則---->key的雜湊值對reducetaks個數取模-------->預設分割槽規則滿足業務需求嗎?----->如果滿足,直接用----->如果不滿足------>自定義分割槽規則------>如何自定義分割槽呢?-------->接下來認真聽課------>如何使得自定義分割槽生效

首先寫乙個類 繼承partitioner

重新裡面的 getpartition 該方法返回值是幾 資料的分割槽標號就是幾

最後需要在**中進行設定:

@override

public int compare(writablecomparable a, writablecomparable b)

MR執行流程

在這裡插入描述 資料進入maptask使用inputformat讀取資料 預設讀取格式是textinputformat 使用getsplits對資料目錄進行邏輯切分得到splits,有多少個splits 切片 就有多少個maptask 使用recordreader物件讀取 使用設定好的分隔符 切片裡...

hbase中執行mr任務

1.檢視hbase的mr任務的執行 bin hbase mapredcp 2.環境 永久生效,在 etc profile vi etc profile export hbase home opt hbase export hadoop home opt hadoop 並在hadoop env.sh中...

MR1和MR2的工作原理

1 客戶端向jobtracker請求乙個新的作業id 通過jobtracker的getnewjobid 方法獲取,見第2步 2 計算作業的輸入分片,將執行作業所需要的資源 包括jar檔案 配置檔案和計算得到的輸入分片 複製到乙個以id命名的jobtracker的檔案系統中 hdfs 見第3步 3 告...