阿里云實(shí)時(shí)計(jì)算 Flink 版 x Hologres: 構(gòu)建企業(yè)級(jí)一站式實(shí)時(shí)數(shù)倉

作者|徐榜江 余文兵 趙紅梅
編輯|伍翀

685-383.jpg

隨著大數(shù)據(jù)的迅猛發(fā)展宛徊,企業(yè)越來越重視數(shù)據(jù)的價(jià)值歧杏,這就意味著需要數(shù)據(jù)盡快到達(dá)企業(yè)分析決策人員陪每,以最大化發(fā)揮數(shù)據(jù)價(jià)值影晓。企業(yè)最常見的做法就是通過構(gòu)建實(shí)時(shí)數(shù)倉來滿足對(duì)數(shù)據(jù)的快速探索。在業(yè)務(wù)建設(shè)過程中檩禾,實(shí)時(shí)數(shù)倉需要支持?jǐn)?shù)據(jù)實(shí)時(shí)寫入與更新挂签、業(yè)務(wù)敏捷快速響應(yīng)、數(shù)據(jù)自助分析盼产、運(yùn)維操作便捷饵婆、云原生彈性擴(kuò)縮容等一系列需求,而這就依賴一個(gè)強(qiáng)大的實(shí)時(shí)數(shù)倉解決方案戏售。阿里云實(shí)時(shí)計(jì)算 Flink 版(以下簡(jiǎn)稱“阿里云 Flink”)提供全增量一體化數(shù)據(jù)同步技術(shù)侨核、強(qiáng)大的流式 ETL 等能力,支持海量數(shù)據(jù)實(shí)時(shí)入倉入湖蜈项。阿里云 Hologres 作為新一代實(shí)時(shí)數(shù)倉引擎能同時(shí)解決 OLAP 多維分析芹关、在線服務(wù)、離線數(shù)據(jù)加速等多個(gè)業(yè)務(wù)查詢場(chǎng)景紧卒,通過阿里云 Flink 與 Hologres 的強(qiáng)強(qiáng)結(jié)合侥衬,實(shí)現(xiàn)全鏈路的數(shù)據(jù)探索實(shí)時(shí)化、數(shù)據(jù)分析敏捷化,快速助力業(yè)務(wù)構(gòu)建企業(yè)級(jí)一站式實(shí)時(shí)數(shù)倉轴总,實(shí)現(xiàn)更具時(shí)效更智能的業(yè)務(wù)決策直颅。

在本文中,我們將會(huì)介紹阿里云 Flink怀樟、阿里云 Hologres 在構(gòu)建實(shí)時(shí)數(shù)倉上所具備的核心能力以及二者結(jié)合的最佳解決方案功偿,用戶通過阿里云 Flink+Hologres 實(shí)時(shí)數(shù)倉解決方案,可以顯著降低數(shù)倉建設(shè)門檻往堡,讓數(shù)據(jù)發(fā)揮更大的價(jià)值械荷,助力各行各業(yè)實(shí)現(xiàn)數(shù)字化升級(jí)。

一虑灰、Flink CDC 核心能力

Apache Flink 是開源的大數(shù)據(jù)流式計(jì)算引擎吨瞎,支持處理數(shù)據(jù)庫、Binlog穆咐、在線日志等多種實(shí)時(shí)數(shù)據(jù)颤诀,提供端到端亞秒級(jí)實(shí)時(shí)數(shù)據(jù)分析能力,并通過標(biāo)準(zhǔn) SQL 降低實(shí)時(shí)業(yè)務(wù)開發(fā)門檻对湃。伴隨著實(shí)時(shí)化浪潮的發(fā)展和深化崖叫,F(xiàn)link 已逐步演進(jìn)為流處理的領(lǐng)軍角色和事實(shí)標(biāo)準(zhǔn),并蟬聯(lián) Apache 社區(qū)最活躍項(xiàng)目拍柒。

Flink CDC 是阿里云計(jì)算平臺(tái)事業(yè)部 2020 年 7 月開源的一款數(shù)據(jù)集成框架心傀,與 Flink 生態(tài)深度融合,具有全增量一體化斤儿、無鎖讀取剧包、并發(fā)讀取、分布式架構(gòu)等技術(shù)優(yōu)勢(shì)往果,既可以替代傳統(tǒng)的 DataX 和 Canal 工具做數(shù)據(jù)同步疆液,也支持?jǐn)?shù)據(jù)庫數(shù)據(jù)實(shí)時(shí)入湖入倉,同時(shí)還具備強(qiáng)大的數(shù)據(jù)加工能力陕贮。

在構(gòu)建實(shí)時(shí)數(shù)倉的過程中堕油,數(shù)據(jù)采集是必需的組件。在傳統(tǒng)的 ETL 架構(gòu)里肮之,采集層國外用戶通常選擇 Debezium掉缺,國內(nèi)用戶則習(xí)慣用 DataX 和 Canal,采集工具負(fù)責(zé)采集數(shù)據(jù)庫的全量數(shù)據(jù)和增量數(shù)據(jù)戈擒。采集到的數(shù)據(jù)會(huì)輸出到消息中間件如 Kafka眶明,然后通過 Flink 計(jì)算引擎實(shí)時(shí)消費(fèi)消息中間件數(shù)據(jù)做計(jì)算層的數(shù)據(jù)清洗和數(shù)據(jù)加工,加工完成后再寫入目的端(裝載層)筐高,通常是各種數(shù)據(jù)庫搜囱、數(shù)據(jù)湖和數(shù)據(jù)倉庫丑瞧。在傳統(tǒng) ETL 鏈路中,數(shù)據(jù)采集工具與消息隊(duì)列是比較重的組件蜀肘,可能維護(hù)在不同的團(tuán)隊(duì)绊汹,在上游的數(shù)據(jù)源有業(yè)務(wù)變更或者這些組件需要升級(jí)維護(hù)時(shí),整個(gè)鏈路的維護(hù)成本會(huì)非常大扮宠。

1.jpg

通過使用 Flink CDC 去替換上圖中的數(shù)據(jù)采集組件與消息隊(duì)列西乖,將采集層(Extraction)和計(jì)算層(Transformation)合并,簡(jiǎn)化了整個(gè) ETL 分析鏈路坛增,用戶可以使用更少的組件完成數(shù)據(jù)鏈路的搭建获雕,整體架構(gòu)帶來更低的運(yùn)維開銷和更少的硬件成本、更好的數(shù)據(jù)鏈路穩(wěn)定性收捣、以及降低端到端的數(shù)據(jù)延遲典鸡。除了穩(wěn)定性的提升,F(xiàn)link CDC 的另一個(gè)優(yōu)勢(shì)就是用戶只需要寫 SQL 腳本就能完成 CDC 數(shù)據(jù)的清洗坏晦,加工和同步,極大地降低了用戶使用門檻嫁乘。

