实时计算的最佳实践:基于表格存储和Blink的大数据实时计算
表格存儲: 數(shù)據(jù)存儲和數(shù)據(jù)消費All in one
表格存儲(Table Store)是阿里云自研的NoSQL多模型數(shù)據(jù)庫,提供PB級結(jié)構(gòu)化數(shù)據(jù)存儲、千萬TPS以及毫秒級延遲的服務(wù)能力。在實時計算場景里,表格存儲強大的寫入能力和多模型的存儲形態(tài),使其不僅可以作為計算結(jié)果表,同時也完全具備作為實時計算源表的能力。
通道服務(wù)是表格存儲提供的全增量一體化數(shù)據(jù)消費功能,為用戶提供了增量、全量和增量加全它量三種類型的分布式數(shù)據(jù)實時消費通道。實時計算場景下,通過為數(shù)據(jù)表建立數(shù)據(jù)通道,用戶可以以流式計算的方式對表中歷史存量和新增數(shù)據(jù)做數(shù)據(jù)消費。
利用表格存儲存儲引擎強大的寫入能力和通道服務(wù)完備的流式消費能力,用戶可以輕松做到數(shù)據(jù)存儲和實時處理all in one!
Blink: 流批一體的數(shù)據(jù)處理引擎
Blink是阿里云在Apache Flink基礎(chǔ)上深度改進的實時計算平臺,同F(xiàn)link一致Blink旨在將流處理和批處理統(tǒng)一,但Blink相對于社區(qū)版Flink,在穩(wěn)定性上有很多優(yōu)化,在某些場景特別是在大規(guī)模場景會比Flink更加穩(wěn)定。Blink的另一個重大改進是實現(xiàn)了全新的 Flink SQL 技術(shù)棧,在功能上,Blink支持現(xiàn)在標準 SQL 幾乎所有的語法和語義,在性能上,Blink也比社區(qū)Flink更加強大,特別是在批 SQL 的性能方面,當前 Blink 版本是社區(qū)版本性能的 10 倍以上,跟 Spark 相比,在 TPCDS 這樣的場景 Blink 的性能也能達到 3 倍以上[1]。
從用戶技術(shù)架構(gòu)角度分析,結(jié)合表格存儲和Blink可以做到:1. 存儲側(cè),使用表格存儲,則可以做到寫一份數(shù)據(jù),業(yè)務(wù)立即可見,同時原生支持后續(xù)流式計算消費,無需業(yè)務(wù)雙寫;2. 計算側(cè),使用Blink流批一體處理引擎,可以統(tǒng)一流批計算架構(gòu),開發(fā)一套代碼支持流批兩個需求場景。
本文就將為大家介紹實時計算的最佳架構(gòu)實踐:基于表格存儲和Blink的實時計算架構(gòu),并帶快速體驗基于表格存儲和Blink的數(shù)據(jù)分析job。
更優(yōu)的實時計算架構(gòu):基于表格存儲和Blink的實時計算架構(gòu)
我們以一個做態(tài)勢感知的大數(shù)據(jù)分析系統(tǒng)為例,為大家闡述表格存儲和Blink實時計算的架構(gòu)優(yōu)勢。假如客戶是大型餐飲企業(yè)CEO,連鎖店遍布全國各地,CEO非常關(guān)心自己有沒有服務(wù)好全國各地的吃貨,比如臺灣顧客和四川顧客在口味評價上會不會有不同?自己的菜品是否已經(jīng)熱度下降了?為了解決這些問題,CEO需要一個大數(shù)據(jù)分析系統(tǒng),一方面可以實時監(jiān)控各地菜品銷售額信息,另一方面也希望能有定期的歷史數(shù)據(jù)分析,能給出自己關(guān)心的客戶變化趨勢。
用技術(shù)角度來解讀,就是客戶需要:1. 客戶數(shù)據(jù)的實時處理能力,持續(xù)聚合新增的訂單信息,能大屏展示和以日報形式展示;2.對歷史數(shù)據(jù)的離線分析能力,分析離線數(shù)據(jù)做態(tài)勢感知、決策推薦。
經(jīng)典的解決方案基本上基于Lambda大數(shù)據(jù)架構(gòu)[2],如下圖1,用戶數(shù)據(jù)既需要進入消息隊列系統(tǒng)(New Data Stream如Kafka)作為實時計算任務(wù)的輸入源,又需要進入數(shù)據(jù)庫系統(tǒng)(All Data如HBASE)來支持批處理系統(tǒng),最終兩者的結(jié)果寫入數(shù)據(jù)庫系統(tǒng)(MERGED VIEW),展示給用戶。
圖-1 Lambda大數(shù)據(jù)架構(gòu)
這個系統(tǒng)的缺點就是太龐大,需要維護多個分布式子系統(tǒng),數(shù)據(jù)既要寫入消息隊列又要進入數(shù)據(jù)庫,要處理兩者的雙寫一致性或者維護兩者的同步方案,計算方面要維護兩套計算引擎、開發(fā)兩套數(shù)據(jù)分析代碼,技術(shù)難度和人力成本很高。
利用表格存儲同時具備強大的寫入能力、實時數(shù)據(jù)消費能力,Blink + SQL的高性能和流批融合,經(jīng)典Lambda架構(gòu)可以精簡為下圖2,基于表格存儲和Blink的實時計算架構(gòu):
圖-2 基于表格存儲和Blink的實時計算架構(gòu)
該架構(gòu)引入的依賴系統(tǒng)大大減少,人力和資源成本都明顯下降,它的基本流程只包括:
- 用戶將在線訂單數(shù)據(jù)或者系統(tǒng)抓取數(shù)據(jù)寫入表格存儲源表,源表創(chuàng)建通道服務(wù)數(shù)據(jù)通道;
- 實時計算任務(wù)(黃線),使用Blink表格存儲數(shù)據(jù)源DDL定義SQL源表和結(jié)果表,開發(fā)和調(diào)試實時訂單日聚合SQL job;
- 批處理計算任務(wù)(綠線),定義批處理源表結(jié)果表[1],開發(fā)歷史訂單分析SQL job;
- 前端服務(wù)通過讀取表格存儲結(jié)果表展示日報和歷史分析結(jié)果;
快速開始
介紹完架構(gòu),我們就來迅速開發(fā)一個基于TableStore和Blink的日報實時計算SQL,以流計算的方式統(tǒng)計每日各個城市的實時用餐單數(shù)和餐費銷售額。
在Blink開發(fā)界面,創(chuàng)建消費訂單源表、日統(tǒng)計結(jié)果表、每分鐘聚合視圖和寫入SQL:
---消費訂單源表 CREATE TABLE source_order (id VARCHAR,-- 訂單IDrestaurant_id VARCHAR, --餐廳IDcustomer_id VARCHAR,--買家IDcity VARCHAR,--用餐城市price VARCHAR,--餐費金額pay_day VARCHAR, --訂單時間 yyyy-MM-ddprimary(id) ) WITH (type='ots',endPoint ='http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com',instanceName = "blink-demo",tableName ='consume_source_table',tunnelName = 'blink-demo-stream', );---日統(tǒng)計結(jié)果表 CREATE TABLE result_summary_day (summary_date VARCHAR,--統(tǒng)計日期total_price BIGINT,--訂單總額total_order BIGINT,--訂單數(shù)primary key (summary_date) ) WITH (type= 'ots',endPoint ='http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com',instanceName = "blink-demo",tableName ='result_summary_day',column='summary_date,total_price,total_order' );INSERT into result_summary_day select cast(pay_day as bigint) as summary_date, --時間分區(qū) count(id) as total_order, --客戶端的IP sum(price) as total_order, --客戶端去重 from source_ods_fact_log_track_action group by pay_day;總結(jié)
使用表格存儲和Blink的大數(shù)據(jù)分析架構(gòu),相對于傳統(tǒng)開源解決方案,有很多優(yōu)勢:
1、強大的存儲和計算引擎,表格存儲除了海量存儲、極高的讀寫性能外,還提供了多元索引、二級索引、通道服務(wù)等多種數(shù)據(jù)分析功能,相對HBASE等開源方案優(yōu)勢明顯,Blink關(guān)鍵性能指標為開源Flink的3到4倍,數(shù)據(jù)計算延遲優(yōu)化到秒級甚至亞秒級;
2、全托管服務(wù),表格存儲和Blink都全托管的serverless服務(wù),即開即用;
3、低廉的人力和資源成本,依賴服務(wù)全serverless免運維,按量付費,避免波峰波谷影響;
篇幅原因,本文主要介紹了表格存儲和Blink結(jié)合的大數(shù)據(jù)架構(gòu)優(yōu)勢,以及簡單SQL演示,后續(xù)更復(fù)雜、貼近場景業(yè)務(wù)的文章也會陸續(xù)推出,敬請期待!
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的实时计算的最佳实践:基于表格存储和Blink的大数据实时计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019阿里云开年Hi购季云通信分会场全
- 下一篇: 2019阿里云开年Hi购季满返活动火热报