Apache Kylin 在甜橙金融的大数据应用

2018年7月在 Apache Kylin meetup@上海活动上,甜橙金融架构师介绍了在数据量爆炸场景下,如何使用 Apache Kylin 解决分析慢分析难的问题。
展开查看详情

1.个人简介 马骏杰 甜橙金融数据分析平台架构师 5年大数据领域工作经验,主要专注在数据安 全,数据离线计算方向。曾在IBM,Intel团 队中参与大数据开源项目的研发工作 Apache Sentry Committer Apache Sqoop Committer Apache Hive Contributor Email: majunjie@bestpay.com.cn 微信号: colinmjj 1

2.分享概要 n 背景介绍 n 甜橙BI系统演进 n Kylin的应用 n Q&A 2

3.背景介绍 3

4.关于甜橙金融 天翼电子商务有限公司是中国电信股份有限公司的全资子公司,成立于2011年3月, 是中国电信布局互联网金融的重要板块,是互联网金融行业领先的创新企业,是中 国人民银行核准的第三方支付机构、中国证监会核准的基金支付结算机构,甜橙金 融是其核心品牌。 甜橙金融注册用户突破5亿,月均活跃3000多万用户,年交易额超1, 700亿。旗下拥 有翼支付、红包套餐、甜橙理财、橙分期、甜橙保险、甜橙国际、甜橙信用等业务 4

5.业务数据处理流程 应用层 即席查询 报表系统 仪表盘 OLAP 应用 DM层 根据需求生成实际应用的表 整合 DW层 渠道主题 地域主题 营销活动主题 清洗 ODS层 用户信息1 交易信息 用户信息2 商户信息 抽取 外部数据源 DB1 DB2 DB3 5

6.甜橙BI系统演进 6

7.业务问题 n 总数据量: 2.2 PB n 每天数据增量: 1.5T 7

8.BI解决方案-version1 报表系统/OLAP Oracle Hive数据仓库 外部数据源 Ø 同步schema问题 Ø 二次开发问题 8

9.BI解决方案-version2 LDAP 用户 拖拉拽 UI SQL sql解析 权限认证 权限认证中心 执行引擎选择 9

10.甜橙大数据处理框架 Hive Kylin Spark Elastic Presto Hbase Sqoop DataX search Yarn Alluxio/Ignite HDFS 10

11.Kylin的应用 11

12.Kylin的优势 未使用Kylin 使用Kylin 自定义SQL,完成数据 数据准备 定义Cube,支持多维度 聚合的预处理 查询速度 慢 快 维护成本 高 低 需求响应 慢 快 增加Hbase存储空间, 存储空间 增加了自定义聚合表,没 通过字典映射减少存储 有任何字典映射 空间 12

13.Kylin的优势 查询 订单表 140 大小: 3.5T 125 行数: 14亿 120 100 80 60 SQL语句 40 25 “select 省份, count(1) 20 from 订单表 2 group by 省份” 0 query Hive Hive2(预计算) Kylin 13

14.Kylin部署 甜橙BI系统 负载均衡(Nginx) Job Query Query Hbase集群 Query Query Query Kylin集群 Hadoop集群 14

15.如何使用Kylin(组件优化) MapJoin Vectorization CBO Execution Engine Resource allocation GC Temp Storage Compression GC Region 15

16.维度/度量 用户Id 城市 时间 支付类型 消费金额 001 上海 2018/01/01 银行卡 100 002 北京 2018/01/01 余额 200 001 北京 2018/01/02 余额 300 用户维度 Sum(消费金额) 城市维度 Distinct(用户) 001 400 上海 1 002 200 北京 2 16

17.未优化的Kylin Cube A: 用户ID B: 城市 C: 时间 D: 支付类型 A,B,C,D A,B,C A,B,D A,C,D B,C,D A,B A,C A,D C,D B,C B,D A B C D * 17

18.如何使用Kylin(维度优化) 层级维度 A,B,C,D 年 月 日 支付类型 A,B,C A,B,D 省份 市 地区 支付类型 A,B A,D A D 必要维度 A,B,C,D A,B,C A,B,D A,C,D 用户 城市 时间 支付类型 A,B A,C A,D A 18

19.如何使用Kylin(维度优化) 聚合组 A,B,C,D 联合维度 A,B,C,D A,B C,D A,B,C D A B C D 衍生维度 支付类型 支付金额 User_FK PK 年龄 性别 银行卡 100 1 1 20 男 余额 200 2 2 30 女 19

20.存在的问题 20

21.Kylin在甜橙金融的问题 使用Spark构建cube的时候,会经常出现内存超设置,然后容器被kill的状 况,目前临时调高 spark.yarn.executor.memoryOverhead。 4D-层 A,B,C,D 3D-层 A,B,D A,C,D B,C,D 2D-层 A,D C,D B,C B,D 21

22.Kylin在甜橙金融的问题 Count(Distinct) 效率比其它聚合操作慢(Sum, Count, Max) “select city, count(distinct user_id) from order group by city” String Int(byte,short) Trie Tree(编码) BitMap 22

23.BitMap简述 用户Id 城市 时间 支付类型 消费金额 U001 上海 2018/01/01 银行卡 100 U002 北京 2018/01/01 余额 200 U001 北京 2018/01/02 余额 300 用户Id编码: 城市维度 BitMap U001 -> 1 上海 10 U002 -> 2 北京 11 23

24.Kylin 在甜橙金融的问题 Kylin 嵌套查询效率不满足需求, 但是Kyligence Enterprise 可以 “select prov_nm, count(1) from ( select prov_nm, count(1) as cnt from order_detail group by prov_nm,city_nm,pay_type,mchnt_type,merchant_id,store_id having count(1) > 5 查询 ) as zz 140 group by prov_nm” 120 115 100 93 80 60 40 20 5 0 query Hive Kylin KAP 24

25.Kylin 在甜橙金融的问题 不支持定时调度功能 在任务调度系统中,通过脚本调用RestApi,实现定时build cube。 25

26.Q & A

Kyligence (上海跬智信息技术有限公司)由首个来自中国的 Apache 软件基金会顶级开源项目 Apache Kylin 核心团队组建,是专注于大数据分析领域的数据科技公司,通过前沿数据技术的分析认知来加速用户关键商业决策是其使命。