除全增量一體化同步能力外昆婿,阿里云 Flink CDC 還提供了表結(jié)構(gòu)變更自動(dòng)同步、整庫同步蜓斧、分庫分表合并同步等諸多企業(yè)級(jí)特性仓蛆,方便用戶快速打通數(shù)據(jù)孤島,實(shí)現(xiàn)業(yè)務(wù)價(jià)值挎春。

1.1 全增量一體化同步

Flink CDC 通過增量快照讀取算法在開源數(shù)據(jù)集成領(lǐng)域率先支持了無鎖讀取看疙、并行讀取、斷點(diǎn)續(xù)傳直奋、不丟不重四個(gè)重要特性能庆。其中無鎖讀取徹底解決了數(shù)據(jù)同步對(duì)上游業(yè)務(wù)數(shù)據(jù)庫的死鎖風(fēng)險(xiǎn),并行讀取很好地滿足了海量數(shù)據(jù)同步的需求脚线,斷點(diǎn)續(xù)傳和不丟不重特性則是提升了同步鏈路的穩(wěn)定性和可靠性搁胆。

2.jpg

增量快照讀取算法的核心思路就是在全量讀取階段把表分成一個(gè)個(gè) chunk 進(jìn)行并發(fā)讀取,在進(jìn)入增量階段后只需要一個(gè) task 進(jìn)行單并發(fā)讀取 Binlog 日志邮绿,在全量和增量自動(dòng)切換時(shí)渠旁,通過無鎖算法保障一致性。這種設(shè)計(jì)在提高讀取效率的同時(shí)船逮,進(jìn)一步節(jié)約了資源顾腊,實(shí)現(xiàn)了全增量一體化的數(shù)據(jù)同步。配合阿里云實(shí)時(shí)計(jì)算產(chǎn)品提供的資源自動(dòng)調(diào)優(yōu)特性挖胃,F(xiàn)link CDC 作業(yè)的資源可以做到自動(dòng)擴(kuò)縮容杂靶,無需手動(dòng)介入梆惯。

1.2 表結(jié)構(gòu)變更自動(dòng)同步

隨著業(yè)務(wù)的迭代和發(fā)展,數(shù)據(jù)源的表結(jié)構(gòu)變更是經(jīng)常會(huì)發(fā)生的操作伪煤。用戶需要及時(shí)地去修改數(shù)據(jù)同步作業(yè)以適配最新的表結(jié)構(gòu)加袋,這一方面帶來了較大的運(yùn)維成本,也影響了同步管道的穩(wěn)定性和數(shù)據(jù)的時(shí)效性抱既。阿里云 Flink 支持通過 Catalog 來實(shí)現(xiàn)元數(shù)據(jù)的自動(dòng)發(fā)現(xiàn)和管理职烧,配合 CTAS (Create Table AS)語法,用戶可以通過一行 SQL 實(shí)現(xiàn)數(shù)據(jù)的同步和表結(jié)構(gòu)變更自動(dòng)同步防泵。

Flink SQL> USE CATALOG holo;
Flink SQL> CREATE TABLE user AS TABLE mysql.`order_db`.`user`;  

CTAS 語句會(huì)解析成一個(gè) Flink 作業(yè)執(zhí)行蚀之,這個(gè) Flink 作業(yè)源頭支持讀取數(shù)據(jù)變更和表結(jié)構(gòu)變更并同步到下游,數(shù)據(jù)和表結(jié)構(gòu)變更都可以保證順序捷泞,上述 CTAS 語句運(yùn)行時(shí)結(jié)構(gòu)變更同步的效果如下圖所示足删。

3.jpg

示例如果在上游 MySQL 的 user 表中新增一列 age,并插入一條 id 為 27锁右,年齡為 30 的記錄失受。

MySQL> ALTER TABLE `user` ADD COLUMN `age` INT;
MySQL> INSERT INTO `user` (id, name, age) VALUES (27, 'Tony', 30);

user 表上的數(shù)據(jù)和結(jié)構(gòu)變更都能實(shí)時(shí)地自動(dòng)同步到下游 Hologres 的 user 表中,id 為 12,16 和 19 的歷史數(shù)據(jù)咏瑟,新增的列會(huì)自動(dòng)補(bǔ) NULL 值拂到。

1.3 整庫同步

在實(shí)時(shí)數(shù)倉構(gòu)建中,用戶經(jīng)常需要將整個(gè)數(shù)據(jù)庫同步到數(shù)倉中做進(jìn)一步的分析码泞,一張表一個(gè)同步作業(yè)的方式不但浪費(fèi)資源兄旬,也會(huì)給上游數(shù)據(jù)庫產(chǎn)生較大的壓力。針對(duì)這類用戶痛點(diǎn)余寥,阿里云 Flink CDC 提供了整庫同步特性领铐。整庫同步功能通過 CDAS (Create Database AS) 語法配合 Catalog 實(shí)現(xiàn)。

Flink SQL> USE CATALOG holo;
Flink SQL> CREATE DATABASE holo_order AS DATABASE
           mysql.`order_db` INCLUDING ALL TABLES;

例如 MySQL Catalog 和 Hologres Catalog 配合 CDAS 語法宋舷,可以完成 MySQL 到 Hologres 的全增量數(shù)據(jù)同步绪撵。CDAS 語句會(huì)解析成一個(gè) Flink 作業(yè)執(zhí)行,這個(gè) Flink 作業(yè)自動(dòng)解析源表的表結(jié)構(gòu)及相應(yīng)的參數(shù)肥缔,并將指定的一個(gè)或多個(gè)數(shù)據(jù)庫同步到下游 Hologres 數(shù)倉中莲兢,整個(gè)過程用戶無需手寫 DDL 語句,無需用戶在 Hologres 提前創(chuàng)建表续膳,就能快速實(shí)現(xiàn)數(shù)據(jù)的整庫同步改艇。

4.jpg

CDAS 作業(yè)默認(rèn)提供表結(jié)構(gòu)變更同步能力,所有表的結(jié)構(gòu)變更都會(huì)按照發(fā)生順序同步至下游 Hologres 實(shí)時(shí)數(shù)倉坟岔,CDAS 語法也支持過濾不需要同步的表谒兄。

1.4 分庫分表合并同步

