大数据之数仓一面内容以及感受

等我有空再来写吧

1.项目

2.hadoop搭建流程

  1. 关闭虚拟机的防火墙
  2. 安装jdk
  3. 修改主机
  4. 安装ssh,并配置免密登入
  5. 修改hosts文件
  6. 做时间同步
  7. 上传hadoop包,解压
  8. 配置环境变量
  9. 配置core-site.xml,hdfs-stite.xml,yarn-site.xml,mapred-site.xml,hadoop-env.sh,slaves(workers)
  10. 格式化

3.mr的流程

1.一个mr程序启动的时候,最先启动的是MRAppMaster,MRAppMaster启动后根据本次job的描述信息,计算出需要的maptask实例数量,然后向集群申请机器启动相应数量的maptask进程

2.maptask进程启动之后,根据给定的数据切片范围进行数据处理,主体流程为:

2.1 利用客户指定的inputformat来获取RecordReader读取数据,形成输入KV对

2.2 将输入KV对传递给客户定义的map()方法,做逻辑运算,并将map()方法输出的KV对收集到缓存

2.3 将缓存中的KV对按照K分区排序后不断溢写到磁盘文件

3.MRAppMaster监控到所有maptask进程任务完成之后,会根据客户指定的参数启动相应数量的reducetask进程,并告知reducetask进程要处理的数据范围(数据分区)

4.Reducetask进程启动之后,根据MRAppMaster告知的待处理数据所在位置,从若干台maptask运行所在机器上获取到若干个maptask输出结果文件,并在本地进行重新归并排序,然后按照相同key的KV为一个组,调用客户定义的reduce()方法进行逻辑运算,并收集运算输出的结果KV,然后调用客户指定的outputformat将结果数据输出到外部存储

4.数仓建模

三大模型

5.三范式

第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以此类推。一般说来,数据库只需满足第三范式(3NF)就行了。所以这里就只记录三范式相关的知识。

1、1NF:字段不可分,每个字段是原子级别的,上节中看到第一个字段为ID,它就是ID不能在分成两个字段了,不能说我要把这个人的ID、名称、班级号都塞在一个字段里面,这个是不合适的,对以后的应用造成很大影响;

2、2NF:有主键,非主键字段依赖主键,ID字段就是主键,它能表示这一条数据是唯一的,有的读者朋友记性很好,“unique”表示唯一的、不允许重复的,确实它经常会修饰某个字段,保证该字段唯一性,然后再设置该字段为主键;

3、3NF:非主键字段不能相互依赖,这个怎么理解呢,比如student表,班级编号受人员编号的影响,如果在这个表中再插入班级的班主任、数学老师等信息,你们觉得这样合适吗?肯定不合适,因为学生有多个,这样就会造成班级有多个,那么每个班级的班主任、数学老师都会出现多条数据,而我们理想中的效果应该是一条班级信息对应一个班主任和数学老师,这样更易于我们理解,这样就形成class表,那么student表和class表中间靠哪个字段来关联呢,肯定是通过“classNo”,这个字段也叫做两个表的外键,后面讲约束的时候老韩会重点讲这个,读者朋友先有个大致了解;

6.数据集市和数仓

6.1.数据仓库和数据集市的概念

