您好!欢迎光临这里是您的网站名称,我们竭诚为您服务!
定制咨询热线067-41122781
您的位置:主页 > 工程案例 > 案例展示三 >
联系我们

CSGO赛事押注岗亭有限公司

邮 箱:admin@mayadetectors.com
手 机:18629120745
电 话:067-41122781
地 址:广东省肇庆市兴化市和平大楼984号

搜狐智能媒体数据堆栈体系建设实践

发布时间:2021-11-24 00:58:01人气:
本文摘要:本次分享的主题为搜狐智能媒体数据堆栈体系建设实践,会对数据堆栈中的基本观点举行简朴梳理,明确数据堆栈体系建设涵盖的相关流程,主要划分为批量 ( 非实时 ) 数据处置惩罚和实时数据处置惩罚两大部门:批量数据处置惩罚:凭据差别的业务需求场景,需要对数据举行分层,上层数据基于底层数据通过aggregation、join等盘算生成,上层数据生产任务依赖于底层数据发生任务,任务调理治理成为批量数据处置惩罚的一个焦点功效诉求,以及由此衍生出的数据血缘治理、数据质量治理、数据权限治理等等

CSGO赛事押注

本次分享的主题为搜狐智能媒体数据堆栈体系建设实践,会对数据堆栈中的基本观点举行简朴梳理,明确数据堆栈体系建设涵盖的相关流程,主要划分为批量 ( 非实时 ) 数据处置惩罚和实时数据处置惩罚两大部门:批量数据处置惩罚:凭据差别的业务需求场景,需要对数据举行分层,上层数据基于底层数据通过aggregation、join等盘算生成,上层数据生产任务依赖于底层数据发生任务,任务调理治理成为批量数据处置惩罚的一个焦点功效诉求,以及由此衍生出的数据血缘治理、数据质量治理、数据权限治理等等一系列功效,这方面也有不少开源的产物,但在设计上或多或少都存在一些问题,本次演讲会先容搜狐智能媒体团队自研的任务调理治理、元信息治理、数据质量治理、数据权限治理等系统的技术实践;实时数据处置惩罚:现在业界的焦点都在stream processing系统上,但针对许多aggregation、join等应用场景,stream processing并不能很好的胜任,能够支持数据实时导和MPP查询引擎的系统--好比Apache Doris,才气很好地满足这些应用场景,本次演讲会先容Apache Doris在搜狐智能媒体的一些技术实践。01数据堆栈体系建设主要事情1. 数据堆栈界说数据堆栈是1991年Bill Inmon在《Building the Data Warehouse》中最开始提出的观点。

数据堆栈的界说是一个面向主题的、集成的、相对稳定的、反映历史变化的数据荟萃,用于支持治理决议。从界说中,可以看出数据堆栈不仅仅是一个数据存储盘算软件或产物,而是包罗整个数据分析处置惩罚历程体系。

2. 数据分析数据堆栈主要是供应数据数据分析使用的,其分类主要参考商业智能分为三大部门:Data Reporting:分析维度较少,延迟较低,并发度较高OLAP:分析维度、延迟和并发度都比力适中Data Mining:分析维度可能几百上千,维度较多,对于延迟的容忍度较高,一般用户较少,并发度较低3. OLAPOLAP是数据堆栈中最经常使用数据处置惩罚和分析技术,是Edgar F.Codd在1993年揭晓于《Providing OLAP(On-line Analytical Processing) to User-Analysts:An IT Mandate 》论文中。OLAP主要是针对OLTP对比来说的:OLTP:支持业务处置惩罚,操作数据或者业务数据,不适合支持决议分析OLAP:支持决议分析、多维分析/多维数据库上方图中可以看出,OLTP发生的业务数据汇总到OLAP的数据堆栈中,然后数据堆栈中发生的分析效果会促进业务系统的革新。

