1. 程式人生 > >spark大資料計算引擎原理深剖(優缺點)-spark簡介

spark大資料計算引擎原理深剖(優缺點)-spark簡介

用spark,你僅僅只是呼叫spark的API肯定是很low的。

今天來講講spark的原理,並且會針對部分原始碼進行講解,如有不同意見請聯絡本人交流探討。

目前大資料生態主要部分是Hadoop軟體框架和Spark記憶體級計算引擎。Hadoop包含四個專案:Hadoop common,HDFS,YARN和MapReduce。點選這裡有Hadoop詳情安裝教程。 Spark並不是要成為一個大資料領域的“獨裁者” , 一個人霸佔大資料領域所有的 “地盤” , 而是與Hadoop進行了高度的整合, 兩者可以完美的配合使用。 Hadoop的HDFS、Hive、HBase負責儲存, YARN負責資源排程; Spark負責大資料計算。 實際上, Hadoop+Spark的組合, 是 一種“ double win” 的組合。

Hadoop這裡我就暫時不進行講解,後面會在分類比較中進行詳細的分析。

那麼就說說spark,spark是一種通用的大資料計算引擎,如傳統的MapReduce,hive引擎,Storm流式實時計算引擎一樣(yukang個人理解)。期望使用一個技術堆疊就完美解決大資料領域的各種計算任務。

spark對比MapReduce,hive引擎,Storm流式計算引擎優點和缺點:

1.當然如果資料超過1T了基本就不能用spark了,還是會選擇MapReduce,MapReduce利用磁碟的高I/O操作實現平行計算確實在處理海量資料是無法取代的,但它在迭代計算中效能不足。(為什麼資料過大我不適用spark,spark基於記憶體大笑

好也是記憶體,不好也是記憶體,我解釋一下,如果資料過大,OOM記憶體溢位等等,spark的程式就無法運行了,直接就會報錯掛掉了,這個很坑爹是吧,雖然MapReduce執行資料相對spark很慢,但是至少他可以慢慢的跑不是嗎?再慢至少能跑完。反正我是很討厭BUG的。【這裡提到的MapReduce為什麼慢後面我也會在後期的Hadoop筆記中詳細解析】)

2.storm實時的流式計算的處理上也是無法取代的(Storm支援在分散式流式計算程式( Topology) 在執行過程中, 可以動態地調整並行度, 從而動態提高併發處理能力。而Spark Streaming是無法動態調整並行度的。當然Spark Streaming也有其優點是storm不具備的,首先Spark Streaming由於是基於batch進行處理的, 因此相較於Storm基於單條資料 進行處理, 具有數倍甚至數十倍的吞吐量。此外Spark Streaming由於也身處於Spark生態圈內, 因此Spark Streaming可以與Spark Core、 Spark SQL, 甚至是 Spark MLlib、 Spark GraphX進行無縫整合。【業務場景的話:通常在對實時性要求特別高, 而且實時資料量不穩定, 比如在白天有高峰期的情況下, 可以選擇 使用Storm。 但是如果是對實時性要求一般, 允許1秒的準實時處理使用Spark Streaming

。我在資料清洗的時候用的Storm,個人原因,其他業務場景我暫時想不起來。】)。

3.海量資料的查詢,hive肯定也是不可取代的,(很多人認為Spark SQL完全能夠替代Hive的查詢引擎,我認為肯定是不行的,因為Hive是一種基於HDFS的資料倉庫, 並且提供了基於SQL模型的, 針對 儲存了大資料的資料倉庫, 進行分散式互動查詢的查詢引擎,有少量的Hive支援的高階特性,Spark SQL暫時還不支援。當然Spark SQL相較於Hive查詢引擎來說, 就是速度快,原因還是因為hive底層基於MapReduce,為什麼MapReduce慢yukang再次不做解釋,後期Hadoop有關筆記會進行詳細解析,Spark SQL相對於hive還有另一個優勢:就是支援大量不同的資料來源, 包括hive、 json、 parquet、 jdbc等等。)

spark優勢:

1.spark是基於記憶體的計算,硬碟由於物理級限制速度提升非常困難,遠遠跟不上CPU和記憶體的發展速度。近幾十年來,記憶體的發展一直遵循摩爾定律,價格在下降,記憶體在增加。現在主流的伺服器,幾百GB或幾TB的記憶體都很常見,記憶體的發展使得記憶體資料庫得以實現,Spark正是利用這種計算資源設計的基於記憶體的分散式處理軟體,其目標是取代MapReduce。


2.Spark可以直接對HDFS進行資料讀寫,支援YARN等部署模式。(可見其相容性的強大)