分庫分表是高并發(fā)業(yè)務(wù)系統(tǒng)采用的經(jīng)典數(shù)據(jù)庫設(shè)計(jì),通常我們需要將分庫分表的業(yè)務(wù)數(shù)據(jù)匯聚到一張數(shù)倉中的大表社付,方便后續(xù)的數(shù)據(jù)分析承疲,即分庫分表合并同步的場(chǎng)景邻耕。針對(duì)這種場(chǎng)景,阿里云 Flink CDC 提供了分庫分表合并同步特性燕鸽,通過在 CTAS 語法支持源庫和源表的正則表達(dá)式兄世,源數(shù)據(jù)庫的分表可以高效地合并同步到下游 Hologres 數(shù)倉中。

Flink SQL> USE CATALOG holo;
Flink SQL> CREATE TABLE order AS TABLE mysql.`order_db.*`.`order_.*`;

上述 CTAS 語句中的源庫名 order_db.* 是個(gè)正則表達(dá)式啊研,可以匹配當(dāng)前 MySQL 實(shí)例下的 order_db01御滩,order_db02 和 order_db03 三個(gè)庫,源表名 order_* 也是個(gè)正則表達(dá)式党远,可以匹配三個(gè)庫下所有以 order_打頭的表削解。

5.jpg

針對(duì)分庫分表同步場(chǎng)景,用戶只需要提供分庫分表的正則表達(dá)式就可以將這多張分庫分表合并同步到下游 Hologres 數(shù)倉的 ordder 表中沟娱。與其他 CDAS 語句一樣氛驮,分庫分表同步場(chǎng)景默認(rèn)提供表結(jié)構(gòu)變更自動(dòng)同步特性,下游 Hologres 表的 schema 為所有分表合并后的最寬 schema济似。分庫分表同步時(shí)每行記錄所屬的庫名和表名會(huì)作為額外的兩個(gè)字段自動(dòng)寫入到 user 表中矫废,庫名(上圖中 db 列)、表名(上圖中 tbl 列)和原主鍵(上圖中 id 列) 會(huì)一起作為下游 Hologres user 表的聯(lián)合主鍵砰蠢,保證 Hologres user 表上主鍵的唯一性磷脯。

二、Hologres 核心能力

阿里云 Hologres 是自研的一站式實(shí)時(shí)數(shù)據(jù)倉庫引擎娩脾,支持海量數(shù)據(jù)實(shí)時(shí)寫入、實(shí)時(shí)更新打毛、實(shí)時(shí)分析柿赊,支持標(biāo)準(zhǔn) SQL(兼容 PostgreSQL 協(xié)議),提供 PB 級(jí)數(shù)據(jù)多維分析(OLAP)與即席分析以及高并發(fā)低延遲的在線數(shù)據(jù)服務(wù)(Serving)幻枉,與阿里云 Flink碰声、MaxCompute、DataWorks 等深度融合熬甫,為企業(yè)提供離在線一體化全棧數(shù)倉解決方案胰挑。

2.1 高性能實(shí)時(shí)寫入與更新

數(shù)據(jù)寫入的時(shí)效性是實(shí)時(shí)數(shù)倉的重要能力之一。對(duì)于 BI 類等延遲不敏感的業(yè)務(wù)查詢椿肩,如果寫入時(shí)延幾秒甚至幾分鐘可能是可以接受的瞻颂。而對(duì)于很多生產(chǎn)系統(tǒng),如實(shí)時(shí)風(fēng)控郑象、實(shí)時(shí)大屏等場(chǎng)景贡这,要求數(shù)據(jù)寫入即可見。如果寫入出現(xiàn)延遲厂榛,就會(huì)查詢不到最新的數(shù)據(jù)盖矫,嚴(yán)重影響線上業(yè)務(wù)決策丽惭。在實(shí)時(shí)數(shù)倉整個(gè)數(shù)據(jù)處理鏈路中,Hologres 作為一站式實(shí)時(shí)數(shù)據(jù)倉庫引擎辈双,提供海量數(shù)據(jù)高性能的實(shí)時(shí)寫入责掏,數(shù)據(jù)寫入即可查詢,無延遲湃望。

同時(shí)在數(shù)倉場(chǎng)景上换衬,數(shù)據(jù)來源復(fù)雜,會(huì)涉及到非常多的數(shù)據(jù)更新喜爷、修正的場(chǎng)景冗疮,Hologres 可以通過主鍵(Primary Key, PK)提供高性能的 Upsert 能力,整個(gè)寫入和更新過程確保 Exactly Once檩帐,滿足對(duì)對(duì)數(shù)據(jù)的合并术幔、更新等需求。

下圖為 Hologres 128C 實(shí)例下湃密,10 個(gè)并發(fā)實(shí)時(shí)寫入 20 列的列存表的測(cè)試結(jié)果诅挑。其中豎軸表示每秒寫入記錄數(shù),橫軸為 4 個(gè)寫入場(chǎng)景:

6.jpg
  • Append Only:寫入表無主鍵泛源,寫入能力 230 萬+的 RPS拔妥。

  • INSERT:寫入表有主鍵,如果主鍵沖突就丟棄新行达箍,寫入能力 200 萬 RPS没龙。

  • UPDATE-1:寫入表有主鍵,表中原始數(shù)據(jù)量為 2 億缎玫,按照主鍵 Upsert硬纤,寫入能力 80 萬的 RPS。

  • UPDATE-2:寫入表有主鍵赃磨,表中數(shù)據(jù)量為 20 億筝家,按照主鍵做 Upsert,寫入能力 70 萬的 RPS邻辉。

2.2 實(shí)時(shí) OLAP 分析

Hologres 采用可擴(kuò)展的 MPP 全并行計(jì)算溪王,支持行存、列存值骇、行列共存等多種存儲(chǔ)模式莹菱,同時(shí)支持多種索引類型。通過分布式處理 SQL 以及向量化的算子吱瘩,能夠?qū)?CPU 資源發(fā)揮到極致芒珠,從而支持海量數(shù)據(jù)亞秒級(jí)分析,無需預(yù)計(jì)算搅裙,就能支持實(shí)時(shí)多維分析皱卓、即席分析等多種實(shí)時(shí) OLAP 分析的場(chǎng)景裹芝,再直接無縫對(duì)接上層應(yīng)用/服務(wù),滿足所見即所得的分析體驗(yàn)娜汁。

下圖為 Hologres 128C 實(shí)例下嫂易,TPCH 100G 標(biāo)準(zhǔn)數(shù)據(jù)集下的測(cè)試結(jié)果,橫軸表示 query掐禁,縱軸是響應(yīng)時(shí)間:

7.jpg

2.3 高性能在線服務(wù)

隨著實(shí)時(shí)數(shù)倉的廣泛應(yīng)用怜械,越來越多的企業(yè)把實(shí)時(shí)數(shù)倉作為在線服務(wù)系統(tǒng)提供在線查詢。Hologres 作為 HSAP(Hybrid Serving and Analytics Processing, 服務(wù)與分析一體化)的最佳落地實(shí)踐傅事,除了具備處理分析型 Query 的能力外缕允,還具備十分強(qiáng)大的在線服務(wù) Serving 能力(高 QPS 點(diǎn)查),例如 KV 點(diǎn)查與向量檢索蹭越。在 KV 點(diǎn)查場(chǎng)景中障本,Holgres 通過 SQL 接口可以支持百萬級(jí)的 QPS 吞吐與極低的延時(shí)。通過 Hologres 能夠做到一套系統(tǒng)响鹃、一份數(shù)據(jù)支持同時(shí) OLAP 分析和在線服務(wù)兩種場(chǎng)景驾霜,簡(jiǎn)化數(shù)據(jù)架構(gòu)。

下圖為 Hologres 128C 實(shí)例下买置,CPU 消耗 25%的點(diǎn)查測(cè)試性能:

8.jpg

2.4 讀寫分離高可用

實(shí)時(shí)數(shù)據(jù)倉庫 Hologres 提供高 QPS 低延遲的寫入能力粪糙,支持在線服務(wù)的查詢場(chǎng)景,還支持復(fù)雜的多維分析 OLAP 查詢忿项。當(dāng)不同類型蓉冈,不同復(fù)雜的任務(wù)請(qǐng)求到 Hologres 實(shí)例上時(shí),Hologres 不僅需要確保任務(wù)的正常運(yùn)行轩触,還要確保系統(tǒng)的穩(wěn)定性洒擦。當(dāng)前 Hologres 支持通過共享存儲(chǔ)的一主多從子實(shí)例的高可用架構(gòu),實(shí)現(xiàn)了完整的讀寫分離功能怕膛,保障 不同業(yè)務(wù)場(chǎng)景的 SLA。

9.jpg
  1. 讀寫分離:實(shí)現(xiàn)了完整的讀寫分離功能秦踪,保障不同業(yè)務(wù)場(chǎng)景的 SLA褐捻,在高吞吐的數(shù)據(jù)寫入和復(fù)雜的 ETL 作業(yè)、OLAP 查詢椅邓、AdHoc 查詢柠逞、在線服務(wù)等場(chǎng)景中,系統(tǒng)負(fù)載物理上完全隔離景馁,不會(huì)因?qū)懭肴蝿?wù)產(chǎn)生了查詢?nèi)蝿?wù)的抖動(dòng)板壮。
  2. 多類型負(fù)載資源隔離:一個(gè)主實(shí)例可以配置四個(gè)只讀實(shí)例,實(shí)例之間可以根據(jù)業(yè)務(wù)情況配置不同規(guī)格合住,系統(tǒng)負(fù)載物理上完全隔離绰精,避免相互影響而帶來抖動(dòng)撒璧。
  3. 實(shí)例間數(shù)據(jù)毫秒級(jí)異步同步延遲:P99 5ms 內(nèi)。

2.5 Binlog 訂閱

類似于傳統(tǒng)數(shù)據(jù)庫 MySQL 中的 Binlog 概念笨使,Binlog 用來記錄數(shù)據(jù)庫中表數(shù)據(jù)的修改記錄卿樱,比如 Insert/Delete/Update 的操作。在 Hologres 中硫椰,表的 Binlog 是一種強(qiáng) Schema 格式的數(shù)據(jù)繁调,Binlog 記錄的序列號(hào)(BigInt),在單 shard 內(nèi)單調(diào)遞增靶草,類似于 Kafka 中的 Offset 概念蹄胰。通過阿里云 Flink 消費(fèi) Hologres Binlog,可以實(shí)現(xiàn)數(shù)倉分層間的全鏈路實(shí)時(shí)開發(fā)奕翔,在分層治理的前提下裕寨,縮短數(shù)據(jù)加工端到端延遲,同時(shí)提升實(shí)時(shí)數(shù)倉分層的開發(fā)效率糠悯。

10.jpg

三帮坚、阿里云 Flink x Hologres 一站式企業(yè)級(jí)實(shí)時(shí)數(shù)倉解決方案

3.1 實(shí)時(shí)數(shù)倉 ETL

ETL( Extract-Transform-Load)是比較傳統(tǒng)的數(shù)據(jù)倉庫建設(shè)方法,業(yè)務(wù)庫的數(shù)據(jù) Binlog 經(jīng)過阿里云 Flink 的 ETL 處理之后互艾,數(shù)據(jù)寫入到實(shí)時(shí)數(shù)倉 Hologres 中试和,然后進(jìn)行各類數(shù)據(jù)查詢分析。ETL 的方法核心是需要在數(shù)倉中具備完善的數(shù)倉模型分層纫普,通常按照 ODS(Operational Data Source)> DWD(Data Warehouse Detail)> DWS(Data Warehouse Summary)> ADS(Application Data Service)分層阅悍,整個(gè)數(shù)倉鏈路比較完善。

11.jpg

在這個(gè)鏈路中昨稼,需要將數(shù)據(jù)源比如 MySQL 的 Binlog 數(shù)據(jù)通過阿里云 Flink CDC 同步到消息隊(duì)列 Kafka节视,再通過阿里云 Flink 將 ODS 的數(shù)據(jù)進(jìn)行過濾,清洗假栓,邏輯轉(zhuǎn)化等操作寻行,形成對(duì)不同的業(yè)務(wù)主題模型的 DWD 數(shù)據(jù)明細(xì)層,同時(shí)將數(shù)據(jù)發(fā)送到 Kafka 集群匾荆,之后再通過阿里云 Flink 將 DWD 的數(shù)據(jù)進(jìn)行輕度的匯總操作拌蜘,形成業(yè)務(wù)上更加方便查詢的 DWS 輕度匯總層數(shù)據(jù),再將數(shù)據(jù)寫入 Kafka 集群牙丽。最后再面向業(yè)務(wù)具體的應(yīng)用層的需求简卧,在 DWS 層基礎(chǔ)上通過阿里云 Flink 實(shí)時(shí)處理形成 ADS 數(shù)據(jù)應(yīng)用層,寫入實(shí)時(shí)數(shù)倉 Hologres 進(jìn)行存儲(chǔ)和分析烤芦,支持業(yè)務(wù)各種不同類型的報(bào)表举娩,畫像等業(yè)務(wù)場(chǎng)景。

實(shí)時(shí)數(shù)倉 ETL 的處理優(yōu)點(diǎn)是數(shù)倉各種層次比較完備,職責(zé)清晰铜涉,但是缺點(diǎn)是 Flink 結(jié)合 Kafka 集群維護(hù)復(fù)雜智玻,處理鏈路比較長(zhǎng),歷史數(shù)據(jù)修正復(fù)雜骄噪,ADS 應(yīng)用層的數(shù)據(jù)實(shí)時(shí)性會(huì)弱尚困,其次數(shù)據(jù)在各個(gè) Kafka 中不便于查詢,不便于檢查數(shù)據(jù)質(zhì)量链蕊,也不便于實(shí)現(xiàn) schema 的動(dòng)態(tài)變化事甜。

3.2 實(shí)時(shí)數(shù)倉 ELT

隨著業(yè)務(wù)對(duì)數(shù)據(jù)的時(shí)效性要求越來越高時(shí),相較于 ETL 復(fù)雜繁雜的處理鏈路滔韵,業(yè)務(wù)需要更快速的將數(shù)據(jù)實(shí)時(shí)入倉逻谦,因此 ELT 變成了比較流行的處理方法。ELT 是英文 Extract-Load-Transform 的縮寫陪蜻,我們可將 ELT 理解為一個(gè)數(shù)據(jù)遷移集成的過程邦马。在這個(gè)過程中,我們可以對(duì)數(shù)據(jù)源關(guān)系型數(shù)據(jù)庫比如 MySQL宴卖、PostgresSQL 和非關(guān)系型數(shù)據(jù)庫比如 HBase滋将、Cassandra 等業(yè)務(wù)庫的 Binlog,消息隊(duì)列比如 Datahub症昏、Kafka 中的埋點(diǎn)采集日志等數(shù)據(jù)随闽,經(jīng)過阿里云 Flink 實(shí)時(shí)抽取,然后加載到 Hologres 中進(jìn)行相關(guān)的 OLAP 分析和在線服務(wù)肝谭。

在這個(gè)鏈路中掘宪,阿里云 Flink 負(fù)責(zé)數(shù)據(jù)的實(shí)時(shí)入倉以及數(shù)據(jù)的清洗關(guān)聯(lián),清洗后的數(shù)據(jù)實(shí)時(shí)寫入 Hologres攘烛,由 Hologres 直接存儲(chǔ)明細(xì)數(shù)據(jù)魏滚。在 Hologres 中可以簡(jiǎn)化分層,以明細(xì)層為主坟漱,按需搭配其他匯總層鼠次,通過 Hologres 強(qiáng)大的數(shù)據(jù)處理能力直接對(duì)接報(bào)表、應(yīng)用等上層查詢服務(wù)芋齿。上層的分析 SQL 無法固化腥寇,通常在 ADS 層以邏輯視圖(View)封裝 SQL 邏輯,上層應(yīng)用直接查詢封裝好的 View沟突,實(shí)現(xiàn)即席查詢。

12.jpg

實(shí)時(shí)數(shù)倉中采取 ELT 的方式進(jìn)行建設(shè)捕传,會(huì)給數(shù)據(jù)和業(yè)務(wù)帶來比較大的收益惠拭,詳細(xì)如下:

  • 靈活性:將原始的業(yè)務(wù)數(shù)據(jù)直接入倉,形成 ODS 層的數(shù)據(jù),在數(shù)倉中通過 View 可以靈活地對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換(Transformation)的處理职辅,View 可以隨時(shí)根據(jù)業(yè)務(wù)進(jìn)行調(diào)整棒呛。
  • 成本低:數(shù)據(jù)倉庫的架構(gòu)比較清晰,鏈路比較短域携,運(yùn)維成本比較低簇秒。
  • 指標(biāo)修正簡(jiǎn)單:上層都是 View 邏輯封裝,只需要更新底表的數(shù)據(jù)即可秀鞭,無需逐層修正數(shù)據(jù)趋观。

但是該方案也存在一些缺點(diǎn),當(dāng) View 的邏輯較為復(fù)雜锋边,數(shù)據(jù)量較多時(shí)皱坛,查詢性能較低。因此比較適合于數(shù)據(jù)來源于數(shù)據(jù)庫和埋點(diǎn)系統(tǒng)豆巨,對(duì) QPS 要求不高剩辟,對(duì)靈活性要求比較高,且計(jì)算資源較為充足的場(chǎng)景往扔。

3.3 實(shí)時(shí)數(shù)倉分層(Streaming Warehouse 方案)

按照傳統(tǒng)數(shù)倉的開發(fā)方法論贩猎,采用 ODS>DWD>DWS>ADS 開發(fā)的方法,通過阿里云 Flink 和 Hologres Binlog 的組合關(guān)系萍膛,支持層與層之間有狀態(tài)的全鏈路事件實(shí)時(shí)驅(qū)動(dòng)吭服。在該方案中,數(shù)據(jù)通過阿里云 Flink CDC 實(shí)時(shí)入倉至 Hologres卦羡,再通過阿里云 Flink 訂閱 Hologres Binlog噪馏,實(shí)現(xiàn)數(shù)據(jù)在不同層次之間的連續(xù)加工,最后寫入 Hologres 對(duì)接應(yīng)用查詢绿饵。

通過這個(gè)方案欠肾,Hologres 可以達(dá)到像 Kafka、Datahub 等消息隊(duì)列同等的能力拟赊,增加數(shù)據(jù)復(fù)用的能力刺桃,一個(gè) Table 的數(shù)據(jù)既可以提供給下游阿里云 Flink 任務(wù)消費(fèi),還可以對(duì)接上游 OLAP/在線服務(wù)查詢吸祟,不僅節(jié)省了成本瑟慈,還簡(jiǎn)化數(shù)倉架構(gòu),同時(shí)也讓數(shù)倉中的每一個(gè)層次都可以實(shí)時(shí)構(gòu)建屋匕、實(shí)時(shí)查詢葛碧,提升數(shù)據(jù)的流轉(zhuǎn)效率。

13.jpg

3.4 流批一體數(shù)倉

在實(shí)時(shí)數(shù)倉中过吻,流計(jì)算任務(wù)和批處理任務(wù)都是分兩條工作流進(jìn)行開發(fā)的进泼,也即是 Kappa 架構(gòu)模式蔗衡。在這套數(shù)倉架構(gòu)中,會(huì)存在人力成本過高乳绕,數(shù)據(jù)鏈路冗余绞惦,數(shù)據(jù)口徑不一致,開發(fā)效率低下的一些問題洋措。

為了解決這些問題济蝉,阿里云 Flink+Hologres 提供了流批一體的能力。在該場(chǎng)景中菠发,將輸入層統(tǒng)一變成 Hologres王滤,通過一套業(yè)務(wù)邏輯代碼達(dá)到流和批處理的能力,其中 Flink SQL 的 Stream 任務(wù)消費(fèi) Hologres Binlog 提供流式處理雷酪,F(xiàn)link SQL 的 Batch 任務(wù)讀取 Hologres 表的原始數(shù)據(jù)達(dá)到批處理能力淑仆,經(jīng)過 Flink 統(tǒng)一的計(jì)算處理之后,統(tǒng)一寫入存儲(chǔ)至 Hologres哥力。

阿里云 Flink 結(jié)合 Hologres 的流批一體技術(shù)蔗怠,統(tǒng)一了數(shù)據(jù)輸入層、實(shí)時(shí)離線計(jì)算層和數(shù)據(jù)分析存儲(chǔ)層吩跋,極大的提升了數(shù)據(jù)開發(fā)的效率寞射,保證了數(shù)據(jù)的質(zhì)量。

14.jpg

四锌钮、典型應(yīng)用場(chǎng)景

阿里云 Flink 與 Hologres 深度集成桥温,助力企業(yè)快速構(gòu)建一站式實(shí)時(shí)數(shù)倉:

  • 可通過阿里云 Flink 實(shí)時(shí)寫入 Hologres,高性能寫入與更新梁丘,數(shù)據(jù)寫入即可見侵浸,無延遲,滿足實(shí)時(shí)數(shù)倉高性能低延遲寫入需求氛谜;
  • 可通過阿里云 Flink 的全量讀取掏觉、Binlog 讀取、CDC 讀取值漫、全增量一體化等多種方式澳腹,讀取 Hologres 源表數(shù)據(jù),無需額外組件杨何,統(tǒng)一計(jì)算和存儲(chǔ)酱塔,加速數(shù)據(jù)流轉(zhuǎn)效率;
  • 可通過阿里云 Flink 讀取 Hologres 維表危虱,助力高性能維表關(guān)聯(lián)羊娃、數(shù)據(jù)打?qū)挼榷喾N應(yīng)用場(chǎng)景;
  • 阿里云 Flink 與 Hologres 元數(shù)據(jù)打通埃跷,通過 Hologres Catalog蕊玷,實(shí)現(xiàn)元數(shù)據(jù)自動(dòng)發(fā)現(xiàn)芦瘾,極大提升作業(yè)開發(fā)效率和正確性。
15.jpg

通過阿里云 Flink 與 Hologres 的實(shí)時(shí)數(shù)倉標(biāo)準(zhǔn)解決方案集畅,能夠支撐多種實(shí)時(shí)數(shù)倉應(yīng)用場(chǎng)景,如實(shí)時(shí)推薦缅糟、實(shí)時(shí)風(fēng)控等挺智,滿足企業(yè)的實(shí)時(shí)分析需求。下面我們將會(huì)介紹阿里云 Flink + Hologres 的典型應(yīng)用場(chǎng)景窗宦,助力業(yè)務(wù)更加高效的搭建實(shí)時(shí)數(shù)倉赦颇。

4.1 海量數(shù)據(jù)實(shí)時(shí)入倉

實(shí)時(shí)數(shù)倉搭建的第一步便是海量數(shù)據(jù)的實(shí)時(shí)入倉,基于阿里云 Flink CDC 可以簡(jiǎn)單高效地將海量數(shù)據(jù)同步到實(shí)時(shí)數(shù)倉中赴涵,并能將增量數(shù)據(jù)以及表結(jié)構(gòu)變更實(shí)時(shí)同步到數(shù)倉中媒怯。而整個(gè)流程只需在阿里云 Flink 上定義一條 CREATE DATABASE AS DATABASE 的 SQL 即可(詳細(xì)步驟可參考 實(shí)時(shí)入倉快速入門 )。經(jīng)測(cè)試髓窜,對(duì)于 MySQL 中的 TPC-DS 1T 數(shù)據(jù)集扇苞,使用阿里云 Flink 64 并發(fā),只需 5 小時(shí)便能完全同步到 Hologres寄纵,TPS 約 30 萬條/秒鳖敷。在增量 Binlog 同步階段,使用阿里云 Flink 單并發(fā)程拭,同步性能達(dá)到 10 萬條/秒定踱。

16.jpg

4.2 雙流 Join

數(shù)據(jù)實(shí)時(shí)入倉形成了 ODS 層的數(shù)據(jù)后橘忱,通常需要將事實(shí)數(shù)據(jù)與維度數(shù)據(jù)利用 Flink 多流 Join 的能力實(shí)時(shí)地打平成寬表懒闷,結(jié)合 Hologres 寬表極佳的多維分析性能,助力上層業(yè)務(wù)查詢提速塑顺。阿里云 Flink 支持以全增量一體化的模式讀取 Hologres 表恤浪,即先讀取全量數(shù)據(jù)再平滑切換到讀取 CDC 數(shù)據(jù)畅哑,整個(gè)過程保證數(shù)據(jù)的不重不丟。因此基于阿里云 Flink 可以非常方便地實(shí)時(shí)加工和打?qū)?Hologres 的 ODS 層數(shù)據(jù)资锰,完成 DWD 層的寬表模型構(gòu)建敢课。

17.jpg

4.3 寬表 Merge

數(shù)據(jù)倉庫中我們通常需要關(guān)心的就是建模,數(shù)據(jù)模型通常分為四種:寬表模型绷杜、星型模型直秆、雪花模型、星座模型(Hologres 均支持)鞭盟,在這里我們重點(diǎn)要提到的是寬表模型的建設(shè)圾结。寬表模型通常是指將業(yè)務(wù)主體相關(guān)的指標(biāo)、維表齿诉、屬性關(guān)聯(lián)在一起的模型表筝野,也可以泛指將多個(gè)事實(shí)表和多個(gè)維度表相關(guān)聯(lián)到一起形成的寬表晌姚。

