大數據架構之:Spark


Spark是UC Berkeley AMP 實驗室基於map reduce算法實現的分布式計算框架,輸出和結果保存在內存中,不需要頻繁讀寫HDFS,數據處理效率更高
Spark適用於近線或准實時、數據挖掘與機器學習應用場景

 

Spark和Hadoop

  • Spark是一個針對超大數據集合的低延遲的集群分布式計算系統,比MapReducer快40倍左右。   
  • Spark是hadoop的升級版本,Hadoop作為第一代產品使用HDFS,第二代加入了Cache來保存中間計算結果,並能適時主動推Map/Reduce任務,第三代就是Spark倡導的流Streaming。   
  • Spark兼容Hadoop的APi,能夠讀寫Hadoop的HDFS HBASE 順序文件等。

容錯     

–基於血統的容錯,數據恢復     

–checkpoint

 

     checkpoint是一個內部事件,這個事件激活以后會觸發數據庫寫進程(DBWR)將數據緩沖(DATABUFFER CACHE)中的臟數據塊寫出到數據文件中。

     在數據庫系統中,寫日志和寫數據文件是數據庫中IO消耗最大的兩種操作,在這兩種操作中寫數據文件屬於分散寫,寫日志文件是順序寫,因此為了保證數據庫的性能,通常數據庫都是保證在提交(commit)完成之前要先保證日志都被寫入到日志文件中,而臟數據塊則保存在數據緩存(buffer cache)中再不定期的分批寫入到數據文件中。也就是說日志寫入和提交操作是同步的,而數據寫入和提交操作是不同步的。這樣就存在一個問題,當一個數據庫崩潰的時候並不能保證緩存里面的臟數據全部寫入到數據文件中,這樣在實例啟動的時候就要使用日志文件進行恢復操作,將數據庫恢復到崩潰之前的狀態,保證數據的一致性。檢查點是這個過程中的重要機制,通過它來確定,恢復時哪些重做日志應該被掃描並應用於恢復。

     一般所說的checkpoint是一個數據庫事件(event),checkpoint事件由checkpoint進程(LGWR/CKPT進程)發出,當checkpoint事件發生時DBWn會將臟塊寫入到磁盤中,同時數據文件和控制文件的文件頭也會被更新以記錄checkpoint信息。

 

SparkStreaming

 什么是SparkStreaming:     

      Spark是一個類似於Hadoop的MapReduce分布式計算框架,其核心是彈性分布式數據集(RDD,一個在內存中的數據集合),提供了比MapReduce更豐富的模型,可以在快速在內存中對數據集進行多次迭代,以支持復雜的數據挖掘算法和圖形計算算法。 Spark擁有Hadoop MapReduce所具有的優點;但不同於Hadoop MapReduce的是計算任務中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,節省了磁盤IO耗,號稱性能比Hadoop快100倍。 Spark Streaming是一種構建在Spark上的實時計算框架,它擴展了Spark處理大規模流式數據的能力。即SparkStreaming 是基於Spark的流式計算框架。

Spark Streaming的優勢在於:  

1、能運行在100+的結點上,並達到秒級延遲。  

2、使用基於內存的Spark作為執行引擎,具有高效和容錯的特性。  

3、能集成Spark的批處理和交互查詢。  

4、為實現復雜的算法提供和批處理類似的簡單接口。

SparkStreaming原理

      Spark Streaming是將流式計算分解成一系列短小的批處理作業。這里的批處理引擎是Spark,也就是把Spark Streaming的輸入數據按照batch size(如1秒)分成一段一段的數據(Discretized Stream),每一段數據都轉換成Spark中的RDD(Resilient Distributed Dataset),然后將Spark Streaming中對DStream的Transformation操作變為針對Spark中對RDD的Transformation操作。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM