在近期的 Apache Kylin × Apache Hudi Meetup 直播上,Apache Kylin PMC Chair 史少鋒和 Kyligence 解決方案工程師劉永恆就 Hudi + Kylin 的準實時數倉實現進行了介紹與演示。本文是分享現場的回顧。 ...
在近期的 Apache Kylin × Apache Hudi Meetup 直播上,Apache Kylin PMC Chair 史少鋒和 Kyligence 解決方案工程師劉永恆就 Hudi + Kylin 的準實時數倉實現進行了介紹與演示。下文是分享現場的回顧。
我的分享主題是《基於 Hudi 和 Kylin 構建準實時、高性能數據倉庫》,除了講義介紹,還安排了 Demo 實操環節。下麵是今天的日程:01 資料庫、數據倉庫
先從基本概念開始。我們都知道資料庫和數據倉庫,這兩個概念都已經非常普遍了。資料庫 Database,簡稱 DB,主要是做 OLTP(online transaction processing),也就是線上的交易,如增刪改;數據倉庫 Data Warehouse,簡稱 DW,主要是來做OLAP(online analytics processing),也就是線上數據分析。OLTP 的典型代表是 Oracle、MySQL,OLAP 則像 Teradata、Greenplum,近些年有 ClickHouse、Kylin 等。 資料庫和數據倉庫兩者在存儲實現上是不一樣的,資料庫一般是按行存,這樣可以按行來增加、修改;數據倉庫是按列來存儲,是為了分析的時候可以高效訪問大量的數據,同時跳過不需要的列;這種存儲差異導致兩個系統難以統一,數據從資料庫進入到數據倉庫需要一條鏈路去處理。02 數據湖
近些年出現了數據湖(Data Lake)的概念,簡單來說數據湖可以存儲海量的、不同格式、彙總或者明細的數據,數據量可以達到 PB 到 EB 級別。企業不僅可以使用數據湖做分析,還可以用於未來的或未曾預判到的場景,因此需要的原始數據存儲量是非常大的,而且模式是不可預知的。數據湖產品典型的像 Hadoop 就是早期的數據湖了,現在雲上有很多的數據湖產品,比方 Amazon S3,Azure Blob store,阿裡雲 OSS,以及各家雲廠商都有自己的存儲服務。有了數據湖之後,企業大數據處理就有了一個基礎平臺,非常多的數據從源頭收集後都會先落到數據湖上,基於數據湖再處理和載入到不同的分析庫去。但是,數據湖開始設計主要是用於數據的存儲,解決的是容量的水平擴展性、數據的持久性和高可用性,沒有太多考慮數據的更新和刪除。例如 HDFS 上通常是將文件分塊(block)存儲,一個 block 通常一兩百兆;S3 同樣也是類似,大的 block 可以節省管理開銷,並且這些文件格式不一,通常沒有高效的索引。如果要修改文件中的某一行記錄,對於數據湖來說是非常難操作的,因為它不知道要修改的記錄在哪個文件的哪個位置,它提供的方式僅僅是做批量替換,代價比較大。