寬表建設(shè)通常的做法就是通過阿里云 Flink 的雙流 Join 來實(shí)現(xiàn),包括 Regular Join歇竟,Interval Join挥唠,Temporal Join。對(duì)于主鍵關(guān)聯(lián)的場(chǎng)景(即 Join 條件分別是兩條流的主鍵)焕议,我們可以將 Join 的工作下沉到 Hologres 去做宝磨,通過 Hologres 的局部更新功能來實(shí)現(xiàn)寬表 Merge,從而省去了 Flink Join 的狀態(tài)維護(hù)成本盅安。比如廣告場(chǎng)景中唤锉,一個(gè) Flink 任務(wù)處理廣告曝光數(shù)據(jù)流,統(tǒng)計(jì)每個(gè)產(chǎn)品的曝光量别瞭,以產(chǎn)品 ID 作為主鍵窿祥,更新到產(chǎn)品指標(biāo)寬表中。同時(shí)蝙寨,另一個(gè) Flink 任務(wù)處理廣告點(diǎn)擊數(shù)據(jù)流晒衩,統(tǒng)計(jì)每個(gè)產(chǎn)品的點(diǎn)擊量,也以產(chǎn)品 ID 作為主鍵墙歪,更新到產(chǎn)品指標(biāo)寬表中浸遗。整個(gè)過程不需要進(jìn)行雙流 Join,最終 Hologres 會(huì)自己完成整行數(shù)據(jù)的組裝箱亿□诵浚基于得到的產(chǎn)品指標(biāo)寬表,用戶可以方便地在 Hologres 進(jìn)行廣告營銷的分析届惋,例如計(jì)算產(chǎn)品的 CTR=點(diǎn)擊數(shù)/曝光數(shù)髓帽。下圖和代碼示例展示了如何從雙流 Join 改為寬表 Merge。

18.jpg
CREATE TABLE ods_ad_click (
  product_id INT,
  click_id BIGINT,
  click_time TIMESTAMP
) WITH ('connector'='datahub', 'topic'='..');

CREATE TABLE ods_ad_impressions (
  product_id INT,
  imp_id BIGINT,
  imp_time TIMESTAMP
) WITH ('connector'='datahub', 'topic'='..');

CREATE TABLE dws_ad_product (
  product_id INT,
  click_cnt BIGINT,
  imp_cnt BIGINT,
  PRIMARY KEY (product_id) NOT ENFORCED
) WITH ('connector'='hologres','insertOrUpdate'='true');

INSERT INTO dws_ad_product (product_id, click_cnt)
SELECT product_id, COUNT(click_id) as click_cnt
FROM ods_ad_click 
GROUP BY product_id;

INSERT INTO dws_ad_product (product_id, imp_cnt)
SELECT product_id, COUNT(imp_id) AS imp_cnt 
FROM ods_ad_impressions
GROUP BY product_id;

使用 Hologres 寬表的 Merge 能力脑豹,不僅可以提升流作業(yè)的開發(fā)效率郑藏,還能減少流作業(yè)所需要的資源消耗,也能夠更容易的維護(hù)各個(gè)流作業(yè)瘩欺,讓作業(yè)之間不會(huì)相互影響必盖。但需要注意的是,寬表 Merge 僅限于使用在主鍵關(guān)聯(lián)的場(chǎng)景俱饿,并不適用于數(shù)倉中常見的星型模型和雪花模型歌粥,所以在大部分場(chǎng)景仍需使用 Flink 的雙流 Join 來完成寬表建模。

4.4 實(shí)時(shí)維表 Lookup

在實(shí)時(shí)數(shù)倉中拍埠,在構(gòu)建 DWD 層的數(shù)據(jù)過程中失驶,一般都是通過阿里云 Flink 來讀取消息隊(duì)列比如 Datahub 上的 ODS 數(shù)據(jù),同時(shí)需要關(guān)聯(lián)維表來形成 DWD 層枣购。在阿里云 Flink 的計(jì)算過程中嬉探,需要高效的讀取維表的能力擦耀,Hologres 可以通過高 QPS 低延遲的點(diǎn)查能力來滿足實(shí)現(xiàn)這類場(chǎng)景需求。比如我們需要通過 ODS 的數(shù)據(jù)去 Join 維表形成 DWD 層的時(shí)候涩堤,就可以利用 Hologres 提供的點(diǎn)查能力眷蜓,在該模式中,通常使用行存表的主鍵點(diǎn)查模式提高維表的 Lookup 效率胎围。具體的實(shí)現(xiàn)類似如下:

19.jpg

五账磺、典型用戶案例

依托阿里云 Flink+Hologres 解決方案,企業(yè)可以快速構(gòu)建一站式實(shí)時(shí)數(shù)倉痊远,助力實(shí)時(shí)推薦、實(shí)時(shí)風(fēng)控氏捞、實(shí)時(shí)大屏等多種業(yè)務(wù)場(chǎng)景碧聪,實(shí)現(xiàn)對(duì)數(shù)據(jù)的快速處理,極速探索查詢液茎。目前該方案已在阿里巴巴內(nèi)部逞姿、眾多云上企業(yè)生產(chǎn)落地,成為實(shí)時(shí)數(shù)倉的最佳解決方案之一捆等。

以某知名全球 TOP20 游戲公司業(yè)務(wù)為例滞造,其通過阿里云 Flink+Hologres 實(shí)時(shí)數(shù)倉方案,替換開源 Flink+Presto+HBase+ClickHouse 架構(gòu)栋烤,簡(jiǎn)化數(shù)據(jù)處理鏈路谒养、統(tǒng)一數(shù)倉架構(gòu)、統(tǒng)一存儲(chǔ)明郭、查詢性能提升 100%甚至更多买窟,完美支撐數(shù)據(jù)分析、廣告投放薯定、實(shí)時(shí)決策等多個(gè)場(chǎng)景始绍,助力業(yè)務(wù)快速增長(zhǎng)。

5.1 業(yè)務(wù)困難:ETL 鏈路復(fù)雜话侄、OLAP 查詢慢

客戶原數(shù)倉架構(gòu)使用全套開源組件亏推,架構(gòu)圖如下。其中開源 Flink 做 ETL 處理年堆,處理后寫入 ClickHouse吞杭、StarRocks 等 OLAP 引擎。

20.jpg

這套架構(gòu)遇見的主要痛點(diǎn)有:

1变丧、ETL 鏈路復(fù)雜

  • 為了解決數(shù)據(jù)實(shí)時(shí) ETL篇亭,客戶通過 Flink CDC + Hudi 做流批一體。但由于上游業(yè)務(wù)數(shù)據(jù)經(jīng)常變更表結(jié)構(gòu)锄贷,而開源 Flink CDC 缺乏 Schema Evolution 的能力译蒂,每次表結(jié)構(gòu)變更都需要任務(wù)重新啟動(dòng)曼月,操作非常麻煩,浪費(fèi)大量開發(fā)時(shí)間柔昼。
  • Hudi 的查詢性能不滿足業(yè)務(wù)需求哑芹,還需要再加一個(gè) Presto 做加速查詢,造成鏈路冗余捕透。

2聪姿、OLAP 架構(gòu)冗余,查詢慢

客戶主要是靠買量發(fā)行作為游戲推廣的重要手段乙嘀,為了解決廣告歸因的實(shí)時(shí)決策場(chǎng)景對(duì)查詢加速的需要末购,于是部署了開源 Presto、ClickHouse虎谢、HBase 等多套集群搭建混合 OLAP 平臺(tái)盟榴。帶來的問題有:

  • 平臺(tái)需要維護(hù)多套集群,導(dǎo)致運(yùn)維變得非常復(fù)雜婴噩。
  • 開發(fā)需要在各種 SQL 中切換擎场,為開發(fā)團(tuán)隊(duì)帶來了許多困擾。
  • 由于 ClickHouse 缺乏主鍵几莽,在歸因分析時(shí)需要使用 Last Click 模型迅办,帶來了大量的額外工作。
  • 同時(shí) OLAP 引擎的查詢性能沒有辦法很好的滿足業(yè)務(wù)需求章蚣,沒辦法根據(jù)數(shù)據(jù)實(shí)時(shí)決策站欺。
  • 數(shù)據(jù)需要在多個(gè) OLAP 系統(tǒng)中存儲(chǔ),造成存儲(chǔ)冗余纤垂,導(dǎo)致成本壓力劇增镊绪。

基于上面的痛點(diǎn),客戶開始重新做技術(shù)選型洒忧,并使用阿里云 Flink+Hologres 來替換現(xiàn)有的開源數(shù)倉架構(gòu)蝴韭。

5.2 架構(gòu)升級(jí):阿里云 Flink+Hologres 統(tǒng)一數(shù)據(jù)存儲(chǔ)與服務(wù)

通過阿里云 Flink+Hologres 替換后的數(shù)據(jù)鏈路如下:

  • 數(shù)據(jù)源數(shù)據(jù)通過 Flink CDC 能力寫入 Kafka 做前置清洗,清洗后通過阿里云 Flink 進(jìn)行 ETL 處理熙侍。
  • 阿里云 Flink 經(jīng)過 ETL 后的數(shù)據(jù)實(shí)時(shí)寫入 Hologres榄鉴,通過 Hologres 替換了 Kafka 作為實(shí)時(shí)數(shù)倉的中間數(shù)據(jù)層,統(tǒng)一了流批存儲(chǔ)蛉抓。
  • 在 Hologres 中根據(jù) ODS > DWD > DWS 層匯總加工庆尘。在 ODS 層,阿里云 Flink 訂閱 Hologres Binlog巷送,計(jì)算后寫入 Hologres DWD 層驶忌,DWD 層在 Hologres 中匯總成 DWS 層,最后 DWS 對(duì)接上層報(bào)表和數(shù)據(jù)服務(wù)等業(yè)務(wù)。
  • 為了存儲(chǔ)的統(tǒng)一付魔,也將原離線 Hive 數(shù)據(jù)替換成阿里云 MaxCompute聊品,以 MaxCompute 為離線主要鏈路。因 Hologres 與 MaxCompute 的高效互通能力几苍,Hologres 通過外表離線加速查詢 MaxCompute翻屈,并將歷史數(shù)據(jù)定期歸檔至 MaxCompute。
21.jpg

5.3 業(yè)務(wù)收益:架構(gòu)統(tǒng)一妻坝,性能提升 100%

通過架構(gòu)升級(jí)后伸眶,客戶的顯著業(yè)務(wù)收益如下:

  • 依托阿里云 Flink+Hologres,數(shù)據(jù)可以實(shí)時(shí)寫入 Hologres刽宪,寫入即可見厘贼,并且 Hologres 有主鍵,能夠支撐高性能的寫入更新能力圣拄,百萬級(jí)更新毫秒級(jí)延遲嘴秸。
  • 阿里云 Flink 提供 Schema Evolution 的能力,自動(dòng)感知上游表結(jié)構(gòu)變更并同步 Hologres售担,改造后的實(shí)時(shí) ETL 鏈路通過訂閱 Hologres Binlog 日志來完成,降低鏈路維護(hù)成本署辉。
  • 通過 Hologres 統(tǒng)一了數(shù)據(jù)查詢出口族铆,經(jīng)過客戶實(shí)測(cè),Hologres 可以達(dá)到毫秒級(jí)延遲哭尝,相比開源 ClickHouse 性能提升 100%甚至更多哥攘,JOIN 查詢性能快 10 倍。
  • 升級(jí)后數(shù)倉架構(gòu)變得更加靈活簡(jiǎn)潔材鹦,統(tǒng)一了存儲(chǔ)逝淹,只需要一套系統(tǒng)就能滿足業(yè)務(wù)需求,降低運(yùn)維壓力和運(yùn)維成本桶唐。

了解更多:

[1] 阿里云實(shí)時(shí)計(jì)算 Flink: https://www.aliyun.com/product/bigdata/sc

[2] 阿里云實(shí)時(shí)數(shù)倉 Hologres: https://www.aliyun.com/product/bigdata/hologram

[3] Flink X Hologres 聯(lián)合解決方案: https://developer.aliyun.com/article/786306

[4] 數(shù)據(jù)實(shí)時(shí)入倉入湖快速入門: https://help.aliyun.com/document_detail/374270.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栅葡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子尤泽,更是在濱河造成了極大的恐慌欣簇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坯约,死亡現(xiàn)場(chǎng)離奇詭異熊咽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闹丐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門横殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卿拴,你說我怎么就攤上這事衫仑±嬗耄” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵惑畴,是天一觀的道長(zhǎng)蛋欣。 經(jīng)常有香客問我,道長(zhǎng)如贷,這世上最難降的妖魔是什么陷虎? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮杠袱,結(jié)果婚禮上尚猿,老公的妹妹穿的比我還像新娘。我一直安慰自己楣富,他們只是感情好凿掂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纹蝴,像睡著了一般庄萎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塘安,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天糠涛,我揣著相機(jī)與錄音,去河邊找鬼兼犯。 笑死忍捡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的切黔。 我是一名探鬼主播砸脊,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纬霞!你這毒婦竟也來了凌埂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤诗芜,失蹤者是張志新(化名)和其女友劉穎侨舆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绢陌,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挨下,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脐湾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臭笆。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愁铺,到底是詐尸還是另有隱情鹰霍,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布茵乱,位于F島的核電站茂洒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓶竭。R本人自食惡果不足惜督勺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斤贰。 院中可真熱鬧智哀,春花似錦、人聲如沸荧恍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽送巡。三九已至摹菠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骗爆,已是汗流浹背次氨。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淮腾,地道東北人糟需。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓屉佳,卻偏偏與公主長(zhǎng)得像谷朝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子武花,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容