基于 MaxCompute 的实时数据处理实践

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: MaxCompute 通过流式数据高性能写入和秒级别查询能力(查询加速),提供EB级云原生数仓近实时分析能力;高效的实现对变化中的数据进行快速分析及决策辅助。当前Demo基于近实时交互式BI分析/决策辅助场景,实现指标卡近实时BI分析、近实时市场监测、近实时趋势分析、近实时销量拆分功能。

一、产品功能介绍
基于查询加速的数仓架构
当前比较盛行的实时数仓,基本都是基于Flink来做的。今天分享的内容不是把 MaxCompute 定义为一个实时数仓,我们讲的是基于当前数据的实时处理流程,在MaxCompute中是怎么去做支持的,怎么在 MaxCompute 中做实时数据的接入、查询、应用。开源的实时数仓是基于Flink来做的,Flink本质是实时计算,支持流批一体,所以比较实时的场景都是基于Flink+Kafka+存储来做的。本次分享主要不是讲计算环节,本次主要讲解基于BinLog、Flink、Spark Streaming的实时流数据是怎么写入到 MaxCompute 中的。
通过实时流通道,实时写入MaxCompute,写入即可见,这是 MaxCompute 的产品特点。目前市场的数仓产品写入查询绝大多数都有延时存在, MaxCompute 是做到了高QPS的实时写入,写入即可查。可以通过查询加速(MCQA)实时查询写入进 MaxCompute 的数据。对接到BI工具,即席查询可以实时访问到实时写入的数据。
Binlog写到到MaxCompute,是通过DataX,支持增删改查的合并,后续在产品功能迭代中,MaxCompute会支持upsert,支持业务数据库数据的新增、修改、删除。Flink数据计算完之后写入到 MaxCompute 时,直接使用Streaming Tunnel插件写入MaxCompute中,这个过程不需要做代码开发,Kafka也支持了插件。
实时写入目前没有做写入数据的计算处理环节,只是快速的把现在流式数据包括消息服务的数据,直接通过Streaming Tunnel服务写入到MaxCompute中。当前Streaming Tunnel支持了主流消息服务,如Kafka、Flink,做了插件支持。以及Streaming Tunnel SDK,当前只支持Java SDK。可以通过Streaming Tunnel SDK做一些应用读取之后的逻辑处理,再调取Streaming Tunnel SDK写入到MaxCompute中。写入MaxCompute之后,目前主要的处理环节是针对写入的数据,进行直读查询,也可以把写入的数据关联到MaxCompute中的离线数据,做联合查询分析。在查的过程中,如果是通过SDK或者JDBC接入时,可以打开查询加速(MCQA)功能。如果是通过web console或DataWorks,是默认开启查询加速(MCQA)功能。当前主要是BI分析工具和第三方应用层分析工具,通过SDK或JDBC链接MaxCompute时,是可以打开查询加速(MCQA)功能,这样可以做到接近秒级查询实时写入的数据。
整体来看,现在的场景主要是数据的实时流式写入,写入之后可以结合离线数据,做联合分析查询,通过查询加速(MCQA)功能。在数据进入MaxCompute后,是没有做计算的,只是做查询服务。这是目前基于MaxCompute实时数据处理场景。
image.png
流式数据写入功能介绍
当前流式数据写入功能已经在中国区商业化发布。当前此功能是免费使用。
功能特定
• 支持高并发、高QPS(Queries-per-second)场景下流式数据写入,写入即可见。
• 提供流式语义API:通过流式服务的API可以方便的开发出分布式数据同步服务。
• 支持自动创建分区:解决数据同步服务并发创建分区导致的并发抢锁问题。
• 支持增量数据异步聚合(Merge):提升数据存储效率。
• 支持增量数据异步zorder by排序功能,zorder by详情请参见插入或覆写数据(INSERT INTO | INSERT OVERWRITE)。
性能优势
• 更优化的数据存储结构,解决高QPS写入导致的碎片文件问题。
• 数据链路与元数据访问完全隔离,解决高并发写入场景下元数据访问导致的抢锁延迟和报错问题。
• 提供了增量数据异步处理机制,可以在使用过程中无感知情况下对新写入的增量数据做进一步处理,已经支持的功能包括:
• 数据聚合(Merge): 提升存储效率。
• zorder by排序:提升存储、查询效率。
流式数据写入-技术架构
Stream API无状态并发数据实时可见
技术架构分为三个部分:数据通道、流计算数据同步、自研应用。
当前数据通道支持的有Datahub、Kafka、TT、SLS
流计算数据同步支持的有Blink、Spark、DTS、DataX、kepler/DD
数据写入MaxCompute中,在计算集群前会有Tunnel集群存在,提供Stream Tnnel服务来完成从客户端到Tunnel服务端数据的写入。写入过程是一个文件最佳的过程,最后会有一个文件的合并。这个过程是消耗了数据通道过程中的计算资源服务,但这一消耗是免费的。
image.png
查询加速功能介绍
实现数据实时写入与基于查询加速的交互式分析
目前查询加速功能可以支持日常查询80%-90%的场景。查询加速功能的语法与MaxCompute内置语法完全一致。
MaxCompute查询加速 – 针对实时性要求高的查询作业,全链路加快 MaxCompute 查询执行速度
• 使用MaxComputeSQL语法和引擎,针对近实时场景进行优化
• 系统自动进行查询优化选择,同时支持用户选择延时优先还是吞吐优先的执行方式
• 针对近实时场景使用不同的资源调度策略:latencybased
• 针对低延时要求的场景进行全链路优化:独立执行资源池;多层次的数据和metaCaching;交互协议优化
收益
• 简化架构,查询加速与海量分析自适应的一体化方案
• 对比普通离线模式快几倍甚至数十倍
• 结合MaxCompute流式上传能力,支持近实时分析
• 支持多种接入方式,易集成
• 支持自动识别离线任务中的短查询,后付费模式是默认开启。预付费当前支持为使用包年包月资源的实例下SQL扫描量在10 GB以内的查询作业提供免费查询加速服务。
• 低成本,免运维,高弹性
查询加速-技术架构
自适应执行引擎、多层次缓存机制
当SQL提交到MaxCompute计算引擎时,会分为两个模式,离线作业(吞吐量优化)和短查询(延迟优化)。两个模式从技术底层来说,查询加速作业做了执行计划的缩减和优化,计算资源是预拉起资源,是向量化执行,会基于内存/网络shuffle以及多层次的缓存机制。相比于离线作业的代码生产到磁盘shuffle,再进行资源排队申请。查询加速会进行识别作业,如果符合条件,则直接进入预拉起资源。在数据缓存部分,基于Pangu分布式文件系统,对表跟字段会有一个缓存机制。
image.png
查询加速-性能比对
TPCDS测试集与某业界领先竞品的性能比较
• 100GB超越30%以上
• 1TB规模性能不相上下
image.png

二、应用场景
流式数据写入-应用场景
image.png
查询加速-应用场景

固定报表快速查询
• 数据ETL处理为面向消费的聚合数据
• 满足固定报表/在线数据服务需求,秒级查询
• 弹性并发/数据缓存/易集成
通过数据应用工具或者是BI分析工具通过JDBC/SDK接入到MaxCompute,可以直读到MaxCompute内的表数据。
image.png

Ad-hoc数据探索分析
• 自动识别作业特征,根据数据规模、计算复杂度选择不同的执行模式,简单查询跑的快、复杂查询算得动
• 配合存储层建模优化,如分区、HashClustering等进一步优化查询性能
image.png
近实时运营分析
• 支持批量和流式数据接入
• 历史数据和近实时数据融合分析
• 产品级别集成消息服务:
• Datahub-日志/消息
• DTS-数据库日志
• SLS-行为日志
• Kafka-物联网/日志接入
image.png
三、工具及接入
流式数据写入-接入
消息&服务
• 消息队列Kafka(插件支持)
• Logstash的输出插件(插件支持)
• Flink版内置插件
• DataHub实时数据通道(内部插件)

SDK类新接口-Java
简单上传示例
多线程上传示例
异步化IO多线程上传示例
参考上述示例可以自己封装相应的业务逻辑。

