大數據處理爲什麼選擇Spark,而不是Hadoop

一.基礎知識sql

1.Spark編程

Spark是一個用來實現快速而通用的集羣計算的平臺。網絡

在速度方面,Spark擴展了普遍使用的MapReduce計算模型,並且高效地支持更多計算模式,包括交互式查詢和流處理。架構

Spark項目包含多個緊密集成的組件。Spark的核心是一個對由不少計算任務組成的、運行在多個工做機器或者是一個計算集羣上的應用進行調度、分發以及監控的計算引擎。併發

 

 

Spark的各個組件框架

2.Hadoop機器學習

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。分佈式

用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。高併發

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。工具

二.大數據處理選擇

根據Spark和Hadoop的基礎知識,咱們瞭解Spark和Hadoop都 能夠進行大數據處理,那咱們如何選擇處理平臺呢?

1.處理速度和性能

Spark擴展了普遍使用的MapReduce計算模型,其中Spark有個Directed Acyclic Graph(DAG有向無環圖)執行引擎,支持循環數據流和內存計算。

Hadoop是磁盤級計算,進行計算時,都須要從磁盤讀或者寫數據,同時整個計算模型須要網絡傳輸,致使MapReduce具備高延遲的致命弱點。

據統計,基於Spark內存的計算速度比Hadoop MapReduce快100倍以上,基於磁盤的計算速度也要快10倍以上。

2.開發難易度

Spark提供多語言(包括Scala、Java、Python)API,可以快速實現應用,相比MapReduce更簡潔的代碼,安裝部署也無需複雜配置。使用API能夠輕鬆地構建分佈式應用,同時也能夠使用Scala和Python腳本進行交互式編程。

3.兼容性

Spark提供了一個強大的技術棧,基於」One Stack to rule them all」的理念實現一體化、多元化的大數據處理平臺,輕鬆應對大數據處理的查詢語言Spark SQL、機器學習工具MLlib、圖計算工具GraphX、實時流處理工具Spark Streaming無縫鏈接。

Hadoop的技術棧則相對獨立複雜,各個框架都是獨立的系統,給集成帶來了很大的複雜和不肯定性。

4.相互集成性

Spark能夠運行在Hadoop集羣管理Yarn上,這使得Spark能夠讀取Hadoop的任何數據。同時它也能讀取HDFS、HBase、Hive、Cassandra以及任何Hadoop數據源。

歡迎工做一到五年的Java工程師朋友們加入Java架構開發: 855835163 羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!

相關文章
相關標籤/搜索