3.spark計算處理資料速度快,因為它是基於記憶體啊,(Spark將迭代過程的中間資料快取到記憶體中,根據需要多次重複使用。[在機器學習這種需要反覆迭代的任務中非常有效])


4.Spark利用RDD結構提升了容錯效能。(RDD是一個包含諸多元素、被劃分到不同節點上進行並行處理的資料集合,可以將RDD持久化到記憶體中,這樣就可以有效地在並行操作中複用,在節點發生錯誤時RDD也可以根據其Lineage自動重新計算恢復,如果Lineage很長,可以快取RDD來提高效率。)


5.同時在磁碟和記憶體中儲存資料。


6.運算方面通過對映,化簡,連結,Cogroup等等方式。


7.Spark包含了大資料領域常見的各種計算框架, 比如: 


               Spark Core用於離線計算  


               Spark SQL用於互動式查詢 
               Spark Streaming用於實時流式計算 


               Spark MLlib用於機器學習 


               Spark GraphX用於圖計算 


8.強大的社群和多語言的支援等等。

Spark工作架構:

Spark可以分為1個driver(膝上型電腦或者叢集閘道器機器上,使用者編寫的Spark程式)和若干個executor(在RDD分佈的各個節點上)。 
通過SparkContext(簡稱sc)連線Spark叢集、建立RDD、累加器(accumlator)、廣播變數(broadcast variables),簡單可以認為SparkContext是Spark程式的根本。 
Driver會把計算任務分成一系列小的task,然後送到executor執行。executor之間可以通訊,在每個executor完成自己的task以後,所有的資訊會被傳回。 


本圖片來源網路

1. Client客戶端:我們在本地編寫了spark程式,打成jar包,或python指令碼,通過spark submit命令提交到Spark叢集; 
2. 只有Spark程式在Spark叢集上執行才能拿到Spark資源,來讀取資料來源的資料進入到記憶體裡; 
3. 客戶端就在Spark分散式記憶體中並行迭代地處理資料,注意每個處理過程都是在記憶體中並行迭代完成;注意:每一批節點上的每一批資料,實際上就是一個RDD!!!一個RDD是分散式的,所以資料都散落在一批節點上了,每個節點都儲存了RDD的部分partition。 
4. Spark與MapReduce最大的不同在於,迭代式計算模型:MapReduce,分為兩個階段,map和reduce,兩個階段完了,就結束了,所以我們在一個job裡能做的處理很有限; Spark,計算模型,可以分為n個階段,因為它是記憶體迭代式的。我們在處理完一個階段以後,可以繼續往下處理很多個階段,而不只是兩個階段。所以,Spark相較於MapReduce來說,計算模型可以提供更強大的功能。

spark的生態系統:


 Mesos和yarn 作用一樣,資源排程平臺,用yarn的比較多
Tachyon:(1)記憶體當中hdfs(記憶體中的分散式儲存系統,加快spark在記憶體中讀取和處理速度)
             (2)在不同應用程式之間實現資料共享
spark core:spark的核心,用於離線計算

相關推薦

spark資料計算引擎原理優缺點-spark簡介

用spark,你僅僅只是呼叫spark的API肯定是很low的。今天來講講spark的原理,並且會針對部分原始碼進行講解,如有不同意見請聯絡本人交流探討。目前大資料生態主要部分是Hadoop軟體框架和Spark記憶體級計算引擎。Hadoop包含四個專案:Hadoop comm

下一代資料計算引擎之爭,你更看好 Spark 還是 Flink?

一提到大資料,多半繞不開Spark 和 Flink。Spark用一個統一的引擎支援批處理、流處理、互動式查詢、機器學習等常見的資料處理場景,適應性極廣,但資料流計算上表現稍弱,而Flink的出現很好地彌補了這一不足。本文對 Spark 和 Flink 的技術與場景進行了全面分析與對比,且看下一代大資

Spark資料計算引擎介紹

                          Spark大資料計算引擎介紹 大資料生態的兩個主要部分是Hadoop軟體框架和Spark記憶體級計算引擎。Hado

資料演算法-Hadoop/Spark資料處理技巧》讀書筆記——二次排序

寫在前面: 在做直播的時候有同學問Spark不是用Scala語言作為開發語言麼,的確是的,從網上查資料的話也會看到大把大把的用Scala編寫的Spark程式,但是仔細看就會發現這些用Scala寫的文章

資料演算法-Hadoop/Spark資料處理技巧》讀書筆記——移動平均

