邓宇超哪吒科技数据平台负责人
邓宇超
哪吒科技-数据平台负责人曾就职于趣头条、观安信息丰富的大数据开发及架构经验
目录
哪吒科技数仓发展历程01
实时数仓技术选型与架构02
实时数仓在智慧港口的实战应用03
收益与展望04
01哪吒科技数仓发展历程
1.1哪吒科技业务介绍-市场能力
1.2哪吒科技业务介绍-产品&服务
1.3哪吒科技数仓发展历程
第二阶段
业务场景:港口运营数据枢纽数仓能力:单业务单场景数据整合与决策赋能挑战:数据融合性、实时性
业务场景:智慧港口全生命周期与全解决方案(SMART系列)数仓能力:SelectDB统一实时数仓挑战:复杂场景、查询效率
业务场景:数据驱动码头作业数仓能力:混合架构下数据整合与分析赋能挑战:开发效率、维护成本、实时性
1.6哪吒数仓应用场景面临的挑战
02实时数仓技术选型与架构
2.1哪吒实时数仓选型因素
2.2哪吒科技实时数仓架构
2.4SelectDB在实时场景中的应用
实时数仓建模:
1.ODS:通过FlinkCDC实时采集数据源的数据,落地到SelectDB实时数仓,为后续数据分析提供原始数据。2.DWD:基于清洗后的明细数据,做数据归一化处理,方便上游业务。3.DWS:基于聚合模型,对指标预聚合,供业务使用。
业务应用:
通过数据服务平台,提供查询API接口,赋能给上层业务使用。
2.5SelectDB在日志收集分析中的运用-架构及效果
2.6SelectDB案例-日志检索分析-建表示例
CREATETABLEXXX_LOGS(tsDATETIME,pathTEXT,messageTEXT,hostnameVARCHAR(30),ipARRAY,INDEXidx_path(path)USINGINVERTED,INDEXidx_host(hostname)USINGINVERTED,INDEXidx_msg(message)USINGINVERTEDPROPERTIES("parser"="unicode"))ENGINE=OLAPDUPLICATEKEY(ts)PARTITIONBYRANGE(ts)()DISTRIBUTEDBYRANDOMBUCKETSAUTOPROPERTIES("compression"="zstd","compaction_policy"="time_series","dynamic_partition.enable"="true","dynamic_partition.create_history_partition"="true","dynamic_partition.time_unit"="DAY","dynamic_partition.start"="-7","dynamic_partition.end"="3","dynamic_partition.prefix"="p");
2.6SelectDB案例-日志检索分析-load示例
注意点:
(1)Doris建表语句
CREATEROUTINELOADdatabase.test_jobONXXX_LOGSCOLUMNS(ts,path,message,hostname,ip)PROPERTIES("desired_concurrent_number"="1","format"="json","strict_mode"="false","jsonpaths"="[\"$.@timestamp\",\"$.log.file.path\",\"$.message\",\"$.host.hostname\",\"$.host.ip\"]")FROMKAFKA("kafka_broker_list"="ip:9092","kafka_topic"="flink_logs","property.group.id"="t1_g","property.kafka_default_offsets"="OFFSET_BEGINNING");
•当使用DATETIME类型的时间字段作为主键Key时,查询最新n条日志的速度会得到显著提升。•使用基于时间字段的RANGE分区,并开启动态Partiiton,以便按天自动管理分区,提升数据查询和管理的灵活性。•在分桶策略上,可以使⽤RANDOM进行随机分桶,分桶数量大致设置为集群磁盘总数的3倍。•对于经常需要查询的字段,建议构建索引以提高查询效率;而对于需要进行全文检索的字段,应指定合适的分词器参数parser,确保检索的准确性和效率。•采用ZSTD压缩,可以获得更好的压缩效果,节省存储空间。•对需要全文检索的字段,将分词器(parser)参数赋值为unicode,如有支持短语查询的需求,将support_phrase参数赋值为true;如不需要,则设置为false,以降低存储空间。(2)导入语句•需要针对filebeat采集的json格式数据,做正确解
析,此处与Doris建表字段类型要一致。
2.7SelectDB案例-日志检索分析-实现效果
实时数仓在智慧港口的实战运用
3.1SelectDB指标计算实践
业务场景(场地内的件散货货物作业动态数据)
智慧码头运营管理需多维度统计场地货物作业。对钢材类,筛选作业量超500吨数据,剖析其大规模作业态势及资源影响;对全场货物,统计进货1天内作业总量,把握流转与繁忙程度,助力计划调整;针对钢材进货1天内作业量大于500吨状况,据此制定专属策略,提升特定货物与时段的管理及资源利用效能,实现高效运营决策。
3.2SelectDB指标计算实践-示例代码(表结构)
--场地货动态表
CREATETABLE`TMP_ACTIVITIES`(
`g_id`varchar(32)NOTNULLCOMMENT'动态id',`g_w_id`stringNOTNULLCOMMENT'场地货id',`g_gtwg`DECIMAL(13,3)NOTNULLDEFAULT"0"COMMENT'重量',`g_opdate`datetimeNOTNULLCOMMENT'作业日期',`t_id`stringNULLCOMMENT'租户id',...)ENGINE=OLAPUNIQUEKEY(`g_id`)COMMENT'场地货动态'DISTRIBUTEDBYHASH(`g_id`)BUCKETSAUTOPROPERTIES("enable_unique_key_merge_on_write"="true","store_row_column"="true",...);
--场地货表
CREATETABLE`TMP_GOODS`(`w_id`varchar(32)NOTNULLCOMMENT'id',`w_gname`stringNOTNULLCOMMENT'货名',`w_in_date`datetimeNULLCOMMENT'进货日期',`t_id`stringNULLCOMMENT'租户id',...)ENGINE=OLAPUNIQUEKEY(`w_id`)COMMENT'场地货'DISTRIBUTEDBYHASH(`w_id`)BUCKETSAUTOPROPERTIES("enable_unique_key_merge_on_write"="true","store_row_column"="true",...);
3.3SelectDB指标计算实践-示例代码(指标计算)
--统计场地货货类为钢材且作业量大于500吨的情况
selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwherew_gname='钢材'groupbyw_idhavingsum(g_gtwg)>5;
--统计场地货从进货开始1天内的作业量
selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwhereg_opdatebetweenw_in_dateanddate_add(w_in_date,interval1day)groupbyw_id;
--统计场地货货类为钢材且从进货开始1天内作业量大于500吨的情况
selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwherew_gname='钢材'andg_opdatebetweenw_in_dateanddate_add(w_in_date,interval1day)groupbyw_idhavingsum(g_gtwg)>5;
3.5SelectDB物化视图实践-示例代码
场景:
码头多用户同时对单表(数据量十亿级)进行维度聚合查询。通过不同维度组合和聚合方式,对比查询性能。
--有同步物化视图:命中了agg条件过滤裁剪后的物化视图
select
year(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt),count(orc_id)fromTEST_MVW..xxx_records_rtgroupbyyear(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt);
--无同步物化视图:
select
year(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt),count(orc_id)fromTEST_MVW..xxx_records_rt_tmp1groupbyyear(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt);
3.6SelectDB物化视图实践-结果分析
查询平均响应时间差异对比:
引入同步物化视图后,单表维度聚合查询性能得到了显著提升:
1.查询响应时间减少:在不同并发场景下,查询平均响应时间平均提升约10倍,查询响应时间显著减少。
3.CPU使用率降低:引入物化视图后,CPU使用率降低约1.53倍。
4.内存使用率变化较小:内存使用率的变化相对较小,平均差异倍数为1.16,说明内存并不是该查询场景下的主要瓶颈。整体来看,引入同步物化视图在单表维度聚合查询中有效地提升了查询效率、吞吐量,并显著减少了CPU的使用率,对于聚合查询场景具有良好的优化效果。
04收益与展望
4.2收益-业务效果
显著的性能提升
智慧港口数据大脑
1.核心报表数据实时性从1-2天延迟骤减至5s内。2.80%即席分析可在2s内返回结果,95%的即席分析可在5s内返回结果。
1.降低平台运维成本2.SelectDB极致的存储压缩比,存储成本降低70%3.降低人员开发成本
提供7*24小时技术支持服务、重点BUG天级快速修复及重大应急保障现场及时响应,有力支撑业务稳定运行,确保业务面对技术问题和突发状况时能持续高效开展。
4.3展望
1.SelectDB存算分离实践:弹性资源配置,降低存储成本
2.SelectDB增强多表物化视图业务运用:提升查询性能
3.集群管理工具运用:提升运维效率
ThanksforWatching!