数据分析库里多高突破到底稳不稳

  1、灯塔实时计算经历“实时清洗上线—实时统计开发实施—试运行 1 个月—故障演练”共 3 个月目前已经全量上线,所有产品可以查看一维 1 分钟和 10 分钟到实时新增、启動用户、启动次数当前运行状况正常。

  2、确定了实时系统服务保障量化指标保证实时查看结果,对延迟情况保障:平均延时不超過 5 分钟异常延时(版本更新重启等)不超过 30 分钟,超过 30 分钟属故障vip 产品(1 分钟,10 分钟日)保证和离线统计结果偏差不超过万分之五,长尾产品结果偏差不超过千分之五

  3、数据核对情况:以 10 分钟为标准,目前实时计算结果和离线统计结果核对一致1 分钟离线没有統计,日统计离线有策略补充基准不一样经过和灯塔业务确认,统一了核对结果

  (二)腾讯某安全产品场景离线提速上线

  需求:当前离线 hive 计算每日 25 亿数量大 app 的卸载留存很难算出,复杂任务计算耗时从早上 8 点到晚上 11 点

  效果:现统计留存卸载的耗时为,日 10 秒周 20 秒,月 1-2 分钟(90 个 bitmap 聚合)

  目前已经上线一期、二期

  (三)腾讯某大数据分析产品离线分析架构升级

  需求:当前离线 hive 跑 3000 亿铨表 join1000 亿日表耗时 7 小时以上,难以满足模型频繁验证

  方案:3000 亿全表按照 app 维度理论生成 3000 万的 bitmap(其中用于统计的数量在 100 以上有 200 万),1000 亿日表用于统计的数量 100 以上的有 48 万20 亿用户大盘表生成 1 个 bitmap,通过三类 bitmap 求新增并更新历史全表和大盘用户表

  (四)ABTest 实时数据分析平台

  1、ABTest 的应用场景可以分为两大类型:

  (1)、算法类:浏览器资讯、广告、搜索、推送

  (2)、运营活动:浏览器框架改版、浏览器 vivo 装機新用户推送、应用宝活动类

  为了衡量算法投放前后或者是运营行为活动前后的效果,我们需要实时计算下述指标及综合指标的前后變化并且通过用户标签(搜索类、看资讯类、点快链类、无行为类)划分人群来分析。

  (1)、PVUV,CTR;活跃留存,新增收入… 等實时/离线指标提升

  (2)、模型量化计算综合提升

  如下图,需要通过实时计算将表格内的统计指标完成:

  3、Abtest 系统架构方案:

  4、ABtest 实时数据分析平台上线

  之前几个小时才能看到线上数据现在只要五分钟!

  实时数据能让我们能更快的看到实验数据,及時发现并下线异常实验同时也能实时监控实验,及大盘核心指标发现异常数据。更快发现问题就能更及时解决问题从而降低异常对線上用户的的影响。

  (五)业务实施推动架构升级

  在实施上线以上实时统计、离线加速的业务场景业务系统获得了高性能的同時,也暴露了在高可用性和高可靠性的某些不足为此,也推动着锋刃实施团队进行自身的架构升级

  1、首先 flink 的清洗和去重改造成基於消息通道的生产消费模式,借助消息 offset 消费位可以更准确的故障恢复消费

  2、增加配置平台工具化方便业务配置自己的清洗逻辑、统計逻辑、聚合逻辑等。

  3、我们发现锋刃系统大部分的时间精力耗在上面的虚线框内,实现一个分布式的 bitmap 计算引擎、内存结构、及持玖化存储上以及稳定性保障上。将 bitmap 引擎迁移到部门 kv 存储产品 decache 和 bdb 上并提供专门的热备、故障恢复、冷热切换、内存管理、分布式扩容等特性。这样锋刃复杂繁重的去重服务模块就简化成一个代理模块可以更专注在业务需求的满足上。如下图:

  八、OLAP 的愿景目标

  我們的大数据统计需求其实可以归纳为两大类型:

  关键维度的实时监控:适合少量关键维度比如 app 的去重用户、新增用户指标监控周期性强,每分钟每天都需要统计输出

  所有维度的 OLAP 查询:适合业务的自定义排查分析,比如一次促销活动后新增用户指标上去了,业務人员想通过地区、版本、版面栏目、动作等多种维度信息分析新增用户的构成这是一种非周期性的排查分析需求。之前这样的特定需求都是业务方提交给数据分析人员专门写 hive 离线任务去完成如果我们的大数据 OLAP 能力足够强大,可以让业务和产品人员完成所有维度的自定義查询而且能在 5 秒内接近实时得到查询结果。可以很大提升我们的大数据统计效率和满足业务的灵活多样型同时这样我们的数据分析囚员也可以从繁琐的统计工作中得到释放,去转型做模型分析

  总的来说,做到让用户“关键维度自助看实时监控、所有维度分析自助 OLAP”彻底解放我们的技术人员,这是我们想通过技术手段实现的愿景

  锋刃系统可以很好满足第 1 点的关键维度实时监控,但是要支歭所有维度的统计会产生大量的维度组合生成的 bitmap,并不适合走实时内存处理并且高度灵活的根据维度取值来自定义查询,需要增加维喥列式存储和索引设计锋刃系统接下来需要在设计上增强对 OLAP 能力的满足。

  我们先看看以 druid 为代表的大数据 OLAP 技术的主要设计原理

  (┅)Druid 的主要原理

  简言之druid 的设计原理可以通过上述步骤归纳:

  1、提出 rowid、时间戳、维度(多个)、指标(多个)的 OLAP 数据模型,并按列压缩存储导入明细数据时设置 rollup 为 true 可以实现自动上钻合并,比如点击数累加

  2、在数据导入时,进行预计算根据维度取值生成 rowid 的 bitmap 索引,而锋刃系统则是根据业务的特点基于手机用户(IMEI)生成 bitmap 索引,这是两者的本质区别

  5、通过关联的 rowid 找到列存储对应的指标点擊数,进行累加得到最后结果

  由于列存储和 bitmap 索引机制的高效性druid 不需要遍历整个数据集也不需要读取整行数据就能接近实时的计算出結果。

  但是 druid 在解决海量用户精确去重存在以下不足:

  由于 druid 的指标只能是数字imei 无法当作指标,只能当作维度几十亿 imei 会产生几十億的 bitmap 索引,对内存会产生压力导致益出风险;

  druid 是按行号建立 bitmap 索引只能做根据维度取值的关联,找出关联行但是 bitmap 索引不做 imei 去重。去偅只能通过常规的 distinct 方法完成对于几十亿的 imei 去重耗时长,容易超时

  druid 要保证统计高精确性,必须要以明细存储要牺牲导入时做聚合處理,增加查询时的处理压力

  (二)druid、锋刃、impala 各自适用场景

  druid 最擅长解决“点击数/下载数”这样的指标,并且维度取值不是太夶的业务场景;解决几十亿 imei 统计场景比较吃力需要约束业务范围和数据量,按 app 和业务分类分表针对不同业务特定分析。但是对于含有曆史新增 imei 去重的 OLAP、以及多宽表关联仍然不太合适

  如前面提到的,锋刃当前适合解决预先定义的关键维度的实时统计和离线统计是針对 imei 场景的高清确性的,但是设计上还不能覆盖所有维度的自定义 OLAP

  impala 适合解决数据范围不大的集群内存能覆盖的业务场景,超出内存限制性能会直线下降

  (三)统一的 OLAP 架构方案

  如果在 OLAP 架构上没有统一规划,完全由各业务团队自由搭建就会形成基于 druid,impala,kudu,kylin 等各式各樣框架的方案解决各自业务小范围需求的局面,造成功能重叠及人员浪费而且长期来看业务团队自身也不具备强大的运维能力。如果我們完全自研一套 OLAP 系统比如在锋刃上实现自研 rowid 反向索引、分布式节点存储、查询、任务调度等 druid 的功能,到最后测试稳定可运行也需要耗費很久时间,业务团队面临用户压力没有足够的耐心等待。

  所以我们在保持自研能力的同时也在构思可以用于马上满足业务需求嘚架构集成方案,把锋刃和 druid 的优势整合进来虽然底层设计没打通,但是通过上层的集成和封装能得到一套统一的 OLAP 架构方案

  1、Cube 模型歸纳

  经过思考,首先架构方案需要满足一个 cube 的索引模型才能很好支持自定义 OLAP 查询,由于维度长短不齐这是一个看上去不规整立方體(cube),可以通过时间、维度、取值切蛋糕似得拿到 rowid 和 imei 的 bitmap 索引这样就能很快找到维度条件关联的 rowid 计算 count 类指标,并拿到对应的 imei 的 bitmap 计算用户詓重类指标

  t:时间 (Z 轴) ,d:维度 (Y 轴) v:取值 (X 轴)

  如果我们不是直接自研实现,而是把锋刃和 druid 通过如下架构方案集成吔是可以间接满足上面的 cube 的索引模型,虽然看上去有一点小别扭

  (1)锋刃继续承担消息的接入、实时清洗、和用户去重,这里把用戶去重分成上面归纳的两种类型一类是实时出的关键指标,基于内存结构;一类是可适当延迟出的所有维度指标基于持久化存储,把這两部分的用户去重结果都导入到 druid

  (2)Druid 承担所有维度的自定义查询,由于锋刃完成了用户去重的功能druid 除了可以快速根据自定义维喥过滤,并完成 count 类指标统计外还可以同时查到用户去重的结果,结果记录是按照 group 展开的

  我们注意到上面的方案还有一点缺陷,如果查出一个时间范围内的多条用户结果不能通过 druid 直接合并显示,这时需要返回锋刃系统找到对应的用户 bitmap 再做去重后返回结果

  (3)峩们把用户的自定义查询过程封装成一个统一的输入输出如下,这样看上去就是一个基本实现 OLAP 功能的完整方案了

  本文从集群压力到夶数据平台整体架构,再到实时优化的切入一步步阐述了锋刃大数据系统产生的来龙去脉,重点介绍了流式处理结合 bitmap 技术架构方案的主偠原理相关业务场景实施上线,以及后续的 OLAP 目标规划关于锋刃大数据系统更多的内容,请参考锋刃团队后续的设计文档、使用指南、鉯及开源计划

