《4-2 Hologres:阿里建设高吞吐、多负载的实时数仓平台.pdf》由会员分享,可在线阅读,更多相关《4-2 Hologres:阿里建设高吞吐、多负载的实时数仓平台.pdf(42页珍藏版)》请在三个皮匠报告上搜索。
1、HOLOGRES:阿里建设高吞吐、多负载的实时数仓平台刘一鸣 阿里云 MaxCompute&Hologres产品组|01实时数仓需求解析实时数仓需求解析02Hologres技术原理技术原理03推荐架构场景推荐架构场景04典型案例实践参考典型案例实践参考目录目录CONTENT|实时数仓需求解析01|业务在线化、运营精细化驱动数据实时化|领导驾驶舱实时大屏洞察业务变化实时精细化运营数据分析民主化实时数据中台实时用户画像个性化推荐风控ToB:支撑数据决策ToC:提效在线转化|实时写入实时聚合交互式、探索式分析持续聚合批量聚合在线服务维表Lookup批流多路、混合负载的实时数仓场景明细数据聚合数据维度
2、数据大数据实时数仓体系的“纷繁芜杂”|KafkaFlinkSubscriptionArchivingRealtime IngestionRealtime IngestionDim Table JoinHiveClickHouseDruidHBaseCassandraDrillPrestoRedisMysqlAPIApplicationsReportsDashboardsResultCachingBatch Processing批处理Offline Acceleration 离线加速Federated Analytics 联邦计算Point Lookups 点查询Realtime Analyti
3、cs实时计算结果缓存MaxCompute架构复杂、数据同步难、资源消耗大、数据孤岛、人才培养难、开发成本高、不敏捷实时数仓核心需求:时效性|实时(端到端延时问题)运营类,分析类计算后置,分析驱动实时写入,写入即可分析海量数据,灵活分析,自助分析准时(决策时取数问题)风控类,大屏类计算前置,事件驱动实时加工,实时写入实时数仓核心需求:数据质量|多久发现质量问题多久修正质量问题数据状态(明细&汇总)可检查简化数据重刷,数据可更新(批量、单行、单字段)减少属于冗余和不一致减少链路,减少上下游依赖实时数仓核心需求:成本优化|开发成本(上线新业务)运维成本(集群资源)人力成本(学习&招聘成本)业务与技术
4、解耦,数据资产可复用,业务自助开发简化链路,减少依赖,减少数据传递更少的组件,更少的运维工作托管的服务,简化运维弹性伸缩,应对洪峰开发接口标准简单,降低学习成本,SQL preferred兼容主流BI什么是好的实时数仓平台|实时写入,高吞吐 实时更新,灵活 写入即可用,查询不阻塞 交互式查询,亚秒级 标准SQL接口,Table模型 分布式,可扩展 支持海量数据分析OLAP 企业级数据管理首先是数仓面向实时场景优化一站式实时数仓 端到端实时加工 支持在线业务(负载隔离、读写隔离,高可用,分析服务一体)实时离线一体1.02.03.0Big Data is Dead,Big Data Long Li
5、ve|离散文件层级结构网络结构关系型数据库成长于80年代NoSQL&NewSQL2010+明天ServingAnalyticsTransactionHybrid Transaction/AnalyticsProcessing(HTAP)强事务机制保证ACID适合模型简单,简单分析场景,以TP模型解决AP的问题Hybrid Serving/AnalyticsProcessing(HSAP)最终一致性(减少分布式锁)以数仓模型(抽象、复用、标准)解决数据服务的问题随机读写、支持事务ACID、锁、面向DBA高并发、查询简单、快速,数据可更新,面向在线应用(toC)大规模数据扫描、过滤、汇总,语义层,
6、分布式,列式存储,数据更新弱,面向分析师|一站式实时数仓理念HSAP:分析、服务一体化数据应用多维分析(Analytics)数据看版(Serving&Analytics)在线应用(Serving)实时数仓 Hologres离线数据:批量导入(Batch)实时数据:实时更新(Streaming)统一数据存储统一数据服务HSAP:HybridServing&AnalyticalProcessingHologres技术原理02|阿里双11实时业务一体化数仓实践|数据存储用户/商品/交易数据数据同步服务报表系统数据定时归档类目数据批量更新类目维表Lookup高QPS,点查可视化大屏ECS行为数据离在线
7、联邦查询/T+1数据修正聚合结果实时更新,高吞吐在线服务MaxComputeFlinkHologres灵活交互式分析OLAP高性能数据服务实时写入,加工高RPSHologres典型能力:高吞吐、多负载|湖仓数据联邦分析 对MaxCompute、DLF数据湖中的表进行秒级交互式查询,无需数据搬迁 百万行每秒极速数据同步 依托PG生态,兼容各主流BI工具线上服务(Serving)超高QPS KV SQL点查 行存 线上服务、Flink维表关联 Proxima向量检索 行列共存,高QPS非主键点查能力实时数仓OLAP分析 高性能实时写入与更新,写入即可查 列存,AliORC,多种索引(聚簇、位图、字
8、典)分布式,并行化 主键更新,局部更新 高性能查询:向量化、轻量协程一站式实时数仓,兼容PostgreSQL生态,可多场景联用分析服务一体化(Hybrid Serving/Analytics Processing,HSAP)Hologres:技术特点|云原生统一存储存储计算分离架构极致性能流批统一的存储C+Native执行引擎+优化器行列共存,OLAP分析用列存,KV点查用行存,一张表可以既是列存,也是行存,数据强一致高效数据分片(Sharding)、分段(Segment)、压缩(Encoding)、索引(BitmapClustering)高吞吐数据写入更新,写入即可见向量化、全异步等执行引擎
9、优化轻量级用户态协程调度,同时支持多种查询负载充分利用计算资源计算存储资源各自弹性扩展,按需使用低成本、高可用、高可靠基于Pangu分布式存储,与MaxCompute底层打通,透明加速,实时离线一体磁盘:NVMe SSD网络:高带宽、低延迟CPU:多核化|ShardShardCacheHOS SchedulerWorker NodeShardShardCacheHOS SchedulerWorker NodeShardShardCacheHOS SchedulerWorker NodeParser&OptimizerCoordinatorFrontendShardShardShardMCMCS
10、hardMCPangu File SystemOSSOSSHiveHiveData LakeShardShardCacheHOS SchedulerWorker NodeMeta ServiceHolo MasterFrontendHologres架构StorageFrontend:认证、解析、优化Worker Node:计算资源HOS:轻量级调度框架Shard:数据分片Cache:分层缓存Holo Master:容器资源管理Meta Service:元数据管理计算存储分离Compute|Shared StorageShared NothingCompute/Storage Disaggreg
11、ationl存储使用Pangu 2.0,计算使用K8S及阿里飞天集群l全异步的存储和计算引擎,充分利用CPU计算能力l灵活扩容,计算存储独立扩展Oracle RACGreenplumHologres云原生存储计算分离Table和Index被分区为细粒度单位Tablet,读写请求被分解为细粒度任务,并行由多个Tablet服务基于多版本并发控制的无锁化设计,一个Tablet一个Writer,多个Reader,弱一致化需求,原子写和Read your write,写入不阻塞读取Tablet采用LSM-like结构,最大化写入吞吐量,以及最小化数据可见延迟先写WAL,再写内存,再写文件Flush磁盘时
12、,转为行存或者列存|Shard:改进的LSM结构,最大化吞吐行存、列存-行列共存|NameDateClass张三1/1美术班李四1/3书法班王五1/2美术班张三1/3书法班王五1/1游泳班王五1/2书法班张三1/5游泳班Name张三李四王五张三王五王五张三Date1/11/31/21/31/11/21/5Class美术班书法班美术班书法班游泳班书法班游泳班行1行N列1列N主键主键ID1ID2ID3ID4ID5ID6ID7RowData张三,1/1,美术班李四,1/3,书法班王五,1/2,美术班张三,1/3,书法班王五,1/1,游泳班王五,1/2,书法班张三,1/5,游泳班Name张三李四王五张
13、三王五王五张三Date1/11/31/21/31/11/21/5Class美术班书法班美术班书法班游泳班书法班游泳班列1列N面向行优化的存储列行列共存融合行存和列存的优势场景内置读写一致性保证查询优化器自动选择最佳执行计划针对非主键点查优化(列存过滤-行存Seek)查询友好,索引丰富,Join友好OLAP场景默认列存储写入友好,主键更新、局部更新快高QPS主键点查,短路径执行优化典型Query执行过程|普通SQL FE(FrontEnd)完成parsing+元数据/锁检查+基本优化 ORCA optimizer生成分布式plan(CBO)HQE(Hologres QE)/PQE(Postgre
14、s QE)执行 HQE、SE全异步简单DML/query(点查、点写)通过Fixed FE和Fixed QE实现超高性能,无锁 实测:写入最高数千万 RPS,点查约1亿次RPS 客户端自适应攒批,低延迟FE parsingORCA optimizerFixed FEHQEPQEFixed QESESQL简单dml/query普通SQL向量引擎PG引擎Short-Cut路径共享存储多实例,资源隔离,负载隔离,高可用,按需扩展|Shard1Shard2Shard3Shard4Pangu File SystemShard1Shard2Worker NodeShard3Shard4Worker Nod
15、eFrontend读写主实例加工负载写入负载Shard1Shard2Worker NodeShard3Shard4Worker NodeFrontend只读从实例报表服务灵活分析Worker NodeShard1Shard2Shard3Shard4Frontend只读从实例在线点查l既支持同一实例内部的资源组隔离(线程级别隔离),也支持共享存储多实例(物理级别隔离)高可用模式l多实例同Region部署共享存储,实时高可用,多Region部署数据自动复制,秒级灾备l计算资源物理隔离,实例之间故障隔离,主实例最多4个子实例,支持系统高可用部署弹性计算层共享存储层Hologres Binlog+Fl
16、ink=有状态的全链路事件实时驱动开发|HologresBinlog类似于传统数据库的Binlog,用来记录单表数据修改的日志,记录INSERT、DELETE、BEFOREUPDATE、AFTERUPDATE四种事件类型,事件Shard级有序,全局不保序数仓层次间数据实时加工(ODS-DWD-DWS-ADS)多实例间数据同步(SharedInstance-ApplicationInstance)数据行列转换(Row-Column)数据变化监测Holo BinlogHolo BinlogHolo BinlogODSDWDDWSADSADS业务数据库RDS实时数据集成RDSBinlogFlinkF
17、linkFlink实时风控实时大屏替代Flink+Kafka+OLAP架构:Kafka数据不易查,不易更新,不易修正JSON数据列式存储优化:平衡灵活性(Schemaless)与性能(列存)|半结构化JSON数据消息中间件 支持JSON、JSONB数据类型 支持构造、访问、更新等多种操作符,如,?,-支持JDBC、Flink等方式写入协议层查询层存储层 JSON数据列式存储优化,存储压缩效率接近原生列存 自动索引能力,支持Bitmap、字典编码 稀疏字段元数据压缩 倒排索引(GIN),加速过滤 表达式识别下推,精准访问列存子节点 优化访问operator,减少索引recheck开销JSONB数
18、据列式存储,列式访问实时物化视图Materialized Viewdws_daily_pv_uvcreate MATERIALIZED VIEW dws_daily_pv_uv as select count(uid)asts:date as day,pv,uniq(uid)as uv fromdwd_clicks group by ts:date;Tabledwd_clicksAppQuery实时物化视图同步从源表(Base)构建物化视图表物化视图和源表强一致只支持聚合(agg)操作源表只支持INSERT操作(Append Only)自动Query rewrite,实现透明SQL加速流式物化
19、视图(开发中)支持ETL等复杂操作支持多表Join支持Update/Delete|Base表物化视图实时刷新QueryRewrite企业级安全能力|数据加密基于KMS托管秘钥,支持加密解密加速MaxCompute BYOK加密外表数据脱敏,对接数据保护伞访问控制IP白名单SingleTunnel,支持定向VPC访问对接ActionTrial,行为审计容灾备份同城跨机房容灾异地跨Region灾备多版本备份推荐架构参考03|云原生实时数仓解决方案:Flink+Hologres日志数据数据库数据交互式,探索式分析毫秒级响应,超高QPS明细数据DWD列存轻度汇总数据DWS列存Hologres清洗关联转
20、换轻度汇总高度汇总DWD明细层预加工DWS汇聚层预加工FlinkFlink维度数据DIM行存高度汇总数据ADS行存OLAP、报表取数服务点查、监控、在线类服务KafkaDataHubDatahub汇聚层后加工|实时数仓解决方案(即席查询):Flink+Hologres日志数据数据库数据交互式,探索式分析明细数据DWD列存Hologres清洗关联转换DWD明细层预加工Flink维度数据DIM行存OLAP、报表取数服务KafkaDataHub|实时数仓场景1:即席查询业务系统结构化数据OracleMySQL埋点日志消息队列业务系统半结构化数据LogStash/OGG/DTS/SDK采集ODS用户交
21、易记录表用户登录日志表实时数据缓存平台DataHub/Kafka可视化大屏Web应用API外部应用BI报表系统实时数据接口服务数据服务+API网关实时数仓 HologresFlinkDIM订单维表(实时)用户维度离线任务加工结果表MaxCompute导入DWD用户交易记录表用户访问日志表ADS商品分类销售额表用户增长报表DWS商品订单表日访问统计表View封装计算逻辑,实时查询ODS用户交易记录表用户访问日志表View封装计算逻辑,实时查询View封装计算逻辑,实时查询1、增量数据进DataHub/Kafka;明细全量数据进Hologres2、Flink加工增量数据实时更新明细数据3、CDM/
22、ADS层表以view封装SQL逻辑4、前端实时请求,即席查询数据集成实时数仓解决方案(分钟级准实时):Flink+Hologres日志数据数据库数据交互式,探索式分析毫秒级响应,超高QPS明细数据DWD列存轻度汇总数据DWS列存Hologres清洗关联转换DWD明细层预加工Flink维度数据DIM行存高度汇总数据ADS行存OLAP、报表取数服务点查、监控、在线类服务KafkaDataHub汇聚层后加工|实时数仓场景2:分钟级准实时业务系统结构化数据OracleMySQL埋点日志消息队列业务系统半结构化数据LogStash/OGG/DTS/SDK采集ODS用户交易记录表用户登录日志表实时数据缓存
23、平台DataHub/Kafka可视化大屏Web应用API外部应用BI报表系统实时数据接口服务数据服务+API网关实时数仓 HologresFlinkDIM订单维表(实时)用户维度离线任务加工结果表MaxCompute导入DWD用户交易记录表用户访问日志表ADS商品分类销售额表DWS商品订单表日访问统计表ODS用户交易记录表用户访问日志表1、增量数据进DataHub/Kakfa;明细全量数据进Hologres2、Flink加工增量数据实时更新明细数据3、CDM/ADS层表为实际物理表,任务由DataWorks统一调度4、前端实时请求,数据实时性依赖DataWorks调度周期配置DataWorks
24、微批次调度数据集成实时数仓解决方案(增量计算):Flink+Hologres日志数据数据库数据毫秒级响应,超高QPS轻度汇总数据DWS列存Hologres清洗关联转换轻度汇总高度汇总DWD明细层预加工DWS汇聚层预加工FlinkFlink维度数据DIM行存高度汇总数据ADS行存点查、监控、在线类服务KafkaDataHubDatahub|实时数仓场景3:增量数据实时统计可视化大屏Web应用API外部应用业务系统结构化数据OracleBI报表系统实时数据接口服务MySQL埋点日志消息队列业务系统半结构化数据LogStash/OGG/DTS/SDK采集数据服务+API网关DWD用户交易记录表用户访
25、问日志表ODS用户交易记录表用户访问日志表DWS商品订单表日访问统计表Flink 清洗加工转换Flink 聚合汇总实时数据缓存平台 DataHub/Kafla/Holo BinlogDWD用户交易记录表用户访问日志表DIM订单维表用户维度ADS商品分类销售额表用户增长报表DWS商品订单表日访问统计表实时数仓 Hologres离线任务加工结果表MaxCompute导入Flink关联Flink1、增量流,增量流join 静态维,增量流 join 增量流,3种场景即可统计出数据2、计算在Flink、存储datahub,ADS层应用数据存储在Hologres3、逻辑简单、实时性要求较强4、分层数据落盘
26、,方便数据修正典型案例参考04|CCO(Chief Customer Office)实时架构发展史200192020Future实时架构1.0 重加工+轻查询 应用场景“End to End”专属实时小组HbaseJobJobJobMysql服务引擎Galaxy瓦力小蜜XP大屏实时架构2.0 引入OLAP能力 引入数仓分层概念,加大公共层建设dwddwsadsFlink服务引擎HBaseGreenplumTo B/To C对内运营点查OLAP实时架构3.0 统一计算&存储,流批一体能力 元数据管理 实时技术链路的标准化HologresMaxComputeFlink可用性二
27、次消费能够快速满足需求是首要任务根据业务烟囱化建设数据架构不分层,以任务为单位支撑应用场景任务分层,混合架构数据根据SLA冗余,同步作业多元数据管理难数据资产复用,实时链路标准化解决当前架构痛点,控本提效成为首要任务灵活性隔离性高性能写入|实时任务烟囱化 无统一存储,KV引擎与OLAP引擎不通,不同的业务场景通过实例隔离 公共层任务链路过长,公共层明细表通过HBase反查实现 不同实例间数据同步造成作业发生一定程度的膨胀,涉及30%左右作业。实时架构瓶颈 元数据缺失,各个引擎元数据不通 数仓分层问题,分层数据存储需要统一并且可读写技术架构升级的挑战和解法任务增速快,成本高 作业数量大,任务数每
28、年翻倍 成本消耗大,消耗CU数倍增长 运维压力大,大促全员7个昼夜的压测实时数据产研效率低 每到大促,实时研发就会成为瓶颈 任务/表都无统一元数据管理 灾备通过双链路完成,开发/压测成本很高20000000000002002202003202004任务增长任务增长月增长任务数任务总数问题表象是什么问题表象是什么问题背后是什么问题背后是什么|技术架构升级的挑
29、战和解法统一存储&服务引擎的选型(Hologres)存算分离,优秀的离线数据导入能力,外表挂载直接加速 离线/实时模型统一,不割裂 行存/列存以及分析服务一体化的架构 与Flink的高度集成,消费Hologres Binlog 元数据与DataWorks数据地图集成技术架构的重构 实时链路及数据资产的梳理(抽象核心实体,复用加工任务)技术架构方案的选型技术架构方案的选型实时架构实时架构3.0方案设计方案设计财年预算“0”增长 业务增长,成不不增长 Holo-HBase链路,通过Holo Connector攒批能力,降低HBase写入30%流量峰值,比上财年节省150台机器。研发模式改变 元数据
30、接入以及数据的实时质检“闭环”的数据流转 流批一体的架构能力 自助分析的开放能力能力打造能力打造|多源头数据采集加工成实时大宽表只能依赖Flink的多流JOIN能力,无法使用维表关联方式,成本高且复杂 加工后的实时大宽表可由Flink二次消费能提供binlog给Flink做二次消费简化多流合并K1C1K1C2Flink多流JoinDataHub/Kafka(DWD)Flink加工K1C1C2ADSK1C1K1C2Flink加工K1C1C2KVOLAPDWSHolo行存表Holo binlogHolo 行列共存表|行列隔离/仓内流转高可用升级负载隔离/业务层高可用异地备份,容灾恢复|CCO与Hologres打造新一代实时数仓 轻粒度通过即时OLAP查询上卷,避免过度预计算,节约任务成本 客服维表通过外表挂载,离线与实时数据即时关联 元表对数据地图外化,方便业务查找 QuickBI+Hologres+副本机制,支持业务自助搭建实时监控|