4. 多维模型 ( Multidimensional Model)前面提到的多维分析是建设在多维模型之上的:多维模型就是OLAP中的数据组织范型主要观点:多维数据集 ( Cube );维度 ( Dimension );维度条理 ( Hierarchy );维度级别 ( Level );维度成员 ( Member );怀抱/指标 ( Measure )多维分析操作:上卷 ( Roll-up );下钻 ( Drill-down );切片 ( Silce );切块 ( Dice );旋转 ( Pivot )5. 多维分析操作① 上卷虽然多维分析都是对立方体的操作,可是可以映射到关系模型的sql语句上来;上卷就是通过group by把一些多的维度去掉。② 下钻下钻操作,对应到关系模型的sql语句就是对一些低条理维度举行group by。③ 切片切片操作,对应到关系模型的sql语句就是增加一个where条件。④ 切块切块操作,对应到关系模型的sql语句就是增加两个where条件。

⑤ 旋转旋转操作,对应到关系模型的sql语句就是select时,把列的顺序重新编排一下。6. OLAP Cube构建Cube构建主要包罗两类:维度构建:扩展 ( 例如:a. 通过时间戳字段扩展天、小时和分钟维度;b. 使用Id关联将维度表的属性放到Cube内里来 );剪裁 ( 类似于上卷操作,缩减维度 )指标构建:团结 ( 指标在两个Cube内里,通过union all方式放到一个Cube内里 )7. OLAP多维数据库OLAP多维数据库根据存储花样划分:ROLAP:基于关系型模型的数据库MOLAP:基于多维模型的数据库,如上图所示,将差别的维度组成一个CuboId,然后将效果存储到KV数据库中,MOLAP或许就是这样HOLAP:就是讲ROLAP和MOLAP的一些特点综合起来ROLAP和MOLAP对比来看:查询速度:严格根据多维分析方式查询,MOLAP查询速度会更快一些,可是现在随着ROLAP的几十年生长,包罗漫衍式和索引的一些优化,查询速度已经开始靠近于MOLAP装载速度:因为MOLAP需要做一些组合,所以装载速度慢于ROLAP存储空间:MOLAP存储空间膨胀还是比力厉害的,所以要大于ROLAP分析灵活性:MOLAP基本上只能基于KV查询,ROLAP是基于关系型的,灵活性上MOLAP要比ROLAP差的较多8. 维度建模提到ROLAP就要提到维度建模,维度建模是数据堆栈另一位大师Ralph Kimall提倡的,关系建模方法,就是将维度模型映射到关系模型:维度表事实表星型模型/雪花模型/星座模型9. 表分层另一个比力重要的就是数据堆栈都是面向主题的,一般建立Cube都市对表举行分层,主要分为下面几个条理:STG原始数据层、ODS操作数据层、DWD明细数据层、DWS汇总数据层、ADS应用数据层、DIM维度层。这样分层的优势是:防止烟囱模式,淘汰重复开发将庞大问题简朴化条理清晰,便于使用和明白10. 数据堆栈体系架构此处数据堆栈体系架构主要参考了Lambda架构,根据数据时效性,分为实时层和批量层,只做新增和读取,一般不做删除和修改:批量数据一般是小时级滞后,是最终尺度实时数据一般是秒、分钟级滞后,只作参考批量数据层从原始的业务数据系统或者行为日志系统抽取数据到STG层,然后经由ODS、DWD、DWS层最终到ADS层供应应用方使用;实时数据层一般没有那么多条理,经由Spark Streaming等处置惩罚后直接放到Kafka内里,最后存储到ADS层供应业务系统使用02整体方案上面主要讲了数据堆栈体系建设主要事情,也就是需求;接下来讲一下搜狐智能媒体的相关技术实践。

