Spark入門篇之簡介

Spark是Apache基金會的一個頂級項目,也是Apache基金會下目前最活躍的開源項目之一,誕生於加州大學伯克利分校的AMP實驗室,是一個開源的基於內存的分佈式計算框架。由於Spark是基於內存的計算,相對於MapReduce來說,提高了計算速度,同時Spark也提供了高容錯性和可擴展性。
1.## 速度快
基於內存的數據處理使得Spark比Mapreduce快100個數據量級以上,即使基於硬盤的數據處理Spark也要比Mapreduce快10個數量級以上。

2.易用性

Spark支持Java、Scala、Python和R語言,並提供了80+的高級API,這使得Spark使用者能夠根據自己所掌握的開發語言快速構建自己的應用。Spark還提供交互式的Scala、Python和R語言的Shell,使得開發和測試更加方便和快捷。

3.通用性

Spark提供了一個強有力的一棧式通用的解決方案(One Stack to rule them all),使用Spark能完成批處理、交互式查詢(Spark SQL)、流處理(Spark Streaming),圖計算(GraphX)及機器學習(MLlib)。這些組件之間無縫對接、綜合使用。
在這裏插入圖片描述
Spark與其他開源產品的兼容性做的非常出色。Spark可以運行在Hadoop的Yarn、Mesos和雲平臺。當然Spark也提供了自己的資源調度和管理系統(Standalone)模式。它可以訪問HDFS、Cassandra、 HBase和S3上的數據。

1.Spark Core

Spark Core是整個生態系統的核心組件,是一個分佈式計算引擎(Lighting-fast cluster computing),不僅實現了Mapreduce的map方法和Reduce方法,還提供了更高層次、更豐富的方法,比如:filter、join、sum等,能夠使得我們開發分佈式程序的門檻降低。

2.RDD彈性分佈式數據集

Spark中的分佈式編程模型是RDD(Resilient Distributed Datasets:彈性分佈式數據集),換句話說Spark都是將數據包裝成RDD來進行操作的,比如Spark可以兼容處理HDFS上的數據文件,那麼這個HDFS數據文件就是包裝成Spark所認識的RDD來完成數據操作的

3.Spark Sql

Spark SQL是支持在Spark中使用Sql、HiveSql、Scala中的關係型查詢表達式。它的核心組件是一個新增的RDD類型SchemaRDD,它把行對象用一個Schema來描述行裏面的所有列的數據類型,它就像是關係型數據庫裏面的一張表。它可以從原有的RDD創建,也可以是Parquet文件,最重要的是它可以支持用HiveQL從hive裏面讀取數據。

4.Spark Streaming實時流數據處理

Spark Streaming 是Spark核心API的一個擴展,可以實現高吞吐量的、具備容錯機制的實時流數據的處理。支持從多種數據源獲取數據,包括Kafka、Flume、Twitter、ZeroMQ、Kinesis 以及TCP sockets,從數據源獲取數據之後,可以使用諸如map、reduce、join和window等高級函數進行復雜算法的處理。

5.Spark GraphX

Spark GraphX是一個分佈式圖處理框架,它是基於Spark平臺提供對圖計算和圖挖掘簡潔易用的而豐富的接口,極大的方便了對分佈式圖處理的需求。
衆所周知,社交網絡中人與人之間有很多關係鏈,例如Twitter、Facebook、微博和微信等,這些都是大數據產生的地方都需要圖計算,現在的圖處理基本都是分佈式的圖處理,而並非單機處理。

6.MLlib

MLlib是構建在Spark上的分佈式機器學習庫,充分利用了Spark的內存計算和適合迭代型計算的優勢,將性能大幅度提升。MLlib中提供了一些機器學習類庫包括分類、迴歸、聚類和協同過濾等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章