如何構建一個flink sql平臺
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叢集執行
大家喜歡多多關注,你的關注是我最大的動力。
可以關注我的微信公眾號:首席資料師 裡面有很多關於大資料的乾貨