当前位置: 首页 > 科技观察

亿级数据自助应用,京东物流基于Doris实现高性能秒级分析

时间:2023-03-14 14:22:16 科技观察

一、业务场景介绍首先给大家分享一下京东物流业务的需求和背景亿级数据自助应用。介绍京东物流业务数据的发展路线,底层数据的演进思路,以及业务对数据需求的迭代。1.业务需求是什么?京东物流的一体化供应链物流服务除了快递服务的仓储、运输、配送三个环节外,更多的是基于对商品销售和供应链的理解,合理规划仓储网络。分配库存,将用户需要的商品提前存放在全国数百个不同层次的仓库中。当用户下单后,产品会从最近的仓库直接送到现场,开始发货。用户下单后,快递公司通过干线网络将货物运送到相应的区域,再配送至配送站点派送。这些服务以集成解决方案的形式提供给客户,以满足客户的各种需求,业务极其复杂。对于我们数据端的建设者来说,会遇到各种实际问题:早期:海量数据的多维度查询已经成为常态,高时效保障是业务的最新追求,甚至要求实时;分散:数据存储在不同的业务系统中,每个系统没有标准的数据规范,数据重复构建;重:日报、周报、半月报、月报等工作效率低,部分工作重复,数据统计费时费力;慢:全国地区、影院以及各产品群的数据场景多样,无法快速响应数据变化;不足:缺乏统一的数据资产管理,运营商无法方便快捷地进行统一的数据分析;难点:领导获取数据难,营销投入产出比难衡量,数据驱动业务难,数据价值挖掘难。2、目前需要什么1)生产系统是指在正常情况下支持本单位日常业务运行的信息系统。它包括生产数据、生产数据处理系统和生产网络。2)数据仓库是为企业各级决策过程提供各类数据支持的战略集合。它是为分析报告和决策支持目的而创建的单一数据存储。为需要商业智能的企业提供有关业务流程改进、监控时间、成本、质量和控制的指导。3)数据集市是在京东数据仓库和大数据平台的基础上构建的各BG/BU的数据环境,为各BG/BU提供数据应用服务,包括CFO、CMO、COO、MOBILE等数据集市.4)应用系统是指能够利用数据的价值,辅助用户做出更好的决策(甚至行动)的产品形态。3、数据团队要做什么:业务和财务数据体系建设每个公司的业务数据和财务数据都处于自然分离的状态。例如,对于一个全国性的连锁店,如何在每笔订单上反映每个门店员工的工资和日程运营费用(如水电费),如何打通业务数据和财务数据,有点像银行的共享利润,将业务数据标准化到各个环节对应的各个功能点,即成本因素和收支因素的影响点,然后进行数据共享。这也是建立基础模型的过程,最终会在上游的资金分析系统中支撑客户的分析和成本支持。标准化的管理端数据口径、粒度和维度,将充分满足企业财务分析精细化、实时化的需求,为企业财务出具专业分析报告提供数据支撑。同时,具有公共能力的可复用标准数据,将支持企业建立价值链上的多维度分析框架,利用多层次、跨领域的分析,直接增强企业对业务信息的钻取能力,促进业务的发展。洞察力和管理智能发生变化。2.面临的困难数据可视化和灵活分析迫在眉睫,需要保障权限管理和数据安全。1、数据可视化建设在数据导出控制方面:隐患:数据导出到本地计算机进行分析;数据导出后,无法进行跟踪和控制。导出次数高达3000次/周。解决方案:长效方案:反馈用户需求,积累方法论,做离线分析报告,支持自助探索。短期解决方案:导出时弹窗提示法律风险;出口形成账单,每月送区长了解。数据权限控制方面:隐患:分析权限:由于历史积累,大数据开发分析平台的访问权限与当前的安全要求不匹配。例如,一些业务分析人员可以访问库中的完整比例表,而无需区分区域;指标权限:指标的访问权限控制分散在各个系统管理中,无法做到统一控制,容易混淆和遗漏。解决方案:分析权限:梳理BDP访问权限,根据业务特点缩小访问范围,制定岗位权限白皮书;指标权限:指标导出由统一数据API控制,指标查看权限设置由资管平台指标接收方统一设置。2、工具演示和业务用户代表组成研究小组,对后续工具选择进行研究:内部工具研究,JDPower目前处于快速迭代阶段,研究当前支持的功能,以及相应的定制化开发速度;外部工具研究,从成本、市场成熟度、产品易用性、扩展性、性能等多维度交叉比较市场主流BI工具的优劣势;内外部工具对比,业务方、产品经理和研发三方组成专家评分组,对内外部工具进行评分;最终确定BI工具实施的工具比较结论。3、目标现状分析目前京东物流数据探索分析工具的目标及目标现状分析,包括:现状:JDPower作为分析工具强国,从商城数据中心引入突出问题:性能慢:分钟级、高峰期无法向上滚动、向下钻取等功能缺失体验不友好,拖放繁琐临时解决方案:拉取数据,本地分析隐患:数据导出后无法追踪长期解决方案:引入更合适的工具研究:powerplan、Tableau、forever红BI等分析工具的目标:提供便捷的自助服务:集数据准备、报表制作、数据分析为一体的一站式分析平台,业务人员可以轻松并快速创建和分析数据报告,带来业务驱动的数据分析工作模式。多维向下钻取和向上滚动。内嵌丰富的组件,上线周期短,组件丰富,可以对所有数据源进行合并、搜索、交互和分析。移动端跨屏,无缝支持PC、iPhone、iPad和Android,在这些终端设备上保持一致易用的用户体验。高性能,秒级计算,采用列存和内存计算,实现千万级数据分析秒级响应;提高性能,支持更多的分析维度和更大的数据范围。当前问题详解:独立分析不便,处理链条过长,需要从前端、UI、产品、UI多方协作,资源协同困难,沟通成本高;定制化研发投入大,定制化开发,需要开发不同维度的分析不同的汇总和前端展示界面,底表模型变化影响范围广;图表组件并不丰富,每个新的应用场景需要不同的开发和集成。每个功能模块之前都需要联合调试和测试,开发周期长。不支持移动端;不能多屏显示,性能低,目前没有APP显示;查询依赖大数据平台资源,业务繁忙时查询性能低下。4.分析工具功能矩阵基于前面的分析,归纳出分析工具的功能矩阵:3.解决方案数据从无到有,从存在到准确,从准确到完备。每个阶段都会面临不同的业务需求,需要跟上业务变化并迭代。1.数据引擎的改变2.资源模式和结构优化Pilot分析师报表,为保证灵活性,多通过配置报表工具(JDPower)实现,以Presto为计算节点,BDP大数据平台作为数据存储架构。但是,计算资源和存储资源都是共享模型,无法通过扩展资源有效提高查询效率,严重影响用户体验,亟待改变。之前的架构:Escort+Power+PRESTO+BDP缺点Presto集群无法隔离资源,容易出现资源竞争;资源不能按业务线扩展;报表数据存储在BDP平台,当前集群有很多任务,任务在正常工作时间内运行,很容易造成BDP平台繁忙,报表数据读取慢的情况。解决方案:Pilot+Power+DORIS引入新架构,资源独享;解耦BDP平台对数据展示的影响:已借助单票分析项目完成试验证查询从10秒+到秒级响应,提升资源自主管控,根据需要优化3.公用表Doris表管理的管理操作,包括:1)创建表2)添加分区ALTERTABLEtable_nameADDPARTITIONIFNOTEXISTSp20200803VALUES[('2020-08-03'),('2020-08-04'));3)删除分区TRUNCATETABLEtable_namePARTITION(p20200803,p20200804注:规范分区,统一分区规则,方便后续运维。导入时会同时为所有Rollup生成数据,Rollup过多会影响导入性能评估Rollup创建次数批量导入清理历史数据建议小规模多batch串行操作合理使用资源2)BrokerLoad3)Trackimportstatusshowloadfromjddl_testwherelabel='app_ea_pal_vender_all_sum_m_20201101_183213_19688970430'\G注:LABEL:用于指定这批导入的标签,用于后面的作业状态查询等max_filter_ratio:用于指定允许过滤非的最大比例标准数据,默认为0,不允许过滤,自定义规范如下:'max_filter_ratio=0.2',表示允许20%的错误率timeout:指定加载作业的超时时间,单位秒。当加载执行时间超过阈值时,会自动取消。默认超时为86400秒。5.数据自动导入管理-t表示要推送的数据的表名【该参数必填,不选会报错】-c表示要推送的数据的列名【该参数为可选,如果不选择则默认推送所有列,建议不要选择]-n表示推送多长时间的数据[需要和参数-e配合使用,如果不填,默认推送是1天的数据]-e表示脚本数据推送的日期【默认是昨天,一般追历史数据的时候会用到这个参数,比如今天是2020-05-08,默认推送20200507天的数据,如果指定了-n参数,则push将从20200507-n天到20200507】-d表示对doris数据库的表进行操作【默认参数为:db_null不执行建表】db_get_crt:表示打印出doris建表语句,这个逻辑会读取表结构hive中的ture,然后转换HIVE中的表结构字段为string类型作为维度,int、bigint、double类型作为value生成建表语句【具体逻辑请参考脚本】db_reset:重建表。如果调整了表结构,需要用这个参数重构doris表结构【如果指定了-c参数,记得加列】db_drop:表示删除doris中对应的表,用于离线使用tasksdb_create:如果对应的表不存在,则创建表,如果有表,打印下表结构,重点分享垂直联邦学习和水平联邦学习。注意事项:不同的数据库特性自然存在集成瓶颈。新技术的引入需要有足够的计划来履行他们的职责,这样他们的特性才能发挥出来。管理配置为数据源,在数据源上创建的应用程序允许业务人员在10分钟内构建符合他们期望的分析报告。7、需要优化的点:对应Rollup影响的子查询。如果子查询没有有效的rollup,外层就不会生效。4、未来规划技术迭代是手段,推动业务发展是目的。如何通过技术升级实现业务技术的相互促进。1.离线数据技术升级BDP是一个支持开发者、分析师、业务人员进行数据查询的公共平台。业务是不断变化和成长的,业务部门的分析也会随着对业务的理解而加深。但是,实际的Physical资源是不能无限扩展的。基于此,日常重要任务SLA保障是数据团队面临的最大挑战,并且随着业务的发展会更加严峻。这就需要系统规划:底层模型的不断优化和迭代,数据的优化整合,对主题模型的数据引入生命周期管理,这表现在两个方面:首先,随着业务的增加,模型必须其次,模型本身存储的数据需要生命周期管理,针对可追溯的分析数据制定了数据保留策略,以满足业务需求,同时尽量减少历史数据存储。适配平台优化处理策略。从调度平台的全时运行来看,在某些时间段会出现资源利用低谷,通过并行任务合理利用资源。引入新的调度引擎,可以根据不同的任务处理场景,选择不同的调度引擎(Hive/Spark),以最小的代价实现中转任务的运行数。2.业务迭代技术跟进随着业务的不断成熟,对精细化运营提出了新的需求,会涉及到各方业务系统的迭代,数据处理需要夯实底层架构。通用化:业务与财务一体化,成熟业务整合为单笔订单;系统化:通过多维度盈亏模型,将业务的实际运营成本串联起来,支持业务分析,对成本进行整体优化调整;清晰:看清每一个操作动作的成本,减少分摊带来的“差异”,结合业务量和收入,提升不同环节;灵活性:即席查询,使用新的OLAP计算框架,支持多维度数据查看,实现不同业务层级。汇总和向下钻取数据。3.团队建设独木难成林。任何项目的成功都是团队合作的结果。建队之初,团队人员比较少,对接业务也比较集中。在从0到1的数据建设过程中,必须采用“垂直”的开发方式——一个数据开发对接一条线,当前每条线从头到尾负责,实现高速迭代。这个阶段,团队的核心价值就会形成。当所有业务方认可这种数据分析思路时,业务需求就会扩大,不同主题之间的横向拉通分析,团队成员也会得到补充。如何实现人员价值最大化,需要在团队建设上投入精力,主要包括:方法论建设:没有成熟的方法论,后续将难以为继。技术提升:结合离线实时数据全链路技术,技术要求高。项目管理:大项目周期以半年计算,科学衡量项目投入产出。数据权限:数据访问细粒度控制,基本元数据补全。人才队伍建设:需要人才梯队,保证数据持续迭代。今天的分享就到这里,谢谢大家。