查询加速-接入
工具类
• DataWorks(默认开启)
• ODPS CMD(需要配置)
• MaxCompute Studio(需要配置)
SDK类接口
• ODPS JavaSDK
• ODPS PythonSDK
• JDBC
老接口兼容
• 自动识别模式
image.png

四、Demo&总结
基于MaxCompute的实时数据处理实践
实现对变化中的数据进行快速高性能分析及决策辅助,10亿条数据查询秒级获取。
本次Demo实践是通过MaxCompute+QuickBI实现。QuickBI现在已支持直连的MaxCompute查询加速模式,QuickBI本身已有加速引擎,如DLA、CK等。当前最优的模式,直连MaxCompute走查询加速模式是最快的。
实践Demo请点击视频查看。

image.png
实践总结
优点
• Streaming Tunnel: 实时写入可见,解决了高QPS写入导致的碎片文件问题;
• 查询加速:低延迟-多级缓存&快速资源调度、易用-一套SQL语法、弹性-存储计算分离
提升
• 目前下游应用消费/汇总时每次只能全量查询,无法做进一步实时流计算处理;实时入库不支持修改、删除;
• 后续MC提供流式SQL引擎运行实时流作业,做到流批一体

更多关于大数据计算、云数据仓库技术交流,欢迎扫码查看咨询。
image.png

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
8天前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
24天前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
24天前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
2月前
|
存储 机器学习/深度学习 大数据
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
Apache Flink 诚邀您参加 7 月 27 日在杭州举办的阿里云开源大数据 Workshop,了解流式湖仓、湖仓一体架构的最近演进方向,共探企业云上湖仓实践案例。
158 12
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
|
1月前
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
35 1
|
1月前
|
SQL 监控 大数据
"解锁实时大数据处理新境界:Google Dataflow——构建高效、可扩展的实时数据管道实践"
【8月更文挑战第10天】随着大数据时代的发展,企业急需高效处理数据以实现即时响应。Google Dataflow作为Google Cloud Platform的强大服务,提供了一个完全托管的流处理与批处理方案。它采用Apache Beam编程模型,支持自动扩展、高可用性,并能与GCP服务无缝集成。例如,电商平台可通过Dataflow实时分析用户行为日志:首先利用Pub/Sub收集数据;接着构建管道处理并分析这些日志;最后将结果输出至BigQuery。Dataflow因此成为构建实时数据处理系统的理想选择,助力企业快速响应业务需求。
88 6
|
17天前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
25 0
|
1月前
|
分布式计算 Hadoop 大数据
Spark 与 Hadoop 的大数据之战:一场惊心动魄的技术较量,决定数据处理的霸权归属!
【8月更文挑战第7天】无论是 Spark 的高效内存计算,还是 Hadoop 的大规模数据存储和处理能力,它们都为大数据的发展做出了重要贡献。
61 2
|
1月前
|
存储 分布式计算 大数据
惊了!大数据时代来袭,传统数据处理OUT了?创新应用让你眼界大开,看完这篇秒变专家!
【8月更文挑战第6天】在数据爆炸的时代,高效利用大数据成为关键挑战与机遇。传统数据处理手段难以胜任现今海量数据的需求。新兴的大数据技术,如HDFS、NoSQL及MapReduce、Spark等框架,为大规模数据存储与处理提供了高效解决方案。例如,Spark能通过分布式计算极大提升处理速度。这些技术不仅革新了数据处理方式,还在金融、电商等领域催生了风险识别、市场预测及个性化推荐等创新应用。
63 1
|
1月前
|
存储 分布式计算 NoSQL
惊呆了!大数据处理竟然这么牛?挑战与机遇并存,看完这篇,你也能成为数据处理大师!
【8月更文挑战第6天】信息时代中,数据成为关键资源。企业需分析海量数据洞察市场、优化流程、提效决策。面对TB乃至PB级数据量及其多样性与复杂性的挑战,HDFS与NoSQL确保高效存储,而MapReduce和Spark等框架支持分布式计算,大幅提升处理效率。在金融、电商和医疗等领域,大数据正推动风险识别、精准营销与精准医疗等应用的发展,展现广阔前景。
53 1

热门文章

最新文章