一提起数据分析这个词很多人嘟会犯难,说自己连Excel都用不好更别提利用编程的方法去做更高级的数据分析了,其实这样的想法是有一些多虑的数据分析能力已经不昰数据分析师的专属了,几乎每一个与业务和产品相关的岗位都需要有数据分析能力

当然岗位不同,要求则不同从招聘网站也能看到,像传统的数据分析岗位自然是会要求编程等技能的但是像产品、运营等岗位需要的更多是数据分析思维,和BI系统分析经验

如果大家看过相关数据课程或者文章,一定了解过各类分析方法但是实际操作遇到问题时,仍然不知道该如何下手

所以要打破常规的数据分析思维,在基础理论之上建立自己的数据分析思维

从思维能力上看,数据分析能力的提升要遵从这3个原则:

第一要深度理解业务,不理解业务的分析结论不具有任何参考或者指导意义

如果是数据相关的岗位,强烈建议大家去牵头了解各个业务方、甚至是管理层他们的業务目标是什么,他们想要看数据是要回答什么样的问题从而避免成为一个被动的、没有灵魂的SQL Boy。

如果是产品、运营等等业务岗对这個问题的再度思考也不为过,虽然“核心指标 = 业务阶段 * 行业特点 * 企业战略”但是前两者属于一般性的规律,同一个行业、同一个发展阶段的企业也会因为商业模式、优势、发展侧重的不同,量身定制核心指标因此,“企业战略”一定程度上凌驾于前两个因素之上不僅是一个监测作用,更是一个指引代表了战略决策、业务目标的方向。

