tft每日頭條

 > 生活

 > mapreduce的基本思想

mapreduce的基本思想

生活 更新时间:2025-01-10 15:17:36

對于MapReduce相信大家并不陌生,它是大數據Hadoop家族中最重要的成員之一,是一個運行在Hadoop平台上的分布式計算框架,對于大數據這塊,大家總是覺得高深莫測,淺嘗辄止,今天我們就通俗易懂的給大家講講,讓大家真正的感受到MapReduce是什麼?如何使用?在哪些場景下用?

我們先來一個簡單的Case,冬天來了,是吃火鍋的季節了,你買了肥牛、蘑菇、白菜、香菜、豆腐、鴨血、小蔥,一個個的處理幹淨,裝在盤子裡,火鍋底料一放,菜一下,香噴噴的火鍋就出來了。在這個吃火鍋的場景中,我們可以抽象一下,它包含兩部分:洗幹淨菜,煮菜,換做MapReduce的語言,每洗幹淨一個菜就是一個Map操作,将白菜Map一下,香菜Map一下,每煮一次火鍋就是一個Reduce操作。這意味着每煮一次火鍋就需要把洗幹淨的菜都放進來,也就是把所有Map操作的菜都處理一下。

MapReduce還是一個分布式計算框架,所謂分布式就是可以多個操作并行。你煮的火鍋實在太好吃了,在民意要求下,你開啟了火鍋店,做大做強又開啟了火鍋分店,這時候你需要多個人去洗菜,一個人負責洗白菜、一個人負責切肥牛、一個人負責切豆腐,當所有的人都處理完了之後,就有了處理好的白菜、肥牛、豆腐,這些都是基于Map白菜、Map肥牛、Map豆腐的操作下進行的,Reduce操作是基于Key來進行,Key就是洗幹淨的白菜、肥牛、豆腐,Reduce之後就是一桌又一桌的火鍋。

總結一下,MapReduce是包含兩部分,即Map操作、Reduce操作,Map操作就是映射操作,它接受一個輸入,産生一個中間鍵值對的輸出,MapReduce框架會把Map函數中參數的中間鍵值對裡相同的鍵值傳給Reduce函數。Reduce操作就是化簡,它接受一個鍵值,将這組值合并産生更小的值。

今年的雙十一開始了,老闆交給你一個任務,統計下所有牛仔褲最受歡迎的top3。如果是小電商平台,那很簡單,寫個程序獲取所有的牛仔褲,遍曆一下每條牛仔褲被購買的次數,再做一個排序,就知道最受歡迎的牛仔褲了。但是當我是一個中型電商平台時,遍曆就會比較慢了,這時候可以寫一個多線程的程序,在多核機器上去運行就行。當我是一個大型電商平台,比如淘寶、京東、拼多多,我們就可以把計算每個牛仔褲被買次數的作業分給多台機器去計算,把總的銷售數據分成N份,每台計算機計算1份,最後彙總起來倒序排即可。上述三種算法,其實我們也可以使用MapReduce來完成噢。

在MapReduce中,Map函數和Reduce函數都是由我們自己定義的,在統計牛仔褲的銷量top3場景中,我們定義map函數獲取每款牛仔褲,Reduce函數統計每款牛仔褲被購買的次數。在下圖中,Map函數接受的key是所有商品,值是取牛仔褲,每遇到一個牛仔褲就産生一個中間鍵值對<jeans,1>,不同牛仔褲是不同的鍵值對,比如bluejeans,yellowjeans。Map函數将鍵值相同的鍵值對都傳遞給reduce,reduce将每個鍵值對的value進行累加,最後獲取到每條牛仔褲被購買的次數,存儲在底層的分布式文件系統HDFS中,業務層可以通過接口獲取數據,展現最熱銷的top3牛仔褲。

mapreduce的基本思想(最簡單易懂的MapReduce使用講解)1

通過實例我們明白了MapReduce是個什麼東東,我們可以再結合Google論文中的工作原理流程圖來進行最後的梳理。

在流程圖中上層業務通過UserProgram連接MapReduce庫,将輸入文件分成M份,即圖中的spilt0、spilt1、spilt2、spilt3、spilt4...,在使用master節點給worker節點分配Map作業,我們有M份文件就分配M個worker,被分配了Map作業的worker讀取對應的數據,生成中間鍵值對,存儲在内存和磁盤中,Reduce函數也會根據作業數進行分區,如果有M個作業,就分成M個區,由Master節點把分區作業從磁盤中傳遞給到ReduceWorker節點,Reduceworker節點獲取到所有的中間鍵值對之後,進行排序處理,獲取每個相同中間鍵值對的值。當所有的Map作業和Reduce作業都執行完了之後,master節點喚醒userprogram獲取數據。

mapreduce的基本思想(最簡單易懂的MapReduce使用講解)2

通過老闆安排的簡簡單單的獲取最熱銷牛仔褲的任務,我們從原理到實踐講解了MapReduce的使用。MapReduce它比較适合大型網站的數據統計、在海量數據中獲取某些有特征的數據,但是不太适合實時計算,從它的輸入都是靜态數據,計算過程,存儲是在HDFS都可以看到執行任務相對耗時比較長。我們結合自己業務情況,使用在最合适的場景即可。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved