Spark Streaming基礎概念介紹
有很多文章講解storm與spark streaming的區別,都非常詳細。
本文就介紹一下spark streaming比較重要的概念
一、術語介紹:
- 離散流(discretized stream)或DStream:這是Spark Streaming對內部持續的實時資料流的抽象描述,即我們處理的一個實時資料流,在Spark Streaming中對應於一個DStream 例項。
- 批資料(batch data):這是化整為零的第一步,將實時流資料以時間片為單位進行分批,將流處理轉化為時間片資料的批處理。隨著持續時間的推移,這些處理結果就形成了對應的結果資料流了。
- 時間片或批處理時間間隔( batch interval):這是人為地對流資料進行定量的標準,以時間片作為我們拆分流資料的依據。一個時間片的資料對應一個RDD例項。
- 視窗長度(window length):一個視窗覆蓋的流資料的時間長度。必須是批處理時間間隔的倍數,
- 滑動時間間隔:前一個視窗到後一個視窗所經過的時間長度。必須是批處理時間間隔的倍數,預設同批處理時間間隔
- Input DStream :一個input DStream是一個特殊的DStream,將Spark Streaming連線到一個外部資料來源來讀取資料。
二、特點
- Storm可以實現亞秒級時延的處理,而每次只處理一條event,而Spark Streaming可以在一個短暫的時間視窗裡面處理多條(batches)Event。所以說Storm可以實現亞秒級時延的處理,而Spark Streaming則有一定的時延。
- 在Storm中,每條記錄在系統的移動過程中都需要被標記跟蹤,所以Storm只能保證每條記錄最少被處理一次(Trident代價很大)。storm可以由一個spout和多個blot組成,每個bolt處理不同的業務邏輯,只有在成功處理spout和所有bolt之後才認為這條tuple處理成功,否則失敗。這樣就有可能導致一些bolt處理成功,一些bolt處理失敗的時候。當處理失敗的tuple重新處理時,之前成功處理的bolt又被處理了一次,在一些業務場景中有可能導致錯誤。而Spark streaming底層依賴spark core,每個批處理資料都是一個RDD。這個原始的RDD經過一系列的轉換,最終由action觸發執行。如果某個分割槽處理失敗,這個partition會被標記為失敗。對於輸入源資料,會自動地持久化在記憶體中供後續操作使用,並複製到不同的節點以保證容錯。
- spark streaming會將接收到的資料全部儲存於內部的記憶體區域中,所以需要設定合理的spark.cleaner.ttl來及時清理超時無用資料。這個引數需要小心設定以免後續操作中所需資料被超時而錯誤清理。更合適的方式是將spark.streaming.unpersist設定為true,使系統自動清理不需要使用的RDD。
三、節點失效
1、工作節點失效:由於輸入資料在hdfs或者有備份資料,每次轉換結果都是一致的,因此總會得到相同的結果。而對於輸出而言,只能確保“至少處理一次”。
2、驅動節點失效:如果driver掛掉了,那streamingContext就消失了。通過ssc.checkpoint<dir>設定記錄點,週期性的將DStream元資訊寫入HDFS。一旦失效,就能恢復出來。通過呼叫函式streamingContext.getOrCreate來開啟這個特性。注意,如果程式重新編譯了,那就必須重建streamingContext,否則就可能讀取時反序列化失敗。在驅動節點失效的情況下,standalone模式下可以自動恢復,而其他模式需要依賴其它機制。
轉載: http://blog.csdn.net/yueqian_zhu/article/details/48788037
具體實現原理見 spark streaming原始碼分析
相關文章
- Spring基礎只是—AOP的概念介紹Spring
- hadoop基礎學習三十一(spark-streaming)HadoopSpark
- 【Kubernetes系列】第2篇 基礎概念介紹
- 微課sql最佳化(1)、基礎概念介紹SQL
- Pandas基礎介紹
- Elasticsearch 基礎介紹Elasticsearch
- Spark學習進度11-Spark Streaming&Structured StreamingSparkStruct
- 通俗地說決策樹演算法(一)基礎概念介紹演算法
- Spark Streaming精進之前必須瞭解的基本概念Spark
- 1、Oracle 基礎介紹Oracle
- ActiveMq的基礎介紹MQ
- JDBC的基礎介紹JDBC
- MySQL 教程基礎介紹MySql
- Spark Streaming VS FlinkSpark
- Spark Streaming入門Spark
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- Spark 系列(十五)—— Spark Streaming 整合 FlumeSpark
- spark學習筆記-- Spark StreamingSpark筆記
- RocketMQ系列1:基礎介紹MQ
- OSPF介紹及基礎配置
- Django基礎教程之介紹Django
- Spark學習筆記(三)-Spark StreamingSpark筆記
- Spark Streaming Failed to read checSparkAI
- spark-streaming之 socketTextStreamSpark
- Spark Streaming學習——DStreamSpark
- Spark Streaming 流式處理Spark
- Spark Streaming :基本工作原理Spark
- Spark Structured Streaming 解析 JSONSparkStructJSON
- Spark基礎Spark
- spark簡單介紹(一)Spark
- TypeScript Mixins 概念介紹TypeScript
- 一文帶你過完Spark RDD的基礎概念Spark
- kylin streaming原理介紹與特點淺析
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- Spark 以及 spark streaming 核心原理及實踐Spark
- Python介紹和基礎運用Python
- Jumpserver基礎運維-01介紹Server運維
- 02-ASP.Net(基礎介紹)ASP.NET
- Linux shell 指令碼基礎介紹Linux指令碼