国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        初識MapReduce的應用場景(附JAVA和Python代碼)

        從這篇文章開始,我會開始系統(tǒng)性地輸出在大數(shù)據(jù)踩坑過程中的積累,后面會涉及到實戰(zhàn)項目的具體操作,目前的規(guī)劃是按照系列來更新,力爭做到一個系列在5篇文章之內(nèi)總結(jié)出最核心的干貨,如果是涉及到理論方面的文章,會以畫圖的方式來講解,如果是涉及到操作方面,會以實際的代碼來演示。

        這篇是MapReduce系列的第一篇,初識MapReduce的應用場景,在文章后面會有關(guān)于代碼的演示。

        Hadoop作為Apache旗下的一個以Java語言實現(xiàn)的分布式計算開源框架,其由兩個部分組成,一個是分布式的文件系統(tǒng)HDFS,另一個是批處理計算框架MapReduce。這篇文章作為MapReduce系列的第一篇文章,會從MapReduce的產(chǎn)生背景、框架的計算流程、應用場景和演示Demo來講解,主要是讓大家對MapReduce的這個批計算框架有個初步的了解及簡單的部署和使用。

        目錄

        MapReduce的產(chǎn)生背景

        MapReduce的計算流程

        MapReduce的框架架構(gòu)

        MapReduce的生命周期

        應用場景

        演示Demo

        MapReduce的產(chǎn)生背景

        Google 在2004年的時候在 MapReduce: Simplified Data Processing on Large Clusters 這篇論文中提出了MapReduce 的功能特性和設(shè)計理念,設(shè)計MapReduce 的出發(fā)點就是為了解決如何把大問題分解成獨立的小問題,再并行解決。例如,MapReduce的經(jīng)典使用場景之一就是對一篇長文進行詞頻統(tǒng)計,統(tǒng)計過程就是先把文章分為一句一句,然后進行分割,最后進行詞的數(shù)量統(tǒng)計。

        MapReduce的架構(gòu)圖

        MapReduce的架構(gòu)圖

        這里的Client和TaskTracker我都使用一個來簡化了,在實際中是會有很個Client和TaskTracker的。

        我們來講解下不同的組件作用

        Client

        Client的含義是指用戶使用MapReduce程序通過Client來提交任務到Job Tracker上,同時用戶也可以使用Client來查看一些作業(yè)的運行狀態(tài)。

        Job Tracker

        這個負責的是資源監(jiān)控和作業(yè)調(diào)度。JobTracker會監(jiān)控著TaskTracker和作業(yè)的健康狀況,會把失敗的任務轉(zhuǎn)移到其他節(jié)點上,同時也監(jiān)控著任務的執(zhí)行進度、資源使用量等情況,會把這些消息通知任務調(diào)度器,而調(diào)度器會在資源空閑的時候選擇合適的任務來使用這些資源。

        任務調(diào)度器是一個可插拔的模塊,用戶可以根據(jù)自己的需要來設(shè)計相對應的調(diào)度器。

        TaskTracker

        TaskTracker會周期性地通過Hearbeat來向Job Tracker匯報自己的資源使用情況和任務的運行進度。會接受來自于JobTaskcker的指令來執(zhí)行操作(例如啟動新任務、殺死任務之類的)。

        在TaskTracker中通過的是slot來進行等量劃分一個節(jié)點上資源量,只用Task獲得slot的時候才有機會去運行。調(diào)度器的作用就是進行將空閑的slot分配給Task使用,可以配置slot的數(shù)量來進行限定Task上的并發(fā)度。

        Task

        Task分為Map Task和Reduce Task,在MapReduce中的 split 就是一個 Map Task,split 的大小可以設(shè)置的,由 mapred.max.spilt.size 參數(shù)來設(shè)置,默認是 Hadoop中的block的大小,在Hadoop 2.x中默認是128M,在Hadoop 1.x中默認是64M。

        在Task中的設(shè)置可以這么設(shè)置,一般來講,會把一個文件設(shè)置為一個split,如果是小文件,那么就會存在很多的Map Task,這是特別浪費資源的,如果split切割的數(shù)據(jù)塊的量大,那么會導致跨節(jié)點去獲取數(shù)據(jù),這樣也是消耗很多的系統(tǒng)資源的。

        MapReduce的生命周期

        MapReduce的生命周期

        一共分為5個步驟:

        作業(yè)的提交和初始化

        由用戶提交作業(yè)之前,需要先把文件上傳到HDFS上,JobClient使用upload來加載關(guān)于打包好的jar包,JobClient會RPC創(chuàng)建一個JobInProcess來進行管理任務,并且創(chuàng)建一個TaskProcess來管理控制關(guān)于每一個Task。

        JobTracker調(diào)度任務

        JobTracker會調(diào)度和管理任務,一發(fā)現(xiàn)有空閑資源,會按照一個策略選擇一個合適的任務來使用該資源。

        任務調(diào)度器有兩個點:一個是保證作業(yè)的順利運行,如果有失敗的任務時,會轉(zhuǎn)移計算任務,另一個是如果某一個Task的計算結(jié)果落后于同一個Task的計算結(jié)果時,會啟動另一個Task來做計算,最后去計算結(jié)果最塊的那個。

        任務運行環(huán)境

        TaskTracker會為每一個Task來準備一個獨立的JVM從而避免不同的Task在運行過程中的一些影響,同時也使用了操作系統(tǒng)來實現(xiàn)資源隔離防止Task濫用資源。

        執(zhí)行任務

        每個Task的任務進度通過RPC來匯報給TaskTracker,再由TaskTracker匯報給JobTracker。

        任務結(jié)束,寫入輸出的文件到HDFS中。

        MapReduce 的計算流程

        先來看一張圖,系統(tǒng)地了解下 MapReduce 的運算流程。

        MapReduce的運算流程

        為了方便大家理解,重新畫了一張新的圖,演示的是關(guān)于如何進行把一個長句進行分割,最后進行詞頻的統(tǒng)計(已忽略掉標點符號)。

        簡單的實操例子

        整個過程就是先讀取文件,接著進行split切割,變成一個一個的詞,然后進行 map task 任務,排列出所有詞的統(tǒng)計量,接著 sorting 排序,按照字典序來排,接著就是進行 reduce task,進行了詞頻的匯總,最后一步就是輸出為文件。例如圖中的 spacedong 就出現(xiàn)了兩次。

        其中對應著的是 Hadoop Mapreduce 對外提供的五個可編程組件,分別是InputFormat、Mapper、Partitioner、Reduce和OutputFormat,后續(xù)的文章會詳細講解這幾個組件。

        用一句話簡單地總結(jié)就是,Mapreduce的運算過程就是進行拆解-排序-匯總,解決的就是統(tǒng)計的問題,使用的思想就是分治的思想。

        MapReduce的應用場景

        MapReduce 的產(chǎn)生是為了把某些大的問題分解成小的問題,然后解決小問題后,大問題也就解決了。那么一般有什么樣的場景會運用到這個呢?那可多了去,簡單地列舉幾個經(jīng)典的場景。

        計算URL的訪問頻率

        搜索引擎的使用中,會遇到大量的URL的訪問,所以,可以使用 MapReduce 來進行統(tǒng)計,得出(URL,次數(shù))結(jié)果,在后續(xù)的分析中可以使用。

        倒排索引

        Map 函數(shù)去分析文件格式是(詞,文檔號)的列表,Reduce 函數(shù)就分析這個(詞,文檔號),排序所有的文檔號,輸出(詞,list(文檔號)),這個就可以形成一個簡單的倒排索引,是一種簡單的算法跟蹤詞在文檔中的位置。

        Top K 問題

        在各種的文檔分析,或者是不同的場景中,經(jīng)常會遇到關(guān)于 Top K 的問題,例如輸出這篇文章的出現(xiàn)前5個最多的詞匯。這個時候也可以使用 MapReduce來進行統(tǒng)計。

        演示Demo

        今天的代碼演示從Python和Java兩個版本的演示,Python版本的話便是不使用封裝的包,Java版本的話則是使用了Hadoop的封裝包。接下來便進行演示一個MapReduce的簡單使用,如何進行詞匯統(tǒng)計。

        1  2  下一頁>  
        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

        發(fā)表評論

        0條評論,0人參與

        請輸入評論內(nèi)容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關(guān)注公眾號
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯
          x
          *文字標題:
          *糾錯內(nèi)容:
          聯(lián)系郵箱:
          *驗 證 碼:

          粵公網(wǎng)安備 44030502002758號

          主站蜘蛛池模板: 日韩AV中文字幕一区| 77777色| 伊人高清在线视频| 抚远县| 亚洲不卡视频| 久久av一区二区三区| 日本99视频| jizz欧美| 深水埗区| 欧美亚韩一区二区三区| 熟妇自搞| 定陶县| 欧美成人精品| 在线免费看AV| 国产精品香蕉| 松下纱荣子被c到高潮下不了床| 最新中文字幕在线| 男女羞羞| 湟源县| jizzjizzyou| 国产黄片视频在线观看| 人妖91| 91资源在线| 1024你懂的日韩人妻学生| 亚州九九久久| 绥德县| www.97色伦| 四虎永久在线精品无码| 久草视频观看| 嘉荫县| 国产av制服丝袜| 成人A在线播放| 札达县| 中文字幕三区| 青青草99| 金山区| 久久久女人| 综合AV第一页| 普兰店市| 国产VA视频| 老鸭窝成人|