您好,登錄后才能下訂單哦!
這篇文章主要講解了“Spark與Hadoop MapReduce有哪些優勢”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spark與Hadoop MapReduce有哪些優勢”吧!
1、計算速度快
大數據處理首先追求的是速度。Spark 到底有多快?用官方的話說,“Spark 允許 Hadoop 集群中的應用程序在內存中以 100 倍的速度運行,即使在磁盤上運行也能快 10 倍”。可能有的讀者看到這里會大為感嘆,的確如此,在有迭代計算的領域,Spark 的計算速度遠遠超過 MapReduce,并且迭代次數越多,Spark 的優勢越明顯。這是因為 Spark 很好地利用了目前服務器內存越來越大這一優點,通過減少磁盤 I/O 來達到性能提升。它們將中間處理數據全部放到了內存中,僅在必要時才批量存入硬盤中。或許讀者會問 :如果應用程序特別大,內存能放下多少 GB ?答曰 :什么? GB ?目前 IBM 服務器內存已經擴展至幾 TB 了。
2、應用靈活,上手容易
知道 AMPLab 的 Lester 為什么放棄 MapReduce 嗎?因為他需要把很多精力放到Map和Reduce的編程模型上,極為不便。 Spark在簡單的Map及Reduce操作之外,還支持 SQL 查詢、流式查詢及復雜查詢,比如開箱即用的機器學習算法。同時,用戶可以在同一個工作流中無縫地搭配這些能力,應用十分靈活。
Spark 核心部分的代碼為 63 個 Scala 文件,非常的輕量級。并且允許 Java、Scala、Python 開發者在自己熟悉的語言環境下進行工作,通過建立在Java、Scala、Python、SQL(應對交互式查詢)的標準 API 以方便各行各業使用,同時還包括大量開箱即用的機器學習庫。它自帶 80 多個高等級操作符,允許在 Shell中進行交互式查詢。即使是新手,也能輕松上手應用。
3、兼容競爭對手
Spark 可以獨立運行,除了可以運行在當下的 YARN 集群管理外,還可以讀取已有的任何 Hadoop 數據。它可以運行在任何 Hadoop 數據源上,比如 HBase、HDFS 等。有了這個特性,讓那些想從 Hadoop 應用遷移到 Spark 上的用戶方便了很多。Spark 有兼容競爭對手的胸襟,何愁大事不成?
4、實時處理性能非凡
MapReduce 更 加 適 合 處 理 離 線 數 據( 當 然, 在 YARN 之 后,Hadoop也可以借助其他工具進行流式計算)。Spark 很好地支持實時的流計算,依賴Spark Streaming 對數據進行實時處理。Spark Streaming 具備功能強大的 API,允許用戶快速開發流應用程序。而且不像其他的流解決方案,比如Storm,Spark Streaming 無須額外的代碼和配置,就可以做大量的恢復和交付工作。
5、社區貢獻力量巨大
從 Spark 的版本演化來看,足以說明這個平臺旺盛的生命力及社區的活躍度。尤其自 2013 年以來,Spark 一度進入高速發展期,代碼庫提交與社區活躍度都有顯著增長。以活躍度論,Spark 在所有的 Apache 基金會開源項目中位列前三,相較于其他大數據平臺或框架而言,Spark 的代碼庫最為活躍。
Spark 非常重視社區活動,組織也極為規范,會定期或不定期地舉行與 Spark相關的會議。會議分為兩種 :一種是 Spark Summit,影響力極大,可謂全球 Spark***技術人員的峰會,目前已于 2013—2015 年在 San Francisco 連續召開了三屆Summit 大會 ;另一種是 Spark 社區不定期地在全球各地召開的小型 Meetup 活動。Spark Meetup 也會在我國的一些大城市定期召開,比如北京、深圳、西安等地,讀者可以關注當地的微信公眾號進行參與。
Spark 的適用場景
從大數據處理需求來看,大數據的業務大概可以分為以下三類 :
(1)復雜的批量數據處理,通常的時間跨度在數十分鐘到數小時之間。
(2)基于歷史數據的交互式查詢,通常的時間跨度在數十秒到數分鐘之間。
(3)基于實時數據流的數據處理,通常的時間跨度在數百毫秒到數秒之間。
目前已有很多相對成熟的開源和商業軟件來處理以上三種情景 :***種業務,可以利用 MapReduce 來進行批量數據處理 ;第二種業務,可以用 Impala 來進行交互式查詢 ;對于第三種流式數據處理,可以想到專業的流數據處理工具Storm。但是這里有一個很重要的問題 :對于大多數互聯網公司來說,一般會同時遇到以上三種情景,如果采用不同的處理技術來面對這三種情景,那么這三種情景的輸入/ 輸出數據無法無縫共享,它們之間可能需要進行格式轉換,并且每個開源軟件都需要一支開發和維護團隊,從而提高了成本。另外一個不便之處就是,在同一個集群中對各個系統協調資源分配比較困難。
那么,有沒有一種軟件可以同時處理以上三種情景呢? Spark 就可以,或者說有這樣的潛力。Spark 同時支持復雜的批處理、互操作和流計算,而且兼容支持HDFS 和 Amazon S3 等分布式文件系統,可以部署在 YARN 和 Mesos 等流行的集群資源管理器上。
從 Spark 的設計理念(基于內存的迭代計算框架)出發,其最適合有迭代運算的或者需要多次操作特定數據集的應用場合。并且迭代次數越多,讀取的數據量越大,Spark 的應用效果就越明顯。因此,對于機器學習之類的“迭代式”應用,Spark 可謂拿手好戲,要比 Hadoop MapReduce 快數十倍。另外,Spark Streaming因為內存存儲中間數據的特性,處理速度非常快,也可以應用于需要實時處理大數據的場合。
當然,Spark 也有不適用的場合。對于那種異步細粒度更新狀態的應用,例如 Web 服務的存儲或增量的 Web 爬蟲和索引,也就是對于那種增量修改的應用模型不適合。Spark 也不適合做超級大的數據量的處理,這里所說的“超級大”是相對于這個集群的內存容量而言的,因為 Spark 要將數據存儲在內存中。一般來說,10TB 以上(單次分析)的數據就可以算是“超級大”的數據了。
一般來說,對于中小企業的數據中心而言,在單次計算的數據量不大的情況下,Spark 都是很好的選擇。另外,Spark 也不適合應用于混合的云計算平臺,因為混合的云計算平臺的網絡傳輸是很大的問題,即便有專屬的寬帶在云端 Cluster和本地 Cluster 之間傳輸數據,相比內存讀取速度來說,依然不抵。
感謝各位的閱讀,以上就是“Spark與Hadoop MapReduce有哪些優勢”的內容了,經過本文的學習后,相信大家對Spark與Hadoop MapReduce有哪些優勢這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。