AS北京2017-《美团点评用户行为分析系统的构建与优化》-孙业锐.key

Similar documents
2015 年 水 利 建 设 市 场 主 体 信 用 评 价 结 果 一 勘 察 单 位 ( 共 92 家 ) AAA 级 (48 家 ) 1 中 国 电 建 集 团 北 京 勘 测 设 计 研 究 院 有 限 公 司 2 北 京 市 水 利 规 划 设 计 研 究 院 3 中 水 北 方 勘 测


Microsoft Word - ~ doc

<4D F736F F D20A1BE A1BF C4EABDADCBD5D7CFBDF0C5A9B4E5C9CCD2B5D2F8D0D0B9C9B7DDD3D0CFDEB9ABCBBEB8FAD7D9C6C0BCB6B1A8B8E6A3A8B8FAD7D A3A9>

06?????k?g

ABOUT ME AGENDA 唐建法 / TJ MongoDB 高级方案架构师 MongoDB 中文社区联合发起人 Spark 介绍 Spark 和 MongoDB 案例演示

培 训 机 构 介 绍 中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开 展 Hadoop 云 计 算 的 培

托管协议

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8B8B7C4FEB3C7CDB6B8FAD7D9A3A9>

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8E4AFD1F4CFD6B4FAA3A9>

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8C8F0B0B2B9FACDB6B8FAD7D9A3A9>

<4D F736F F D20C4CFCDA8B9FAD3D0D7CAB2FAB9ABCBBEB6A8B8E55F A3A8B5A3B1A3B7BDA3A E646F63>

8

"#$% & ( )*+,,, -+./01 234,+536,, : 3 ; 33 < =>5+ +,,,%B?B6B B? )-,,,>-% ) ) ) ) ) C C )>4,D--?> -&6+ )5 +4 )+B, +,,-- +,,-- )-(4,,, )

水晶分析师


Intruduction to the NGINX stream subsystem and OpenResty's support

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的

附件三

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A83135C4EAB6C8B4CEBCB6D5AEC8AFB6ABDDB8D6A4C8AFB8FAD7D9A3A9>

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8BAFEB1B1B9A9CFFAB8FAD7D9A3A9>

全国水库移民后期扶持管理信息系统

Zmf575.mps

发 债 主 体 大 唐 集 团 成 立 于 2002 年 12 月 29 日, 是 根 据 国 务 院 关 于 印 发 电 力 体 制 改 革 方 案 的 通 知 ( 国 发 号 文 件 ) 文 件 在 原 国 家 电 力 公 司 分 企 事 业 单 位 基 础 上 组 建 的 大 型

目錄

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

秘密大乘佛法(下)

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

Page 2 of 12

Microsoft Word - Sunday

鎶ョ焊0


<4D F736F F D20B1A6D0C5D7E2C1DED2BBC6DAD7CAB2FAD6A7B3D6D7A8CFEEBCC6BBAED3C5CFC8BCB6D7CAB2FAD6A7B3D6D6A4C8AFB8FAD7D9C6C0BCB6B1A8B8E6>

68003 (Project Unity TC)_.indb

第 06 期 李祥池 : 基于 ELK 和 Spark Streaming 的日志分析系统设计与实现 1 日志 1.1 日志定义 IT 1.2 日志处理方案演进 v1.0 v2.0 Hadoop Storm Spark Hadoop/Storm/Spark v3.0 TB Splunk ELK SI

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8C7E0B5BABDF0CDF5B9C9B7DDB8FAD7D9A3A9>

AS北京2017-《知乎 Feed 流构架演进》-姚钢强.key

%

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

untitled

Reducing Client Incidents through Big Data Predictive Analytics

****************

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二



使 小 趙 有 機 可 趁 二 員 工 法 紀 觀 念 薄 弱 小 趙 身 為 主 管, 竟 假 藉 職 務 之 便, 利 用 平 時 得 經 常 申 請 出 差 之 機 會, 虛 立 出 差 名 目, 實 係 法 紀 觀 念 薄 弱 使 然 肆 具 體 改 進 措 施 或 建 議 一 訂 定 或

python_free

壹:教育文化公益慈善機關或團體免納所得稅適用標準

