共築Spark大資料引擎的七大工具

來源:互聯網
上載者:User

標籤:

Spark正在資料處理領域捲起一場風暴。讓我們通過本篇文章,看看為Spark的大資料平台起到推波助瀾的幾個重要工具。

Spark生態系統眾生相
Apache Spark不僅僅讓大資料處理起來更快,還讓大資料處理起來更簡單、功能更強大、更方便。Spark並非只是一項技術,它結合了諸多部分,新的功能和效能改進不斷添加進來,每個部分都在不斷完善之中。
本文介紹了Spark生態系統的每個主要部分:每個部分的功能,為什麼很重要,是如何發展的,在哪方面不盡如人意,以及可能會往哪個方向發展。

?Spark Core
Spark的核心是恰如其名的Spark Core。除了協調和調度作業外,Spark Core還為Spark中的資料處理提供了基本的抽象機制,名為彈性分布式資料集(RDD)。
RDD對資料執行兩個動作:轉換和操作。前者轉換資料,並將它們作為剛創新的RDD來提供;後者根據現有的RDD(比如對象數量)來計算結果。
Spark的速度很快,原因是轉換和操作都儲存在記憶體中。操作慢騰騰地評估,這意味著只有需要相關的資料時,才執行操作;然而,很難搞清楚什麼在緩慢運行。
Spark的速度在不斷提高。Java的記憶體管理往往給Spark帶來問題,於是Project Tungsten計劃避開JVM的記憶體和垃圾收集子系統,以此提高記憶體效率。

?Spark API
Spark主要是用Scala編寫的,所以Spark的主要API長期以來也支援Scala。不過另外三種使用廣泛得多的語言同樣得到支援:Java(Spark也依賴它)、Python和R.
總的來說,你最好選擇自己最擅長的那種語言,因為你需要的功能特性很可能在該語言中直接得到支援。只有一個例外:相比之下,SparkR中對機器學習的支援不大給力,目前只有一小批演算法可供使用。不過將來這種情況勢必會發生變化。

?Spark SQL
千萬不要低估了能夠對批量資料執行SQL查詢的能力或便利。Spark SQL提供了對Spark提供的資料執行SQL查詢(並且請求列式DataFrame)的一種通用機制,包括通過ODBC/JDBC串連件進行管道處理的查詢。你甚至不需要正規的資料來源。Spark 1.6中添加了這一功能:支援以一種得到支援的格式查詢扁平檔案,就像Apache Drill那樣。
Spark SQL其實並不用於更新資料,因為那與Spark的整個意義相悖。可以將因而產生的資料寫回成新的Spark資料來源(比如新的Parquet表),但是UPDATE查詢並不得到支援。別指望諸如此類的功能特性很快就會推出;著眼於Spark SQL的改進大多數用於提升其效能,因為它也成了Spark Streaming的基礎。
?
?Spark Streaming
Spark的設計讓它得以支援許多處理方法,包括流處理――Spark Streaming因此得名。關於Spark Steaming的傳統觀點是,它還半生不熟,這意味著只有你不需要瞬間延遲,或者如果你還沒有投入到另一種流資料處理解決方案(比如說Apache Storm),你才會使用它。
但是Storm在逐漸失去人氣;長期使用Storm的推特此後已改用了自己的項目Heron。此外,Spark 2.0承諾會推出一種新的“結構化資料流”模式,以便對即時資料進行互動式Spark SQL查詢,包括使用Spark的機器學習庫。至於其效能是否高得足以擊敗競爭者仍需拭目以待,不過它值得認真考慮。

?MLlib(機器學習)
機器學習技術素有既神奇,又困難之稱。Spark讓你可以對Spark中的資料運行許多常見的機器學習演算法,從而使這些類型的分析容易得多,也更容易被Spark使用者所使用。
MLlib中的可用演算法數量眾多,該架構每推出一個修訂版,就會隨之增多。話雖如此,一些類型的演算法還是沒有――比如說,涉及深度學習的任何演算法。第三方正在利用Spark的人氣來填補這一空白;比如說,雅虎可以藉助CaffeOnSpark執行深度學習,它通過Spark充分利用了Caffe深度學習系統。

?GraphX(圖形計算)
描繪數百萬實體之間的關係通常需要圖形,這種資料構件描述了那些實體之間的相互關係。Spark的GraphX API讓你可以使用Spark的一套方法,對資料執行圖形操作,於是構建和轉換這類圖形的繁重任務卸載到了Spark。GraphX還包括用於處理資料的幾種常見演算法,比如PageRank或標籤傳播(label propagation)。
從目前來看,GraphX的一個主要限制是,它最適合靜態圖形。處理添加了新頂點的圖形會嚴重影響效能。此外,如果你已經在使用一種成熟的圖形資料庫解決方案,GraphX還不太可能取代它。

?SparkR(Spark上的R)
R語言為進行統計數值分析和機器學習工作提供了一種環境。Spark在2015年6月添加了支援R的功能,以匹配其支援Python和Scala的功能。
除了為潛在的Spark開發人員多提供一種語言外,SparkR還讓R程式員們可以做之前做不了的許多事情,比如訪問超過單一機器的記憶體容量的資料集,或者同時輕鬆地使用多個進程或在多個機器上運行分析。
SparkR還讓R程式員可以充分利用Spark中的MLlib機器學習模組,建立一般的線性模型。遺憾的是,並非所有的MLlib功能在SparkR中得到支援,不過Spark每推出一個後續的修訂版,都在填補R支援方面的差距。

?原文標題:7 tools to fire up Spark‘s big data engine
【51CTO譯稿,合作網站轉載請註明原文譯者和出處為51CTO.com】

共築Spark大資料引擎的七大工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.