1. 搜狐智能媒体数据堆栈技术架构首先简朴分析一下盘算泛型,主要是凭据Michael Stonebraker的论文《One Size Fits All》,差别场景选用差别的数据库:批量数据盘算:交互式分析 ( 场景:报表、OLAP、Ad HOC;技术:Impala、Apache Doris );批量处置惩罚 ( 场景:ETL、数据挖掘;技术:Hive、Spark )实时数据盘算:流处置惩罚 ( 场景:ETL、庞大事件处置惩罚;技术:Spark Streaming、Flink );统计分析 ( 场景:报表、Ad HOC;技术:Apache Doris )2. Apache DorisApache Doris是百度开发的MPP架构的分析性数据库,看一下和其他技术选型的对比:Kylin:MOLAP型数据库,因为现在主流应该是ROLAP数据库,所以没有思量ClickHouse/Druid/Elaticsearch:早期的典型的两阶段盘算,没法做庞大的SQL处置惩罚,从分析庞大性角度上没有思量Impala/Presto:现在比力主流是MPP架构的数据库,Presto和Hawq可以认为是查询引擎,依赖HDFS作为存储引擎,HDFS适合批量数据导入,对实时数据导入支持欠好;Impala也是查询引擎,但Impala既可以使用HDFS作为批量数据存储引擎,也可以使用KUDU作为实时数据存储引擎,但Impala的缺点是部署依赖太多,另外kudu只支持Unique Key模式,数据导入性能较Doris差,且对聚合查询不友好03批量数据治理1. 批量数据治理批量数据治理和业界的方案基底细似,分为数据任务治理、数据元信息治理、数据质量治理和数据宁静治理。批量数据处置惩罚都是对全域数据在Hadoop上举行一些分析盘算,最后供应业务层使用;在Hadoop上分析盘算时候我们会举行上述的治理,首先对执行的数据任务举行治理,然后对发生的数据质量举行校验,校验通事后才气给业务方使用,基于这之上做了元信息和宁静的治理。

CSGO赛事押注

2. 数据任务治理① Workflow治理系统数据任务治理实际上就是Workflow的治理,Workflow是指一类能够完全自动执行的谋划历程,凭据一系列历程规则,将文档、信息或任务在差别的执行者之间举行通报与执行;Workflow治理系统通过盘算机软件对事情流的谋划历程举行界说、执行并监控。数据处置惩罚任务Workflow就是将节点通过数据流向依赖在一起,形成DAG有向无环图;可以凭据任务依赖,自动执行任务,在任务之间通报数据。开源的数据堆栈Workflow治理系统:现在用的比力多的框架有外洋的Azkaban、Oozie和Airflow,可是他们都存在一些问题:以Flow为单元举行编辑、治理和公布部署,对多人协同开发不友好庞大的任务依赖不友好,如天依赖小时任务,需要写代码调理的辅助代码新建任务或修复任务,需要有补数据功效,以Flow为单元举行调理,不适合补数据处置惩罚② DAG节点=>任务&实例在数据任务治理中,将DAG节点抽象为两个观点:任务和实例。

任务:用户以任务为单元举行编辑,使用SQL、Shell等举行数据处置惩罚代码,支持最细小时粒度的周期属性,可设置依赖父节点、就近依赖和自依赖以及一些其他属性、告警等实例:按天或小时为单元,凭据任务周期属性,生成一个或多个实例,并制定每个实例运行时间;继续对应任务中的数据处置惩罚代码;凭据任务依赖属性和运行时间动态生成;依赖的父节点运行乐成或者自身运行时间已到则会生成一个实例③ 实例依赖生陋习则上图展示了实例依赖生成的详细规则。④ 实例依赖示例凭据上面举的例子来看上图实例依赖的示例,通过小时级表数据汇总整天级表数据,父任务会在每小时调理一次,子任务在天天的0点9分执行一次,然后凭据父任务的效果发生一个天级此外数据;父任务要设置自依赖,子任务要设置就近依赖,这样就可以通过这样的语义设置很利便地到达业务要求。⑤ 补历史数据先容一下补历史数据的问题,一个大的DAG任务中需要新增数据处置惩罚任务,或者是某个任务运行或逻辑有问题,就把这块的根节点拿出来从对应的时间段开始向下游修复数据,这样的模型实现起来就比力利便了。

