1,什麼是Flink實時數倉。
大家做離線開發是的時候數據存儲在hdfs或者hive,基於此,不管用什麼組件,數據源都是hive,然後定時執行腳本,跑離線任務啥的。
實時數倉大家可以理解爲數據都存儲在kafka,Flink消費kafka的數據然後進行邏輯處理,然後再下發到kafka,這麼延遲是秒或者分鐘級別的,對於不同的業務效果更好,更實時。
2,爲什麼要做實時數倉呢?
我的理解是因爲業務,大家想想,離線數據處理的都是什麼數據,簡單總結之就是流量數據,從大量的數據最後得到幾個需要的維度的值,而實時數倉效果更快,這是技術的進步,更能提高效率
3,實時數倉的缺點?
缺點可能的話還是資源吧,消耗更多。
與其說是缺點,不如說是難點,痛點。 大概是資料不是很多,坑還需要人來趟。
4,之前我在接觸實時數倉的時候,有個想法。
我之前想整合 Nifi + Flink+Druid的,目前都瞭解了一下之後發現不行。
首先Nifi 使用有侷限,沒我想象的那麼簡單和容易上手,Druid就不說了,吃資源大戶,類似kylin,而且也是需要時間去設計數據結構,存儲等等,難點不是使用。這兩者都不是很流行,說白了用的人沒那麼多,對於公司來講,成本未知。
5,還是聊聊Flink實時數倉吧。
1)美團實時數倉
平臺架構:
案例:流量數倉
使用效果:
實踐總結:
傳統數倉:
Flink實時數倉:
準實時數倉:
準實時數倉與實時數倉的對比:
實時數倉平臺架構:
2)美團:
ODS層:
保證kafka分區數據有序:
DW層的建設:
維度建設:
維度數據使用:
彙總層的建設:
注意點:去重的時候可能會佔用過大的資源導致程序死掉,我們可以使用一些算法或者辦法,比如布隆過濾器
倉庫的質量保證:
Flink sql校驗怎麼做?
一定建立血緣關係,如果任務或者作業修改了,下游要準確的保持一致,所以需要血緣關係。
數據質量驗證:
就是將中間表數據寫入hive,通過離線數據的結果統計比對實時數倉的結果是否正確,驗證差異。
3)拉鍊表的意思:
https://blog.csdn.net/saqin6255/article/details/80362248
4)
6,大家可以參考的文章或者視頻瞭解一下