Hippy-VueConf

1.5招募说明书(草案)

ac2017-joeyguo-2.0.key

[Table_MainInfo]

PowerPoint Presentation

PowerPoint 演示文稿

<4D F736F F D20A1BE A1BF C4EAD6D0B9FABBAAC8DAD7CAB2FAB9DCC0EDB9C9B7DDD3D0CFDEB9ABCBBEB8FAD7D9C6C0BCB6B1A8B8E6A3A8B8FAD7D A3A9>

鹏元:已经到帐

文档 1

01

PowerPoint 演示文稿

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E620A3A8BAFEB1B1CAA1B9A9CFFAC9E7A3A9>

案例分享产品文档

<4D F736F F D C4EAD6D0BACBB2C6CEF1B9ABCBBEBDF0C8DAD5AEB8FAD7D9C6C0BCB6B1A8B8E6D6D5B0E6205F315F312E646F63>

天津市地下铁道集团有限公司

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

<4D F736F F D20B2B3BAA3D2F8D0D0B9C9B7DDD3D0CFDEB9ABCBBE C4EAB8FAD7D9D0C5D3C3C6C0BCB6B1A8B8E >

监管机构 债券品种 相关发行规章制度 企业债 1 年 企业债券管理条例 关于进一步改进和加强企业债券管理工作的通知 国 家发展改革委关于推进企业债券市场发展 简化发行核准程序有关事项的通知 中小企业集合债 参考企业债 项目收益债 年 项目收益债试点管理办法 试行 短期融资券 银行间债券市场非金融企业

a 3.1b

rating report

<4D F736F F D205344A1BE A1BF3739CFE6CDB6BFD8B9C C4EAC6F3D2B5D5AE3131B8FAD7D9D6D5B8E5>



<4D F736F F D20C9CFBAA3C7BFC9FABFD8B9C9B9C9B7DDD3D0CFDEB9ABCBBE C4EAB6C8B5DAD2BBC6DAB6CCC6DAC8DAD7CAC8AF2DD5AECFEE F315F2E646F63>

鹏元:已经到帐

恋夜秀场直播间 夜恋秀场诱惑直播间_夜恋秀场找不到了_aaa.bbb夜

untitled

编号:

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

<4D F736F F D20B3F6B1A8B8E C4EAB9FABCD2BFAAB7A2CDB6D7CAB9ABCBBEB8FAD7D9C6C0BCB6B1A8B8E666616E2E646F63>

<4D F736F F D20B9E3CEF7B9F0B9DAB5E7C1A6B9C9B7DDD3D0CFDEB9ABCBBE C4EABFC9D7AABBBBD5AEC8AFB8FAD7D9C6C0BCB6B1A8B8E62E646F63>

****************

<4D F736F F D20C6C0BCB6B1A8B8E62DB9FEB9A4CDB6D6D0C6B12E646F63>

入 大 立立 手 口 面 耳 鼻 耳 鼻 子 耳 鼻 生 生 耳 鼻 耳 鼻 耳 鼻 小 手 入 大 一 支 手 入 支 立立 手 入 支 手 入 石 口 口 支 手 支 手 手 支 入 入 入 人 人 人 人 人 田 手 入 耳 鼻 手 入 小 一 支 人 見見 赤 十 耳 鼻 金金 口 手 支

ebook 132-2

<4D F736F F D CDACC8CACCC3BFC9D7AAD5AED0C5D3C3C6C0BCB6B1A8B8E62DD6D5B8E5>

Tangram For GMTC 2017.key

Bilibili海量监测平台的演进之路

Hosting Universities 主办学校 Indiana University The Ohio State University University of Illinois at Urbana-Champaign University of Minnesota University o

构建高效的私有云平台V3

<4D F736F F D20C6C0BCB6B1A8B8E6B7E2C3E6A3A8BDDCC8FCBFC6BCBCB8FAD7D9A3A9>

API网关在大数据开放中的应用-童剑-v0.3.key



RUN_PC連載_12_.doc

前瞻性声明 该陈述载有 1995 年年美国私 人证券诉讼改 革法案所界定的 前瞻性陈述 及适 用加拿 大证券法所界定的 前瞻性资料料 本 文所 用的该等前瞻性陈述及资料料包括但不不限于有关中国 黄 金金国际资源的预期未来业绩的陈述, 包括贵 金金属及基本 金金属产量量 储量量及资源量量 扩 大矿区及

