對於spark Streaming概念的再理解

1、spark Streaming是一個微批處理的框架

2、批處理時間間隔 batchInterval 
     >> 表示在batchInterval時間內Spark 所接收的數據被當做一個批次做處理
3、批處理時間間隔(batchInterval)、窗口長度(windowLen)、窗口滑動時間(windowSlide)之間的關係
   >> 3.1 spark提交作業最小的單位是batchInterval即在batchInterval時間內的數據作爲數據處理最小的單位
   >> 3.2 windowLen 表示處理的"數據量"即處理的數據量是batchInterval的N倍,N具體是幾就要看windowLen是batchInterval的幾倍
   >> 3.3 windowSlide 表示提交作業的時長,也是batchInterval的整數倍
   >> 3.4 eg:如果 batchInterval=t,  windowLen=10t,  windowSlide=3t 
        >> 此時,spark每次會處理最近10t時間內的數據,即每3t時間處理一次,處理的數據時最近10t內的數據
>> 在現實中比如天貓雙11的銷售額,每10秒鐘處理一下最近24小時的銷售額,這個10秒鐘就是windowSlide,24小時就是windowLen
>> 由此可見,windowLen和windowSlide都必須是batchInterval的整數倍
4、DStream的原理以及與RDD的關係
>> 4.1 DStream是針對RDD的抽象,表示一系列在時間上連續的RDD
>> 4.2 Dstream中包含3大部分(1)、DStream之間的依賴關係,即操作鏈依賴 (2)、一系列時間上連續的RDD,使用HashMap<Time,RDD>持有,新的RDD不斷的添加到這個hash表中,
>>而舊的不需要的則會從這個hash表中刪除,(3)、用於對RDD進行計算的compute()函數,當對Dstream進行計算時,通過這個函數作用於RDD上
5、spark的容錯處理
>> 5.1 Worker節點失效 
>>5.1.1 如果數據的輸入源在HDFS上,那麼在任務恢復時可以再次計算出來
>>5.1.2 如果數據源是網絡或者kafka則有可能丟失一部分數據
>>5.1.3 如果是轉換操作可以實現精處理一次,如果是寫出操作則能保證至少處理一次
>> 5.2 Driver節點失效
>> 可以通過設置checkPoint來預防Driver失效,設置checkPoint,sparkStreaming會週期性的將Dstream的元數據寫入到HDFS中,如果Driver節點失效,則可以通過其記錄點將StreamingContext回覆
>> 如果使用checkPoint則通過 JavaStreamingContext.getOrCreate方法獲取 JavaStreamingContext的對象,還需要注意的是當spark應用重新編譯後就不能通過checkPoint恢復到原來的狀態了
>> 所以在每次編譯代碼後要顯示的把checkPoint路徑下的文件刪除
>> 5.3 這些情況在standalone模式下會自動回覆,其他模式下則需要藉助其他機制輔助

6、spark Streaming作業
>> 6.1 類似於spark作業,spark Streaming作業通過輸出操作觸發
>> 6.2 spark Streaming作業最終會轉換爲spark作業而被spark集羣執行

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