精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Spark 是否真的比 MapReduce 技高一籌

責任編輯:editor005

作者:譯:古月水語

2016-02-19 14:00:25

摘自:極分享

小結:Spark 更易于編程,同時也包含交互式模式;Hadoop MapReduce 不易編程但是現有的很多工具使其更易于使用。小結: Spark 和 Hadoop MapReduce 具有相同的數據類型和數據源的兼容性。

Apache 基金會下的 Spak 再次引爆了大數據的話題。帶著比 Hadoop MapReduce 速度要快 100 倍的承諾以及更加靈活方便的 API,一些人認為這或許預示著 Hadoop MapReduce 的終結。

作為一個開源的數據處理框架,Spark 是如何做到如此迅速地處理數據的呢?秘密就在于它是運行在集群的內存上的,而且不受限于 MapReduce 的二階段范式。這大大加快了重復訪問同一數據的速度。

Spark 既可以單獨運行,也可以運行在 Hadoop YARN 上(注:Hadoop第二代框架中的改進框架,用于將資源管理和處理組件分開,基于YARN的結構不受 MapReduce 約束),此時 Spark 可以直接從 HDFS (Hadoop Distributed File System 分布式文件系統)中讀取數據。 諸如 Yahoo(雅虎)、Intel(因特爾)、Baidu(百度)、Trend Micro(趨勢科技)和 Groupon(高朋)等公司已經在使用 Spark 了。

聽上去好像 Spark 已經注定要取代 Hadoop MapReduce 了。但真的是這樣嗎?本文我們將對比這兩個平臺來看看是否 Spark 真的技高一籌。

Spark 是否真的比 MapReduce 技高一籌

  性能

Spark 在內存中處理數據,而 Hadoop MapReduce 是通過 map 和 reduce 操作在磁盤中處理數據。因此從這個角度上講 Spark 的性能應該是超過 Hadoop MapReduce 的。

然而,既然在內存中處理,Spark 就需要很大的內存容量。就像一個標準的數據庫系統操作一樣, Spark 每次將處理過程加載到內存之中,然后該操作作為緩存一直保持在內存中直到下一步操作。如果 Spark 與其它資源需求型服務一同運行在 Hadoop YARN 上,又或者數據塊太大以至于不能完全讀入內存,此時 Spark 的性能就會有很大的降低。

與此相反, MapReduce 會在一個工作完成的時候立即結束該進程,因此它可以很容易的和其它服務共同運行而不會產生明顯的性能降低。

當涉及需要重復讀取同樣的數據進行迭代式計算的時候,Spark 有著自身優勢。 但是當涉及單次讀取、類似 ETL (抽取、轉換、加載)操作的任務,比如數據轉化、數據整合等時,MapReduce 絕對是不二之選,因為它就是為此而生的。

小結:當數據大小適于讀入內存,尤其是在專用集群上時,Spark 表現更好;Hadoop MapReduce 適用于那些數據不能全部讀入內存的情況,同時它還可以與其它服務同時運行。

使用難度

Spark 有著靈活方便的Java,Scala和 Python 的API,同時對已經熟悉 SQL 的技術員工來說, Spark 還適用 Spark SQL(也就是之前被人熟知的 Shark)。多虧了 Spark 提供的簡單易用的構造模塊,我們可以很容易的編寫自定義函數。它甚至還囊括了可以即時反饋的交互式命令模式。

Hadoop MapReduce 是用 Java 編寫的,但由于其難于編程而備受詬病。盡管需要一定時間去學習語法,Pig 還是在一定程度上簡化了這個過程, Hive也為平臺提供了 SQL 的兼容。一些 Hadoop 工具也可以無需編程直接運行 MapReduce 任務。Xplenty 就是一個基于 Hadoop 的數據整合服務,而且也不需要進行任何編程和部署。

盡管 Hive 提供了命令行接口,但 MapReduce 并沒有交互式模式。諸如 Impala,Presto 和 Tez 等項目都在嘗試希望為 Hadoop 提供全交互式查詢模式。

安裝與維護方面, Spark 并不綁定在 Hadoop 上,雖然 在 Hortonworks(HDP 2.2 版) 和 Cloudera(CDH 5 版) 的產品中 Spark 和 Hadoop MapReduce 都包含在其分布式系統中。(注: Cloudera, Hortonworks 及 MapR 是 Hadoop 領域三大知名的初創公司,致力于打造更好的 Hadoop 企業版應用)。

小結:Spark 更易于編程,同時也包含交互式模式;Hadoop MapReduce 不易編程但是現有的很多工具使其更易于使用。

成本

Spark 和 Hadoop MapReduce 都是開源的,但是機器和人工的花費仍是不可避免的。

這兩個框架既可以在商用服務器上也可以運行在云端,下表可以看到它們有著相似的硬件需求:

框架 Apache Spark Apache Hadoop balanced workload slaves內核 8–16 4內存 8 GB 到數百GB 24 GB硬盤 4–8 4–6 1TB網絡 10 GB 或更多 1 GB 以太網

Spark 集群的內存至少要和需要處理的數據塊一樣大,因為只有數據塊和內存大小合適才能發揮出其最優的性能。所以如果真的需要處理非常大的數據,Hadoop 絕對是合適之選,畢竟硬盤的費用要遠遠低于內存的費用。