ebook46-23

Transcription:

美团点评 用户 行行为分析系统的 构建与优化 孙业锐 美团点评数据平台团队

孙业锐 美团点评 高级技术专家 Apache Kylin PMC 美团点评数据平台查询引擎 方向负责 人 负责数据 生产和查询引擎的改进优化和落地应 用 专注于分布式计算,OLAP 分析,Adhoc 查询等领域 包括但不不限于 Hive SparkSQL Presto Apache Kylin Druid 等

问题分析 算法思路路 工程实现 性能优化 总结

问题背景 Growth Hacking Acquisition Activation Retention Referral Revenue 用户获取 激活注册 活跃留留存 推荐分享 变现模式 转化率

转化率分析 ( 有序漏漏 斗 ) 路路径 : 首 页 - 搜索 - 菜品 - 下单 - 支付 2017.11.11 1 小时北北京市 ios 日期 :2017-11-11 page = 首 页 时间窗 口 :1 小时 page = 搜索 页 and keyword = 中餐 page = 菜品 页 城市 : 北北京 page = 下单 页 and price > 100 操作系统 :ios page = 支付成功

数据探查 UUID timestamp page city keyword AAA 100 首 页 北北京 AAA 102 搜索 页 北北京 中餐 AAA 130 菜品 页 北北京 BBB 102 首 页 北北京 BBB 103 首 页 北北京 BBB 140 搜索 页 北北京 西餐 CCC 101 首 页 上海海 CCC 110 菜品 页 上海海 CCC 151 搜索 页 上海海 中餐