3. 数据质量治理表为校验单元:一个任务实例可以发生多张表数据校验规则:以表为单元举行设置;一张表可以对应多个规则;数据行数、关键指标等校验触发:任务实力执行完后触发;严重的质量问题可以阻塞下游实例调理4. 数据元信息治理元信息治理主要功效包罗:表的建立、修改、查询;表的生命周期治理;表的巨细、分区等信息统计;表的名称、字段等搜索;表及字段的血缘关系。主要说一下血缘剖析的做法,这块是设计时候的难点:现在业内的大部门做法是通过hive的hook将字段信息释放出来,然后直接导入到mysql内外面;但现在没有接纳这种方案原因是集群不是自主维护,另外就是它是在任务执行完之后才执行,我们需要在任务生存时候就要举行数据血缘关系的剖析。

在这块有调研一些方案:阿里的Druid提供一些剖析功效,可是对Hive支持不是很好;使用Anltr联合网上开源的一些代码举行剖析,可是对Hive的集成也是有一定问题的;厥后调研了Hive的代码,发现可以重写SematicAnalyzer函数,放到自己代码内里,像是hook那样在生存或者执行代码时候剖析血缘关系。接下来看一下上图的Hive的整个生命操作流程:HQL->Parser->Semantic Analyzer->Logic Plan Generator->Logical Optimizer->Physical Plan Generator->Physical Optimizer->Execution血缘剖析:血缘剖析这块主要分为两部门:表血缘剖析:剖析SQL语句获得抽象语法树;对抽象语法树举行验证和裁剪;遍历抽象语法树获取上游表名 ( TOK_TAB ) 和下游表名 ( TOK_TABREF )字段血缘剖析:注册UDF;重构SemanticAnalyzer;逻辑计划生成和逻辑计划优化;添加postExecHook,执行LineageLogger获得Lineage Context;从LineageContext中组装血缘信息5. 数据宁静治理有了数据血缘关系之后做数据宁静治理就很简朴了,现在只做了表级此外宁静治理,字段级别太庞大,可能会对用户使用发生一定的影响。数据宁静治理流程是:用户针对要使用的表举行权限申请,然后治理者就会对表权限举行审批或者接纳;在数据任务执行前,会举行表权限的校验,如果没有权限则会暂停任务执行,并通过使用方。

04实时数据治理实时数据治理比力简朴一点,表没有很疏散,不需要Workflow方式执行;只需要把Kafka的Topic抽象成一张表,然后在Apache Doris内里再建一张表,将双方字段映射起来,然后下发一个任务,任务方式有两种:一种是写个Sql下发到Spark Streaming导入到Apache Doris内里;另一种是建立一个Doris的Routine Load任务,这内里主要是看Doris的使用,提供代码支持剖析这种Json花样数据,只需要先在Doris内里先建立一张表,然后建立一个Routine Load任务从Kafka中消费Json花样数据直接处置惩罚映射到表中。05总结简朴总结下:我们在做整个项目时的思想是产物化、服务化,可以利便业务对接。在做技术实践时,选择可靠的开源产物和开源代码,并借鉴可靠的业务解决方案,可以资助我们快速实践应用。作者:翟东波 搜狐媒体 资深开发工程师,2018年5月加入搜狐智能媒体研发中心,卖力数据基础系统的研发事情,提升部门数据研发事情效率。

10多年的软件开发事情履历,曾先后供职于中兴、百度、优酷、阿里大文娱、偶数等公司,从事过网络通讯协议、漫衍式OLAP/OLTP数据库、数据处置惩罚任务调理系统等产物的研发事情,专注于漫衍式系统和大数据等技术领域。


本文关键词:CSGO赛事押注,搜狐,智能,媒体,数据,堆栈,体系,建设,实践

本文来源:CSGO赛事押注-www.mayadetectors.com

067-41122781