Hadoop 適用範圍

首先咱們看一下Hadoop解決了什麼問題。Hadoop就是解決了大數據(大到一臺計算機沒法進行存儲,一臺計算機沒法在要求的時間內進行處理)的可靠存儲和處理。算法

  • HDFS,在由普通PC組成的集羣上提供高可靠的文件存儲,經過將塊保存多個副本的辦法解決服務器或硬盤壞掉的問題。編程

  • MapReduce,經過簡單的Mapper和Reducer的抽象提供一個編程模型,能夠在一個由幾十臺上百臺的PC組成的不可靠集羣上併發地,分佈式地處理大量的數據集,而把併發、分佈式(如機器間通訊)和故障恢復等計算細節隱藏起來。而Mapper和Reducer的抽象,又是各類各樣的複雜數據處理均可以分解爲的基本元素。這樣,複雜的數據處理能夠分解爲由多個Job(包含一個Mapper和一個Reducer)組成的有向無環圖(DAG),而後每一個Mapper和Reducer放到Hadoop集羣上執行,就能夠得出結果。服務器


  • Hadoop的侷限和不足 可是,MapRecue存在如下侷限,使用起來比較困難。
    • 抽象層次低,須要手工編寫代碼來完成,使用上難以上手。併發

    • 只提供兩個操做,Map和Reduce,表達力欠缺。app

    • 一個Job只有Map和Reduce兩個階段(Phase),複雜的計算須要大量的Job完成,機器學習

    • 處理邏輯隱藏在代碼細節中,沒有總體邏輯分佈式

    • 中間結果也放在HDFS文件系統中oop

    • ReduceTask須要等待全部MapTask都完成後才能夠開始性能

    • 時延高,只適用Batch數據處理,對於交互式數據處理,實時數據處理的支持不夠學習

    • 對於迭代式數據處理性能比較差

    好比說,用MapReduce實現兩個表的Join都是一個頗有技巧性


    可是基於Hadoop MapReduce這麼多的侷限性,出現了不少新技術來解決這些問題。比較突出的技術就是Spark.一下作些介紹。

    Apache Spark

    Apache Spark是一個新興的大數據處理的引擎,主要特色是提供了一個集羣的分佈式內存抽象,以支持須要工做集的應用。擁有Hadoop MapReduce所具備的優勢;但不一樣於MapReduce的是Job中間輸出結果能夠保存在內存中,從而再也不須要讀寫HDFS,所以Spark能更好地適用於數據挖掘與機器學習等須要迭代的MapReduce的算法。

相關文章
相關標籤/搜索