《Talkingdata:为数据赋能-敏捷高效的数据处理(29页).pdf》由会员分享,可在线阅读,更多相关《Talkingdata:为数据赋能-敏捷高效的数据处理(29页).pdf(29页珍藏版)》请在三个皮匠报告上搜索。
1、为数据赋能 敏捷高效的数据处理 徐岷峰 TalkingData 资深架构师 数据处理 Data Wrangling ETL:从多种数据源提取数据,做清理、聚合、派生,加载到特定存储 ELT:利用存储的计算能力做数据变换 数据处理的流程 Data Wrangling Data Wrangling TalkingData 遇到的问题 需求 理解不一致/不清晰 沟通成本高 开发 技术栈纷杂 功能重复开发 预计算 缺乏统一的标准与服务 即席查询 多种异构数据 元数据系统 Meta Data System Meta Data System 元数据是定义数据的数据 是实现系统复用的关键 可以直接作为系统的
2、外部接口 元数据驱动 元数据是实现敏捷的关键 元数据是对业务的高度抽象 某种程度上确定了系统的数据边界 Meta-Meta Data Meta Model Meta Data Data Data set Specification Data set Data set Definition 数据源(Data Source) 分区定义(Partition) 数据集(Data Set) 模式(Schema) 数据处理过程(Recipe) 算子(Operator) 元数据规范(meta model) 多维模型(Multi-Dimension) 实体关系模型(ER) 模型(model) Meta Dat
3、a System 实现 Meta Data System JSON 对象 MySql SQLite/Derby 存储 索引ES 检索 MQ 通知 Service Process 部署 数据变换 Data Transform 没有银弹 Data Transform 数据处理的核心 机器学习的基础 (特征工程) 不深奥的技术 却最耗费人力 尤其是维护工作 纷繁的ETL工具: PDI(Kettle) Talend Data Integration Oracle Data Integration DataX 适合的才是最好的 共同的思路: 语义抽象 (Session/JOB/Operator,DAG)
4、 元数据驱动(数据源、目的地、 数据结构、依赖、过程) 执行引擎 数据质量监测 流程监测 数据安全与审计 Data Transform BPMN JSON DAG Sequence condition Operator Function Parameter returnAS Parallelism TalkingData 的解决方案 语义抽象 Data Transform 逻辑计划(DAG) 配置文件 算子库,多种语言实现 通用特性 日志 审计 计量 安全 运行时文件,Jar,.R,.so,.py TalkingData 的解决方案 编译器 Operator Libraries Common
5、Aspect compilerRun Time Files Execute Plan Config Plan DAG Java Python R C/C+ Spark Flink Strom H2O.ai Scikit-Learn 索引服务 Index Service 索引服务 Index Service B+树、跳表、倒排 索引,是数据查找和定位的关键 Bitmap 精准的排重统计 集合运算,Intersect, Union, Except 索引,也是一种数据,可以运算 生成索引 检索 运算 维护 索引服务 Index Service 举个例子: 定义Offset为UserId 时间粒度为天
6、, 索引1(蓝色)代表玩“吃鸡”游戏的用户 索引2(黄色)代表玩“王者”游戏的用户 Bitmap 统计: 今天玩了“吃鸡”或“王者”的用户 今天既玩了“吃鸡”又玩了“王者”的用户 今天玩了“吃鸡”但没玩“王者”的用户 Index Service 索引生成 可适配多种执行引擎,Storm,Flink, Spark 索引存储 支持异构存储 索引查询 查询能力可扩展 支持实时数据查询与运算 元数据驱动 Zookeeper同步状态 架构 SchedulerMetaData Broker ZooKeeper Worker Manager Real Time Cache Execute Engine Ca
7、che Storage MySQLHBase HDFS Index Service Domain Dimension Storage Implementation uniqueKey Index 元数据 Index Service DSL ISQL Filter,维度间的集合运算 查询类型:select,groupby,topN,timeSeries,window,subQuery 返回结果:index,count,idList Logical Plan Physical Plan 固定“场景”的查询 查询 Index Service 按时间粒度分层的多叉树 用bitmap实现的倒排索引 以索
8、引维度做Key 以索引标识作为Offset 二级索引 Year:2019 Bitmap:indexes Month:3 Bitmap:indexes Month:7 Bitmap:indexes Month:12 Bitmap:indexes Day:5 Bitmap:indexes Day:6 Bitmap:indexes Day:30 Bitmap:indexes Day:27 Bitmap:indexes Day:21 Bitmap:indexes Day:30 Bitmap:indexes Index Service 处理方式: 维护-金字塔模型 年数据 月数据 天数据 合并删除导出
9、Index Service 用bitmap存储事件的时序关系: 以时间作为Offset,精度不宜太高,秒 压缩存储:1个RoaringBitmap可以存储1242 个用户在一天内的20个基准事件序列。 (231/3600/24/20) 掩码 不同的二级索引。 有序漏斗 - 时序索引 配合Index Service和关系数据库实现有序漏斗 每日事件发生的用户索引 分群索引 事件明细过滤 UID=28769 8:43:23 EventID = 0EventID = 1EventID = 19 查询引擎 Query Engine Query Engine ETL-ELT Custom Query 异
10、构数据 不同的DSL 查询优化 解耦物理存储和业务逻辑 虚拟表,视图 解决的问题 Data Analysis Query Engine RDBNoSqlFile System Index Service Query Engine 统一的查询接口:SQL 语义优化的逻辑计划 按数据源转化到对应的DSL(物理计划) 通过客户端发送请求,获取数据 元数据:DataSet,特定的转换规则,Client 部署:Library(Jar) 设计思路 Analytics Application JDBC Iinterface Logical Plan with Semantic optimization Ph
11、ysical Plan against specific DSL Client MetaData Data Set Query Engine Query Engine Core: Apache Calcite 新增或改写Adapter: Druid,CarbonData, Kudu 元数据 客户端 实现 Analytics Application JDBC Iinterface Logical Plan with Semantic optimization Physical Plan against specific DSL Client MetaData Data Set Query Eng
12、ine 实例 Query Engine Query Engine Pitfall : 性能降低 10%-30% Cache Bypass optimization and Translation 增强 Analytics Application JDBC Iinterface Logical Plan with Semantic optimization Physical Plan against specific DSL Client MetaData Data Set Query Engine Cache Apache Calcite Summary 需求 理解不一致/不清晰 沟通成本高 开发 技术栈纷杂 功能重复开发 预计算 缺乏统一的标准与服务 即席查询 多种异构数据 Transform ToolIndex ServiceQuery EngineMetaData