-
Apache Spark
鎖定
Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是——Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集羣計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話説,Spark 啓用了內存分佈數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕鬆地操作分佈式數據集。
儘管創建 Spark 是為了支持分佈式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中並行運行。通過名為 Mesos 的第三方集羣框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。
Apache Spark基本介紹
Apache Spark特點介紹
首先,高級 API 剝離了對集羣本身的關注,Spark 應用開發者可以專注於應用所要做的計算本身。
其次,Spark 很快,支持交互式計算和複雜算法。
最後,Spark 是一個通用引擎,可用它來完成各種各樣的運算,包括 SQL 查詢、文本處理、機器學習等,而在 Spark 出現之前,我們一般需要學習各種各樣的引擎來分別處理這些需求。
Apache Spark性能特點
- 更快的速度
- 易用性
Spark 提供了80多個高級運算符。
- 通用性
Spark 提供了大量的庫,包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。 開發者可以在同一個應用程序中無縫組合使用這些庫。
- 支持多種資源管理器
Spark 支持 Hadoop YARN,Apache Mesos,及其自帶的獨立集羣管理器
- Spark生態系統
- Shark:Shark基本上就是在Spark的框架基礎上提供和Hive一樣的HiveQL命令接口,為了最大程度的保持和Hive的兼容性,Spark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替HadoopMapReduce。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Spark通過UDF用户自定義函數實現特定的數據分析學習算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重複使用。
Apache Spark基本原理
Spark Streaming:構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片段(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+),雖然比不上專門的流式數據處理軟件,也可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),一部分窄依賴的RDD數據集可以從源數據重新計算達到容錯處理目的。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。
Apache Spark計算方法
- Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank算法。
- 當下Spark已不止步於實時計算,目標直指通用大數據處理平台,而終止Spark,開啓SparkSQL或許已經初見端倪。
- 大數據機器學習和數據挖掘的並行化算法研究成為大數據領域一個較為重要的研究熱點。早幾年國內外研究者和業界比較關注的是在 Hadoop 平台上的並行化算法設計。然而, HadoopMapReduce 平台由於網絡和磁盤讀寫開銷大,難以高效地實現需要大量迭代計算的機器學習並行化算法。隨着 UC Berkeley AMPLab 推出的新一代大數據平台 Spark 系統的出現和逐步發展成熟,近年來國內外開始關注在 Spark 平台上如何實現各種機器學習和數據挖掘並行化算法設計。為了方便一般應用領域的數據分析人員使用所熟悉的 R 語言在 Spark 平台上完成數據分析,Spark 提供了一個稱為 SparkR 的編程接口,使得一般應用領域的數據分析人員可以在 R 語言的環境裏方便地使用 Spark 的並行化編程接口和強大計算能力。 [6]
- 參考資料
-
- 1. Spark 3.0.0發佈 .spark官網.2020-08-07[引用日期2020-08-07]
- 2. spark .apache[引用日期2017-02-11]
- 3. Holden Karau.Spark快速大數據分析:人民郵電出版社,2015-09-01
- 4. [原]海納百川 有容乃大:SparkR與Docker的機器學習實戰 .Segmentfault[引用日期2016-03-23]
- 5. [譯]打造大數據產品:Shiny的Spark之旅 .SegmentFault[引用日期2016-02-20]
- 6. 劉志強等:基於 SparkR 的分類算法並行化研究 .chinacloud[引用日期2016-03-27]