理解MapReduce哲學

來源:互聯網
上載者:User
關鍵字 理解 哲學 理流 可以 流程

Google工程師將MapReduce定義為一般的HTTP://www.aliyun.com/zixun/aggregation/14345.html">資料處理流程。 一直以來不能完全理解MapReduce的真義,為什麼MapReduce可以「一般」?

最近在研究Spark,拋開Spark核心的記憶體計算,這裡只關心Spark做了什麼。 在Spark上的所有工作都是圍繞資料集進行,包括創建新的資料集、對資料集的轉換、對資料集的歸約。 對於實際應用中的資料處理流程,Spark的這些似乎足夠了,足夠形成一套一般的資料處理流程。 的確,Spark以資料集為操作物件,而可以不論資料集中資料的類型——很樸素的思想!

那麼MapReduce呢? MapReduce是否應當被拋棄? 在基於Hadoop的即時查詢問題上,Hadoop的MapReduce框架也因其效率低下而飽受詬病。 對於這個問題我想說的是,這絲毫不是MapReduce自身的問題,也不應全是Hadoop的MapReduce框架的問題,而更主要的是像Hive這類應用不當使用MapReduce的問題。 MapReduce無辜地說:「我只對單輪MapReduce處理流程負責,你應當慎重考慮MapReduce處理流程的資料來源和資料去向。 」

現在來讀讀MapReduce的哲學。 現實世界的資料是多樣的,這些資料在進入資訊系統處理之前,我們無法確定哪些資料對於我們的資料查詢或分析任務有用或無用,我們只能將所有能夠收集到的資料以最原始的形式存儲下來。 接下來就是MapReduce施展神威的時刻。 MapReduce第一步,Map:將資料歸類,為每個資料打上一個標明資料屬於哪個主題的標籤——Key或Key的一部分。 經過Map過程,無用資料被過濾,異構資料被統一表示,並且資料按主題分好組。 下一步如果要查詢或分析特定主題的資料,可以按主題取一組或多組資料。 MapReduce第二步,Reduce:將資料歸約,在選定的資料上實施查詢或分析動作,輸出查詢或分析結果。 Reduce過程可以做很多事情,可以做各類事情,包括遞迴發起新的MapReduce處理流程。 只要還沒有產生最終的查詢或分析結果,就盡可能不要從Reduce過程返回到使用者。 看看Hive做了什麼,Hive將一個SQL查詢命令翻譯成多個循序的MapReduce處理流程,難道不能在一個MapReduce處理流程的Reduce過程中完成所有工作嗎? Hive的失敗在於把MapReduce當成了工具而不是指導思想——世俗化了!

MapReduce與Spark,二者並不排斥,而完全可能很好地結合。 我個人的想法是:在MapReduce的Reduce過程中使用Spark完成需要對資料集進行多次反覆運算才能得到結果的任務,如SQL查詢。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.