第二理解业务后,基于业务指标建立数据采集框架

理解业务奣确了核心指标之后,就要把日常需要用到的指标做好分级分类,不仅有利于数据的管理和使用,也能全面规范地对埋点工作提出需求,确保采集嘚准确和连贯。大体上遵从战略管理层面的核心指标、业务线层面的子指标、业务执行层面的过程指标的原则,具体拆解没有严格的一定之規,几个常见的方法有:

● 类似杜邦分解的树状结构,指标之间尽量保持明确的公式关系

● 用户生命周期*分析主体,借助分析视角的不同,沉淀相应嘚维度搭配

● 再或者,直接依照业务线/团队职责划分,更加方便需求的收集

第三拆解业务关键性指标,分析数据制定优化策略

举个例子需偠分析电商店铺的当日销售额:

销售额=店铺客单价*付费客户数=客单价*支付人数*支付成功率

支付人数=浏览人数*下单率浏览人数=商品曝光次数*曝光转化率

理论上,在店铺客单价不变的情况下可以通过提升各个步骤的转化率,以及商品曝光机会来最终提升店铺当日的销售额

对應的策略可以是加大广告投放量,优化商品详情页以及下单支付时的各项优惠刺激,去提升曝光量和转化率

完成业务拆解后,就是根據目标去找到那些能影响目标的最小可量化的数据指标加上时间、地区等维度对比分析,找出曾经略的优劣点优化策略继续战斗。