数据仓库:是一个集成的面向主题的数据集合,设计的目的是支持DSS(决策支持系统)的功能,在数据仓库里,每个数据单元都和特定的时间相关。数据仓库包括原子级别的数据和轻度汇总的数据。数据仓库是面向主题的、集成的、不可更新的(稳定性)、随时间不断变化(不同时间)的数据集合,用以支持经营管理中的决策制定过程。
不能将数据仓库简单地理解成一套软件,数据仓库是重建企业数据流和信息流的过程,在这个过程中,构造企业的决策支持环境,以区别原来的业务系统所构建的操作型环境。数据仓库的价值并不是你在仓库中所存储的数据量的多少,而关键在于从仓库中能够获得的信息和分析结果的质量。
数据集市:是一个小型的部门或工作组级别的数据仓库。有两种类型的数据集市——独立型和从属型。独立型数据集市直接从操作型环境获取数据。从属型数据集市从企业级数据仓库获取数据。从长远的角度看,从属型数据集市在体系结构上比独立型数据集市更稳定。
独立型数据集市的存在会给人造成一种错觉,似乎可以先独立地构建数据集市,当数据集市达到一定的规模可以直接转换为数据仓库,然而这是不正确的,多个独立的数据集市的累积并不能形成一个企业级的数据仓库,这是由数据仓库和数据集市本身的特点决定的。如果脱离集中式的数据仓库,独立的建立多个数据集市,企业只会又增加了一些信息孤岛,仍然不能以整个企业的视图分析数据,数据集市为各个部门或工作组所用,各个集市之间又会存在不一致性。当然,独立型数据集市是一种既成事实,为满足特定用户的需求而建立的一种分析型环境,但是,从长远的观点看,是一种权宜之计,必然会被企业级的数据仓库所取代。

6.2.数据仓库和数据集市之间的区别

在这里插入图片描述

从图中可以看出,数据仓库中数据结构采用的规范化模式(关系数据库设计理论),数据集市的数据结构采用的星型模式(多维数据库设计理论)。数据仓库中数据的粒度比数据集市的细。上图只反映了数据结构和数据内容的两个特征,对于其他区别如下表所示,并且简单的以银行为例进行说明。

在这里插入图片描述
假设为某银行构建一个分行级别的数据仓库,再为该分行国际业务部构建数据集市。数据仓库的数据来源于银行的业务系统,包括:储蓄、卡、个贷、外汇宝、中间业务等等,分析的主题包括客户、渠道、产品等。数据仓库的数据粒度根据分析的要求而定,一般包括具体的历史记录(存款、取款、外汇交易、POS 消费、中间业务缴费记录),然后,将这些记录汇总到天/周/月/季度/年等各个层次,具体数据的粒度由分析的需求而定。另外,数据仓库还存储一些业务逻辑——为分析而计算的一些指标。比如,客户的价值或客户的忠诚度。这些指标的计算不能通过单一的业务系统,需要在所有业务上综合考虑,这也是数据仓库系统的优点之一。假设整个分行有20 万个客户,那么数据仓库将包含20 万个客户的所有业务的历史数据、汇总数据、以及数据仓库指标数据,数据量会达到几十甚至数百G(这只是非常小规模的数据仓库)。数据仓库为了满足全行所有部门用户的查询和分析,只能采用范式化设计,这样不管用户有什么需求,只要有数据存在,就能满足。再假设国际业务部门的客户有2 万人(使用外汇宝),如果不构建数据集市,他们会直接在数据仓库上查询相关的信息,比如外汇宝客户去年一年外汇交易额在各种交易方式上(柜台、网上、电话银行等)的分布。查询的效率和性能是非常低的,如果各个部门的所有用户都直接在数据仓库上查询相关的信息,数据仓库的性能会下降,而且无法满足用户对性能的需求,谁都不愿意为一个简单的查询等待数分钟甚至数小时。因此,构建部门级的数据集市是非常必要的,主要基于性能上的考虑。国际业务部门的数据集市包括2 万个客户的外汇交易历史,以及汇总,采用星型模式(或雪花,或两者混合),以方便OLAP 工具的查询和分析。从这个简单的例子,可以看出,数据集市的数据来源于数据仓库,主要是经过重新组织的汇总数据。因此,多个数据集市不能构成一个企业级的数据仓库,借用Inmon 的比喻:我们不可能将大海里的小鱼堆在一起就构成一头大鲸鱼。这也说明了数据仓库和数据集市有本质的不同。
跟随数据仓库和数据集市的概念,数据仓库的设计方法也分为三种:自顶而下,自下而上,以及两者的混合。所谓自顶而下是先建立一个企业级的数据仓库,再建立各个数据集市,自下而上与此相反,混合的方法是要求在建立数据集市时,同时考虑企业级数据仓库的结构、内容。

7.校内经历

8.反问环节

猜你喜欢

转载自blog.csdn.net/qq_42706464/article/details/109048596