Hive数仓总结
大数据产生来源
典型的数据分析系统,要分析的数据种类⽐较丰富,依据来源⼤体可以分为以下⼏部分:
内部数据
如何进⾏埋点
埋点原理
对基于⽤户⾏为的数据平台来说,发⽣在⽤户界⾯的,能获取⽤户信息的触点就是⽤户数据的直接来源,⽽建⽴这些触点的⽅式就是埋点。当这些触点获取到⽤户⾏为、身份数据后,会通过⽹络传输到服务器端进⾏后续的处理。
埋点分类
埋点从准确性⻆度考虑,分为客户端埋点和服务端埋点。**客户端埋点,即客户操作界⾯中,**在客户产⽣动作时对⽤户⾏为进⾏记录,这些⾏为只会在客户端发⽣,不会传输到服务器端;⽽服务端埋点则通常是在程序和数据库交互的界⾯进⾏埋点,这时的埋点会更准确地记录数据的改变,同时也会减⼩由于⽹络传输等原因⽽带来的不确定性⻛险。如下图所示为不同埋点方式对比:
类型 | 代码埋点 | 全埋点 | 可视化埋点 | 服务端埋点 |
---|---|---|---|---|
采集说明 | 嵌入SDK,定义事件并添加事件代码 | 嵌入SDK | 嵌入SDK,可视化圈选定义事件 | 接口调用,数据结构化 |
场景 | 认可业务价值为出发点的行为分析 | 无需采集事件,适用于活动页、着陆页、关键页设计体验衡量 | 用户在页面的行为与业信息关联较少。页面数量多且页面元素较少,对行为数据的应用较浅 | 前后端数据整合 |
优势 | 按需采集,业务信息更完善,对数据的分析更聚焦 | 简单、快捷,与代码埋点相比工作量更小 | 与代码埋点相比工作量更小 | 更灵活,更准确,数据上传更及时 |
劣势 | 与后两种采集方式相比,开发人员工作量更大 | 数据准确性不高,上传数据多,消耗流量大,数据维度单一(仅点击、加载、刷新) | 业务人员工作量较大,改版后需重新定义事件,缺乏基于业务的解读 | 前端交互数据缺失仅服务端数据采集,缺少前端环境数据 |
埋点采集⼯作流程
埋点数据采集维度
埋点⽂档必备要素
要素 | 备注 |
---|---|
事件名称 | 埋点的事件名称,如优惠券领取/优惠券使用 |
事件定义 | 用户点击领取优惠券,则上报该事件 |
包含属性 | 用户进行了该行为,上报事件中需要传输哪些内容,如用户ID、时间、应用版本、 网络环境、手机型号、用户IP、内容ID等;如某些属性在所有事件中都需要上传, 则可以整理公共属性进行管理 |
属性定义 | 说明属性的定义,如用户地址:可以是用户主动上传的地址,如没有则用用户IP代替 |
属性值类型 | 说明传输属性的类型,字符串、数值、bool |
开发名称 | 对应的开发变量名,可以由开发进行补充。如userid、contentid |
当前状态 | 说明当前该变量的状态。如待开发、开发中、验收中、已上线、已下线 |
上线版本 | 说明该内容在哪个版本上进行上线。 |
备注 | 备注中可以记录该属性的变动情况和常见值等内容。 |
案例:优惠券营销场景的事件设计
在整个埋点⼯作流程中,埋点设计环节是最关键的⼀环,在这个环节整体可以根据需求梳理和转化的路径,分为业务分解、分析指标、事件设计、属性设计的四个阶段。其中,业务分解和分析指标,是事件设计和属性设计的关键信息输⼊,通过对业务场景和分析需求的梳理,确认埋点的内容和范围, ⽽事件和属性设计,则是将这些业务分析诉求,转换成⾯向幵发的需求语⾔,让开发能看懂需要他在什么场景和规则下采集哪些数据。接下来,我们以优惠券营销场景为案例,讲述该如何进⾏埋点设计。
埋点采集中常⻅事件属性的类型举例,主要包含⽤户属性、事件属性、对象属性和环境属性四⼤类。
外部数据
1、竞争对⼿数据——爬取数据(电⼦商务⾏业最初对爬⾍的需求来源于⽐价(⽣意参谋,⽣e经));2、国家统计局数据;3、友商提供的数据。
⼤数据特点(5V特点)
⼤数据特点(5V特点):1、Volume(大):体现在数据的采集,计算,存储量都是非常庞大的;2、Variety:(多):体现在数据种类和来源的多样化。其中的种类有:结构化、半结构化和非结构化数据等,而常见的来源有:网络日志,音频,视频,照片等;3、Value(值):体现在数据价值密度相对较低,如大浪淘金,百炼成钢般才能获取到大量信息中的部分有价值的信息;4、Velocity(快):体现在数据增长速度快,处理速度也快,获取数据的速度也要快;5、Veracity(信):数据的准确性和可信性程度高,即数据的质量高。
海量的数据
1、2021年第一季度抖音日活(DAU)数据:峰值约7亿、平均值超6亿;2、2020年拼多多APP平均月活(MAU)跃用户数达7.199亿;3、2020年爱奇艺月活跃用户超5.6亿;4、2019支付宝的日活突破3亿。
传统数据库的存储量
数据库 | 单表建议存储量(条) |
---|---|
Access | 小于10W |
Mysql | 小于500W(数据量多时可以分区处理) |
Oracle | 小于500W(数据量多时可以分区处理) |
传统数据库面临的挑战
1、无法满足快速增长的海量数据存储需求;2、无法有效处理不同类型的数据(图片,音频,视频等);3、计算和处理能力不足。
Hadoop及Hive环境
Hadoop简介
Hadoop是什么?简单来说, Hadoop就是解决⼤数据时代下海量数据的存储和分析计算问题。Hadoop不是指具体的⼀个框架或者组件,它是Apache软件基⾦会下⽤Java语⾔开发的⼀个开源分布式计算平台,实现在⼤量计算机组成的集群中对海量数据进⾏分布式计算,适合⼤数据的分布式存储和计算,从⽽有效弥补了传统数据库在海量数据下的不⾜。
Hadoop优点
1、⾼可靠性: Hadoop按位存储和处理数据的能⼒值得⼈们信赖;2、⾼扩展性: Hadoop是在可⽤的计算机集群间分配数据并完成计算任务,这些集群可以⽅便地扩展到数以千计的节点中;3、⾼效性: Hadoop能够在节点之间动态地移动数据,并保持各个节点的动态平衡(保证不会出现其中一个节点在拼命工作,而其他节点没事干的情况),因此处理速度⾮常快;4、⾼容错性: Hadoop能够⾃动保存数据的多个副本(如果一台计算机出的错,不会打扰其他副本的计算机的继续操作),并且能够⾃动将失败的任务重新分配;5、低成本: Hadoop是开源的,项⽬的软件成本因⽽得以⼤⼤降低。
Hadoop生态圈
分布式存储文件系统(HDFS)
现在企业环境中, 单机容量无法存储大量数据,需要跨机器[集群]存储,而统一管理分布在集群上的文件系统称之为分布式文件系统。HDFS(Hadoop Distributed Fill System) 是Hadoop项目的子项目,使用多台计算机存储文件,并且提供统一的访问接口(NameNode),像是访问一个普通文件系统一样使用分布式文件系统。
HDFS的工作原理就是:将⽂件切分成固定⼤⼩的数据块block(⽂件严格按照字节来切,所以若是最后切得小⼀点点,也算单独⼀块,hadoop2.x默认的固定⼤⼩是128MB,不同版本的默认值不同,可以通过Client端上传⽂件设置)。比如一个200M,系统就会将其切割成128M和72M两块分别放置在两个不同的节点上,并且对每一块进行备份,默认备份2份,加上自己就有3份,对于不同的副本,存储在不同的节点上,就是因为其分布式存储及多副本备份实现了Hadoop的容错性及工作量的均衡。
HDFS的优点是:1、分布式存储;2、支持分布式和并行计算;3、水平可伸缩性。
HDFS基本组件
1、HDFS Client : 提供命令管理HDFS
2、NameNode:管理整个文件系统的元数据;工作职责:管理元数据、维护目录结构、响应客户端请求。
3、DataNode:复制管理用户的文件数据块;工作职责:管理用户提交的数据与心跳机制块报告。
4、SecondaryNameNode:NameNode的助理,帮助加载元数据,紧急情况下(例如NameNode宕机),可以帮助恢复数据。
HDFS四大机制
1、心跳机制(Master/Slave结构, Master是NameNode, Slave是DataNode):默认DataNode向NameNode发送请求的时间间隔为3s。默认NameNode向DataNode发送请求的时间间隔为5min。NameNoder如果长时间没有接收到DataNode的心跳,也会每隔一段时间(5min)向DataNode发送请求,一共会发两次。
2、安全模式:HDFS集群正常冷启动时,NameNode也会在safemode状态下维持相当长一段时间,等待它自动退出安全模式即可。
3、副本存放策略:将每个文件的数据进行分块存储,每一个数据块有保存有多个副本,这些数据块副本分布在不同的机器节点上。
4、负载均衡:机器容量最高的那个值和最低的那个值差距不能超过10%。
分布式计算(MapReduce)
MapReduce为海量的数据提供了计算。MapReduce从它名字上来看就⼤致可以看出个缘由,两个动词Map和Reduce, “Map(展开) ”就是将⼀个任务分解成为多个任务, “Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。 MapReduce采⽤"分⽽治之"的思想,简单地说, MapReduce就是"任务的分解与结果的汇总"。总之MapReduce 是一种分布式并行编程框架,其中MapReduce的策略是:分而治之;而MapReduce的理念是:计算向数据靠拢而不是数据向计算靠拢。
MapReduce 体系架构(主从(Master/Slave)架构)
client(客户端):通过Client可以提交用户编写的应用程序,用户通过它将应用程序提交到 JobTracker端,用户也可以通过Client提供的一些接口去查看之前提交作业的运行状态。
JobTracker:资源的监控和作业的调度。监控底层的其他的TaskTracker以及当前运行的Job的健康状况,一旦探测到失败的情况就把这个任务转移到其它节点继续执行跟踪任务执行和资源使用量。
TaskTracker: 执行具体的相关任务一般接受Job Tracker 发送过来的命令(如启动新任务,杀死任务等),把一些自己的资源使用情况,以及任务的运行进度通过心跳的方式也就是heartbest发送给JobTracker。
Task: 分为MapTask和Reduce Task两种,均由TaskTracker启动。HDFS以固定大小的block为基本单位存储数据,而对于MapReduce而言,其处理单位是split。它的划分方法完全由用户自己决定。但需要注意的是,split的多少决定了MapTask的数目,因为每一个split只会交给一个MapTask处理。split与block的关系图如下:
Mapreduce工作流程
数据仓库
数据仓库含义
数据仓库(Data Warehouse),简称DW。数据仓库顾名思义,是⼀个很⼤的数据存储集合,出于企业的分析性报告和决策⽀持⽬的⽽创建,对多样的业务数据进⾏筛选与整合。它为企业提供⼀定的BI(商业智能)能⼒,指导业务流程改进。
数据仓库解决什么问题
数据仓库从⼤的⽅向来说解决三类问题:存储,快速提取,跨部⻔应⽤。
数据仓库作用
数据仓库的作用:1、历史数据积存及处理能力问题(分布式存储与处理);2、将各种数据源整合到一起统一数据中心,解决数据壁垒(数据仓库的集成性特点)。3、规范表、字段名称,统一字段数据格式,完善注释内容。4、生产适合OLAP(面向分析)的大宽表,方便用户多维度快速分析(仓库的主题性特点)。5、数据质量的保证和指标口径的一致性。
抖音的用户播放记录、拼多多的用户行为日志、爱奇艺的用户行为日志、支付的支付记录,不会发生变更的实时数据以及历史存档数据都可以放入到数仓中。
常见的数据仓库产品
数据仓库的主要特征
数据仓库的主要特征是:1、⾯向主题的;2、集成的;3、稳定的(不易丢失的);4、时变的(反映历史变化的)。
数据仓库与数据库区别
1、数据库与数据仓库的区别实际讲的是OLTP(面向事务)与OLAP(面向分析)的区别:
2、数据仓库的出现,并不是要取代数据库:
差异项 | 数据库 | 数据仓库 |
---|---|---|
特征 | 操作处理 | 信息处理 |
面向 | 事务 | 分析 |
用户 | DBA、开发 | 经理、主管、分析人员 |
功能 | 日常操作 | 长期信息需求、决策支持 |
DB设计 | 基于ER模型,面向应用 | 星形/雪花模型,面向主题 |
数据 | 当前的、最新的 | 历史的,跨时间维护 |
汇总 | 原始的、高度详细 | 汇总的,统一的 |
视图 | 详细、一般关系 | 汇总的,多维的 |
工作单元 | 短的、简单事务 | 复杂查询 |
访问 | 读/写 | 大多为读 |
关注 | 数据进入 | 信息输出 |
操作 | 主键索引操作 | 大盘的磁盘扫描 |
用户数 | 数百到数亿 | 数百 |
DB规模 | GB到TB | 大于等于TB |
优先 | 高性能,高可用性 | 高灵活性 |
度量 | 事务吞吐量 | 查询吞吐量,相应时间 |
数据仓库元数据管理
元数据(MetaData),主要记录数据仓库中模型的定义,各层级间的映射关系、监控数据仓库的数据状态及ETL的任务运⾏状态,⼀般会通过元数据质量库(Metadata Repository)来统⼀地存储和管理元数据,其主要⽬的是使数据仓库的设计、部署、操作和管理能达成协同和⼀致,保证数据质量。
元数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使⽤和维护。
构建数据仓库的主要步骤之⼀是ETL,这时元数据将要发挥重要的作⽤,它定义了源数据系统到数据仓库的映射、数据转换的规则、数据仓库的逻辑结构、数据更新规则、数据导⼊历史记录以及装载周期等相关内容。数据抽取和转换的专家以及数据仓库管理员正是通过元数据⾼效地构建数据仓库。
⽤户在使⽤数据仓库时,通过元数据访问数据,明确数据项的含义以及定制报表数据仓库的规模及其复杂性离不开正确的元数据管理,包括增加或移除外部数据源,改变数据清洗⽅法,控制出错的查询以及安排备份等。
元数据分为技术元数据和业务元数据:1、技术元数据为开发和管理数据仓库的IT⼈员使⽤, 描述了与数据仓库开发、管理和维护相关的数据,包含数据源信息、数据转换描述、数据仓库模型、数据清洗与更新规则、数据映射和访问权限等;2、业务元数据为管理层和业务分析⼈员服务,从业务⻆度描述数据包括商务术语、数据仓库中有什么数据、数据的位置和数据的可⽤性等。
元数据不仅定义了数据仓库中数据的模式、来源、抽取和转换规则等、⽽且是整个数据仓库系统运⾏的基础,它把数据仓库系统中各个松散的组件联系起来,组成了⼀个有机的整体。
数据治理
数据是企业核⼼资产,数据治理能成就企业(特别是银⾏)的未来。它涉及数据质量、数据管理、数据政策、商业过程管理、⻛险管理等多个领域。
脏数据的种类
数据治理原则
数据仓库工具(Hive)
Hive是Facebook为了解决海量日志数据的统计分析而开发的基于Hadoop的一个数据仓库工具(后来开源给了Apache软件基金会),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能.HQL。
Hive特点
1、Hive 本身并不支持数据存储和处理,只是一个面向用户的编程接口;2、Hive 依赖分布式文件系统HDFS存储数据;3、Hive 依赖分布式并行计算模型MapReduce 处理数据;4、借鉴SQL语言设计了新的查询语言HQL。
HQL 转换为 MapReduce原理
假如我们有两个表:
直接抽取
select uid,gender from user;