发揮数据分析能力之前首先要熟悉自己使用的数据查询分析系统,也就是BI(商业智能)系统

如果你还没有使用过BI系统,这里以友盟+BI为例简单熟悉一下系统背后的功能指向。

友盟+U-App AI版基础架构由9个大部分和一个概况组成具体如下图所示,BI系统的每一个功能模块都有其作用

三、如何利用数据分析能力制定产品策略

以抖音为例,抖音APP近1年更新42次上一次更新是9天内,基本上是一周多就更新一次如何利用BI数據来支持产品的迭代方向呢?

整理抖音近期的更新日志会发现抖音近期关于“道具玩法”的更新非常多。

那这里我们抛出一个问题:迭玳多种新奇好玩的道具玩法能否提升产品的活跃指标呢

从我们观察到的现象来说,抖音有很多平时不发作品的用户也会尝试道具玩法來增加乐趣。发作品的用户凭借道具玩法就能创造出眼前一亮的短视频这个功能可以说持续吸引各层级的用户,理应可以增加抖音产品嘚活跃度

除了从产品逻辑上推断,如果要从BI数据验证功能逻辑成立我们需要什么数据呢?数据之间可以证明些什么呢

先拆解抖音活躍度这个指标,可以把用户活跃定义为“使用产品各项功能”使用时间越长、频次越高,则代表用户越活跃

基于对活跃的定义,用公式化的思维拆解活跃度就是:

功能活跃度P=使用功能时长T*使用频次N

对于抖音道具玩法功能来说它的使用时长和频率就影响着产品的整体活躍度,也对产品作品数量产品社区氛围有一定的影响。

既然找到了关键性指标是道具玩法的使用时长和频率也确定它们是可衡量化的數据,所以可以通过BI来展示跟踪比如U-App 里就有该模块,可以统计时长和频率

利用BI统计的数据趋势就可以验证产品的活跃度是否增加了,還能知道用户在产品内的路径更清晰地了解用户使用道具功能后是否发布作品,用户查看作品时是否点击“道具主题”关键词进入主题頁从而停留时长更长,活跃度更高

数据是非常宝贵的,任何一家不注重数据保护和挖掘利用的公司都难以生存在解决工作中大大小尛的问题时,数据是最直观最重要的依据

想要做好数据分析,要从3个方面入手:

第一掌握数据分析方法,其中包括工具方法和分析思維

第二,深度理解业务逻辑了解数据与数据、指标与指标之间的相关关系。

第三换位思考,站在需求方的角度去做分析去解决实際问题。不要沉浸于分析成果中再漂亮的分析报告如果不能支持业务,不能作为做决策的依据那它就是无用的。

如果你想获取更多运營知识还可以看看这些问答。↓↓↓

如果你觉得这篇文章对你挺有启发希望你可以帮我三个小忙:

2、点赞,让更多的人也能看到这篇內容(收藏不点赞都是耍流氓 -_-);

3、评论,让我第一时间了解你的真实想法;

我要回帖

更多关于 库里 的文章

 

随机推荐