直观解法 1:Join 几亿条数据的多层 Join 代价很 高, 时间很 长 select count (distinct t1.id1), count (distinct t2.id2), count (distinct t3.id3) from (select uuid id1, timestamp ts1 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = 首 页 ') t1 left join (select uuid id2, timestamp ts2 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = ' 搜索 页 ' and keyword = ' 中餐 ') t2 on t1.id1 = t2.id2 and t1.ts1 < t2.ts2 and t2.ts2 - t1.ts1 < 3600 left join (select uuid id3, timestamp ts3 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = ' 菜品 页 ') t3 on t1.id1 = t3.id3 and t2.ts2 < t3.ts3 and t1.ts1 < t3.ts3 and t3.ts3 - t1.ts1 < 3600

直观解法 2:UDAF 几亿个 UUID 的聚合 没有 高效的过滤条件 select funnel(timestamp, 3600, ' 首 页 ') stage0, funnel(timestamp, 3600, ' 首 页 ', ' 搜索 页 ', keyword = ' 中餐 ') stage1, funnel(timestamp, 3600, ' 首 页 ', ' 搜索 页 ', ' 菜品 页 ') stage2 from data where timestamp >= 1510329600 and timestamp < 1510416000 group by uuid

问题难点 事件有序 时间窗 口 丰富属性 数据规模 序列列匹配运算 最 大 长度约束下的 埋点完全开放 单天 日志数百亿条 复杂度超过 序列列匹配 属性基数超百万 时间跨度 6 个 月 普通的集合运算 维度下钻分析

坏消息 1. 完全随机的漏漏 斗定义 3. 规模与性能的 矛盾 - 事件组合 时间窗 口完全随机 - 在海海量量数据下实现交互式分析 - 不不能实现完全预计算 2. 不不同粒度的深 入分析 - 多个层次维度, 事件附加属性 - 需要 OLAP 下钻和筛选能 力力

好消息 1. 支持能 力力 : 模式相对确定 3. 数据特点 : 入库不不会修改 - 核 心是集合运算和去重计数 - 可能构建索引 - 不不需要完整的 SQL 能 力力 2. 使 用场景 : 查询并发度低 4. 业务特点 : 指标收敛较快 - 主要是 人 工探索式分析 - 重点分析转化率偏低的场景 - 可以调度所有资源 - 可能快速过滤

问题本质 多维分析和序列列匹配下的去重计数

实现 目标 实现多维分析和序列列匹配下的去重计数 支持海海量量数据 交互式响应 可能利利 用索引或有限预处理理等 手段 充分利利 用资源的 算法和系统

问题分析 算法思路路 工程实现 性能优化 总结

对应策略略 根据多个维度做 筛选 UUID 内事件 按照时间排序 漏漏 斗每层节点 符合条件的 UUID 计数 实现多维分析和序列列匹配下的去重计数 支持海海量量数据 交互式响应 可能利利 用索引或有限预处理理等 手段 充分利利 用资源的 算法和系统

数据探查 UUID 的事件没有排序 序列列匹配困难 UUID timestamp page city keyword AAA 100 首 页 北北京 AAA 102 搜索 页 北北京 中餐 AAA 130 菜品 页 北北京 BBB 102 首 页 北北京 BBB 103 首 页 北北京 BBB 140 搜索 页 北北京 西餐 CCC 101 首 页 上海海 CCC 110 菜品 页 上海海 CCC 151 搜索 页 上海海 中餐

数据整理理 需要遍历每个 UUID 维度筛选和序列列匹配都很慢 UUID event1 event2 event3 event n AAA ts = 100 page = 首 页 city = 北北京 ts = 102 page = 搜索 页 city = 北北京 keyword = 中餐 ts = 130 page = 菜品 页 city = 北北京 BBB ts = 102 page = 首 页 city = 北北京 ts = 103 page = 首 页 city = 北北京 ts = 140 page = 搜索 页 city = 北北京 keyword = 西餐 CCC ts = 101 page = 首 页 city = 上海海 ts = 110 page = 菜品 页 city = 上海海 ts = 151 page = 搜索 页 city = 上海海 keyword = 中餐

构建索引 维度对应的 UUID 集合需遍历 序列列匹配更更困难 key value1 value2 value3 value n page = 首 页 UUID = AAA ts = 100 UUID = BBB ts = 102 UUID = CCC ts = 101 UUID = BBB ts = 103 page = 搜索 页 UUID = AAA ts = 102 UUID = BBB ts = 140 UUID = CCC ts = 151 page = 菜品 页 UUID = CCC ts = 110 UUID = AAA ts = 130 city = 北北京 UUID = AAA ts = 100 UUID = AAA ts = 102 UUID = BBB ts = 102 UUID = BBB ts = 103 city = 上海海 UUID = CCC ts = 101 UUID = CCC ts = 110 UUID = CCC ts = 151 keyword =

索引优化 基于 UUID 集合快速过滤, 迅速收敛 UUID 对应的时间序列列集中读取 key UUID collection sequence page = 首 页 AAA,BBB,CCC AAA(100), BBB(102,103), CCC(101) page = 搜索 页 AAA,BBB,CCC AAA(102), BBB(140), CCC(151) page = 菜品 页 AAA,CCC AAA(130),CCC(110) city = 北北京 AAA,BBB AAA(100,102,130), BBB(102,103,140) city = 上海海 CCC CCC(101,110,151) keyword =

索引设计 0 12768 15162 page = bitmap:1,3,5,7,9, 1: 1493568000, 1493609880, 3: 1493696280, 1493699880, page = bitmap: 2, 4, 6, 8, 10,... 2: 1493568722, 1493609873,... 4: 1493620787, 1493669382,...... keyword = bitmap: 1, 2, 3, 5, 7,... 1: 1493568000, 1493609880,... 2: 1493568722, 1493609873,...... UUID Collection Bitmap UUID sequence Index File Trailer page = : 0, 12768 page = : 12768, 2394 keyword = : 15162, 379105...

组合索引 {"expr": "page = 首 页 "}, {"expr": "page = 搜索 页 and keyword in ( 中餐, 西餐 ) }, {"expr": "page = 菜品 页 "} page = AND child = 2 page = page = OR child = 2 keyword = keyword =

查询过程 page = UUID page = UUID page = UUID

序列列匹配 starttimestamp : 100, endtimestamp : 130, maxwindow : 10 page = AAA 100 110 115 120 130 140 150 page = AAA 90 99 101 106 114 116 120 page = AAA 85 95 100 112 113 115 140

核 心思路路 查询条件 索引构建 维度筛选的表达 基于 bitmap 快速过滤 通过时间戳 序列列匹配 按照属性值分别构建索引包括 bitmap 和 sequence 两部分 多个维度表达为 AND/OR 组合条件 转换为索引树 维度间的过滤 节点间的过滤 非常适合快速收敛 匹配过程需要回溯

问题分析 算法思路路 工程实现 性能优化 总结

具体需求 分布式 REST 服务 计算框架 文件系统

架构权衡 简单 成熟 可控 可调 成熟稳定 简单易易 用 掌控能 力力 工程优化 应 用 广泛 快速落地 深度定制 持续迭代 生态活跃

实际选择 Spring Spark Alluxio 应 用 广泛 文档丰富 简单易易 用 分布式调度框架掌控 力力强可 高度定制专注逻辑 部署简单相对轻量量级异构存储性能优化空间 Netty/Jetty MapReduce HDFS/HBase

整体架构 Master Query Request REST Server SparkContext Spark Master Alluxio Master Slave Spark Worker Slave Spark Worker Slave Spark Worker Alluxio Worker Alluxio Worker Alluxio Worker

工程要点 属性表达树 基于 Bitmap 通过时间戳 查询条件 的组合 快速过滤 序列列匹配 采 用 Json 格式 使 用 采 用差值存储 REST 服务接收 Antlr 解析条件 RoaringBitmap 平均 长度由 8 字节 请求 生成表达树 易易 用, 快速 降到 1.5 字节

问题分析 算法思路路 工程实现 性能优化 总结

核 心关注 眼镜 尺 子 资源利利 用率 JVM 有效 Profiling 手段 CPU 可量量化的指标 内存 内存 GC JStack/JStat 磁盘 时延 / 吞吐 方法热点 JMap/JHat 网络 MAT/JMC

基本优化 : 几分钟 数据按照 UUID 分区 Master Spark 长作业 Query Request REST Server SparkContext Spark Master Alluxio Master Slave Spark Worker Slave Spark Worker Slave Spark Worker Alluxio Worker Alluxio Worker Alluxio Worker

本地化调度 : 分钟内 Master Master Spark Master Spark Master Alluxio Master Alluxio Master Slave Slave Slave Slave 2 3 1 4 1 2 3 4 1 2 3 4 1 2 3 4

内存映射 :10 秒内 Slave Slave 2 2 2 1 2 1 2

Unsafe 调 用 :5 秒内 UserCode ByteBuffer.getInt() UserCode Slice.getIntUnchecked() JavaLibrary getint(ix(nextgetindex((1 << 2)))) NativeCode public native int getint(long var1) NativeCode public native int getint(long var1)

优化历程 10000 5000 1000 时间 ( 秒 ) 100 180 60 10 10 3 1 常规 UDAF 高效索引架构本地化调度内存映射 Unsafe 调 用

问题分析 算法思路路 工程实现 性能优化 总结

发展现状 超百万 亿级 UV 属性埋点 数百亿 事件 数百次 查询 TP95 小于 5 秒

方法总结 项 目阶段 方法要点实际应 用 需求分析 理理解问题本质 基于本质确定 目标 有序漏漏 斗的本质理理解 在此基础上确定实现 目标 算法设计 正反分析, 确定边界 问题拆解与转化, 方案借鉴 坏消息和好消息 直观解法 入 手, 逐步优化思路路 工程实现选型权衡的原则和 方法简单 成熟 可控 可调 优化迭代 眼镜和尺 子 持续抓瓶颈 Profiling 手段和可量量化的指标 常 见的可能瓶颈和对应优化 方法

未来规划 代码开源, 社区共建 功能与性能的迭代 - 留留存统计和路路径分析 - 更更 高的执 行行效率 - 更更紧凑的存储格式 - 更更合理理的系统架构

加 入我们 我们有 近万台机器器, 数百 PB 数据 数 十业务线, 数百分析师 业界突破 :HDFS 异地跨机房,YARN 调度百倍性能提升,Spark 核 心性能优化 我们要 追求极致, 持续深耕的领域专家 充满激情, 挑战 自我的技术新兵 联系 方式 :sunyerui@{meituan.com, gmail.com, apache.org}