考慮到 Spark 的性能標準,在執行相同的任務的時候,需要的硬件更少而運行速度卻更快,因此應該是更合算的,尤其是在云端的時候,此時只需要即用即付。

在技術人員方面,即使 Hadoop 從 2005 年就開始普及,但是 MapReduce 方面的專家仍然存在著短缺。而對于從 2010 年才開始普及的 Spark ,這又意味著什么呢? 或許投身 Spark 學習的人正在快速增加,但是相比于 Hadoop MapReduce 仍然存在著更大的技術人才的缺口。

進一步講,現存了大量的 Hadoop 即服務的資料和基于 Hadoop 的服務(比如我們 Xplenty 的數據整合服務),這些都降低對技術人員能力和底層硬件知識的要求。相比之下,幾乎沒有現有可選的 Spark 服務,僅有的那些也是新產品。

小結:根據基準要求, Spark 更加合算, 盡管人工成本會很高。依靠著更多熟練的技術人員和 Hadoop 即服務的供給, Hadoop MapReduce 可能更便宜。

兼容性

Spark 既可以單獨運行,也可以在 Hadoop YARN 上,或者在預置 Mesos 上以及云端。它支持實現 Hadoop 輸入范式的數據源,所以可以整合所有 Hadoop 支持的數據源和文件格式。 根據 Spark 官方教程, 它還可以通過 JDBC 和 ODBC 同 BI(商業智能) 工具一起運行。 Hive 和 Pig 也在逐步實現這樣的功能。

小結: Spark 和 Hadoop MapReduce 具有相同的數據類型和數據源的兼容性。

數據處理

除了平常的數據處理,Spark 可以做的遠不止這點:它還可以處理圖和利用現有的機器學習庫。高性能也使得 Spark 在實時處理上的表現和批處理上的表現一樣好。這也催生了一個更好的機遇,那就是用一個平臺解決所有問題而不是只能根據任務選取不同的平臺,畢竟所有的平臺都需要學習和維護。

Hadoop MapReduce 在批處理上表現卓越。如果需要進行實時處理,可以利用另外的平臺比如 Storm 或者 Impala,而圖處理則可以用 Giraph。MapReduce 過去是用 Mahout 做機器學習的,但其負責人已經將其拋棄轉而支持 Spark 和 h2o(機器學習引擎)。

小結:Spark 是數據處理的瑞士軍刀;Hadoop MapReduce 是批處理的突擊刀。

容錯

和 MapReduce 一樣, Spark 會重試每個任務并進行預測執行。然而,MapReduce 是依賴于硬盤驅動器的,所以如果一項處理中途失敗,它可以從失敗處繼續執行,而 Spark 則必須從頭開始執行,所以 MapReduce 這樣節省了時間。

小結:Spark 和 Hadoop MapReduce 都有著較好的容錯能力,但是 Hadoop MapReduce 要稍微更好一點。

安全性

在安全性上, 此時的 Spark 還略顯不足。 授權驗證由共享秘鑰機制支持,網絡用戶接口則通過 servlet 過濾器和事件日志保護。Spark 可以運行在 YARN 上并配合使用 HDFS, 這也就意味著它同時還擁有 Kerberos 認證授權驗證,HDFS 文件許可機制和節點間的加密機制。

Hadoop MapReduce 擁有所有 Hadoop 支持的安全機制,同時也整合了其它基于 Hadoop 的安全項目, 比如 Knox 網關和 Sentry。志在解決 Hadoop 安全的 Rhino 項目也只是在添加 Sentry 支持時添加了 Spark 支持。否則 Spark 開發者們只能自己去提升其安全性了。

小結: Spark 的安全機制仍處在發展期。 Hadoop MapReduce 擁有更多安全控制機制和項目。

總結

Spark 是大數據領域冉冉升起的新星,但是 Hadoop MapReduce 仍有著較廣的應用領域。

在內存中進行數據處理使得 Spark 具有較好的性能表現,也比較高效合算。它兼容所有 Hadoop 的數據源和文件格式, 支持多種語言的簡單易用的 API 也使人們更快速的可以上手。 Spark 甚至實現了圖處理和機器學習工具。

Hadoop MapReduce 是一個更加成熟的平臺,為進行批處理而生。當遇到確實非常大的數據以至于無法完全讀入內存,又或是依靠著大量對該平臺有經驗的技術人員,它可能會比 Spark 更加合算。 而且圍繞 Hadoop MapReduce 的衍生系統正在依靠著更多的支撐項目、工具和云服務而更加壯大。

但是即使看上去 Spark 像是最終的贏家,問題在于我們永遠不會單獨使用它—我們需要 HDFS 存儲數據,或許還會需要用到 HBase,Hive,Pig,Impala 或其他 Hadoop 項目。這意味著在處理非常大的數據的時候,Spark 仍然需要同 Hadoop 和 MapReduce 共同運行。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 墨竹工卡县| 恭城| 太保市| 民县| 莫力| 高邮市| 衡阳市| 杭州市| 突泉县| 利辛县| 游戏| 广河县| 清丰县| 上蔡县| 达拉特旗| 永兴县| 平陆县| 大埔县| 合川市| 民丰县| 库伦旗| 南宁市| 阳西县| 六安市| 仙游县| 宁都县| 湖州市| 台州市| 调兵山市| 铁岭市| 淳安县| 南皮县| 绥德县| 河池市| 东港市| 通城县| 高州市| 六枝特区| 巴林左旗| 怀宁县| 闻喜县|