移動平均:對時序序列按週期取其值的平均值,這種運算被稱為移動平均。典型例子是求股票的n天內的平均值。 移動平均的關鍵是如何求這個平均值,可以使用Queue來實現。 public class MovingAverageDriver { public

結構化資料計算的幾種方法

         任何資料都要通過計算來產生價值才有意義,大資料也一樣。結構化大資料的計算能力的高低決定了大資料的實用性。          我總結了幾種常見的計算方法:API 、Script、SQL、類SQL。        1、  API:這是指沒有使用JDBC或OD

拋棄Spark?Flink會是下一代資料計算引擎嗎?

Apache Spark是目前應用最廣泛、最流行的大資料計算平臺之一,在2.X版本中,Apache Spark已經開始摒棄RDD的資料模型,採用Spark SQL的Dataset作為統一的資料模型來構建更加高效的計算框架。然而,2015年成為Apache頂級專案的Apache Flink卻被很多人認

Spark 比拼 Flink:下一代資料計算引擎之爭,誰主沉浮?

下一代大資料計算引擎 自從資料處理需求超過了傳統資料庫能有效處理的資料量之後,Hadoop 等各種基於 MapReduce 的

國內雲數倉排行獨佔一檔,揭祕阿里雲EB級資料計算引擎MaxCompute

日前,全球權威諮詢與服務機構Forrester釋出了《The Forrester WaveTM: Cloud Data Warehouse, Q4 2018》報告。這是Forrester Wave首次釋出關於雲數倉解決方案(Cloud Data Warehouse,簡稱CDW)的測評。報告對雲數倉的當前產品功

揭祕阿里雲EB級資料計算引擎MaxCompute

日前,全球權威諮詢與服務機構Forrester釋出了《The Forrester WaveTM: Cloud Data Warehouse, Q4 2018》報告。這是Forrester Wave首次釋出關於雲數倉解決方案(Cloud Data Warehouse,簡稱CDW)的測評。報告對雲數倉的當前產品功

餓了麼資料計算引擎實踐與應用

餓了麼BDI-大資料平臺研發團隊目前共有20人左右,主要負責離線&實時Infra和平臺工具開發。其中6人的離線團隊需要維護大資料叢集規模如下: Hadoop叢集規模1300+ HDFS存量資料40+PB,Read 3.5 PB+/天,Write 500TB+/天

資料計算引擎之Flink Flink狀態管理和容錯

這裡將介紹Flink對有狀態計算的支援,其中包括狀態計算和無狀態計算的區別,以及在Flink中支援的不同狀態型別,分別有 Keyed State 和 Operator State 。另外針對狀態資料的持久化,以及整個 Flink 任務的資料一致性保證,Flink 提供了 Checkpoint 機制處理和持久化

資料計算引擎之Flink Flink CEP複雜事件程式設計

原文地址: 大資料計算引擎之Flink Flink CEP複雜事件程式設計 複雜事件程式設計(CEP)是一種基於流處理的技術,將系統資料看作不同型別的事件,通過分析事件之間的關係,建立不同的時事件系序列庫,並利用過濾、關聯、聚合等技術,最終有簡單事件產生高階事件,並通過模式規則的方式對重要資訊進行跟蹤和分析

Java資料培訓學校全套教程-DHTML25-馬克-專題視訊課程

Java大資料培訓學校全套教程-DHTML(25)—9人已學習 課程介紹         Java大資料培訓學校全套教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)時下

Java資料培訓學校全套教程-DOM26-馬克-專題視訊課程

Java大資料培訓學校全套教程-DOM(26)—2人已學習 課程介紹         Java大資料培訓學校全套教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)時下流行

Java資料培訓學校全套教程-AJAX27-馬克-專題視訊課程

Java大資料培訓學校全套教程-AJAX(27)—2人已學習 課程介紹         Java大資料培訓學校視訊教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)時下流

Java資料培訓學校全套教程-JQUERY28-馬克-專題視訊課程

Java大資料培訓學校全套教程-JQUERY(28)—3人已學習 課程介紹         Java大資料培訓學校全套教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)時

Java資料培訓學校全套教程-SpringMVC29-馬克-專題視訊課程

Java大資料培訓學校全套教程-SpringMVC(29)—4人已學習 課程介紹         Java大資料培訓學校視訊教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是

Java資料培訓學校全套教程- Spring30-馬克-專題視訊課程

Java大資料培訓學校全套教程- Spring(30)—1人已學習 課程介紹         Java大資料培訓學校視訊教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)

Java資料培訓學校全套教程-Mybatis31-馬克-專題視訊課程

Java大資料培訓學校全套教程-Mybatis(31)—7人已學習 課程介紹         Java大資料培訓學校全套視訊教程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是