Spark入門-什麼是Spark

·spark認識

Spark使用Scala語言進行實現,它是一種面向對象、函數式編程語言,能夠像操作本地集合對象一樣輕鬆地操作分佈式數據集,Spark官網上介紹,它具有運行速度快、易用性好、通用性強和隨處運行等特點。

spark特點

·運行速度快

 spark在內存中對數據進行迭代計算如果數據由內存讀取是hadoop MapReduce100倍。Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反覆操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小.


·易用性好

 支持Scala編程java編程 Python等語言(Scala是一種高效可擴展語言,使用簡潔)

·一次編譯,隨意執行

spark運行在Hadoop,cloud,能夠讀取HDFS,HBase Cassandra等數據源



·通用性強

spark生態圈(BDAS)包括spark Core、spark SQL Spark Streaming等組件,這些組件提供spark Core處理內存計算框架


·Spak 和Hadoop區別

spark是在MapReduce上發展而來,繼承了其分佈式並行計算的優點並改進了MapReduce明顯的缺陷:

1.提高了效率

Spark把中間數據放到內存中,迭代運算效率高。MapReduce中計算結果需要落地,保存到磁盤上,這樣勢必會影響整體速度,而Spark支持DAG圖的分佈式並行計算的編程框架,減少了迭代過程中數據的落地,提高了處理效率

2.容錯性高

Spark引進了彈性分佈式數據集RDD (Resilient Distributed Dataset) 的抽象,它是分佈在一組節點中的只讀對象集合,這些集合是彈性的,如果數據集一部分丟失,需要進行重建。

 相比來說spark更加通用,spark提供了更多的數據集操作類型,處理節點之間通信模型不是向hadoop只採用Shuffle模式,而是採用用戶可命名,控制中

間結果的存儲,分區。

·Spark Core

1)提供了有向無環圖(DAG)的分佈式並行計算框架,並提供Cache機制來支持多次迭代計算或者數據共享,大大減少迭代計算之間讀取數據局的開銷,這對於需要進行多次迭代的數據挖掘和分析性能有很大提升

2)在Spark中引入了RDD (Resilient Distributed Dataset) 的抽象,它是分佈在一組節點中的只讀對象集合,這些集合是彈性的,如果數據集一部分丟失,則可以根據“血統”對它們進行重建,保證了數據的高容錯性;

 移動計算而非移動數據,RDD Partition可以就近讀取分佈式文件系統中的數據塊到各個節點內存中進行計算

使用多線程池模型來減少task啓動開稍

3)採用容錯的、高可伸縮性的akka作爲通訊框架

·Spark Streaming

SparkStreaming是一個對實時數據流進行高通量、容錯處理的流式處理系統,可以對多種數據源(如KdfkaFlumeTwitterZeroTCP 套接字)進行類似MapReduceJoin等複雜操作,並將結果保存到外部文件系統、數據庫或應用到實時儀表盤。

·Spark SQL

SparkSQL的前身是SharkShark是伯克利實驗室Spark生態環境的組件之一,它修改了內存管理、物理計劃、執行三個模塊,並使之能運行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升。Shark過於依賴Hive,它是當時唯一運行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce計算過程中大量的中間磁盤落地過程消耗了大量的I/O,降低運行效率.SparkSQL在數據兼容性、性能優化、組件擴展等方面做了很大提升。





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