数仓interview总结

一 数据库

1.1 数据库事务特性ACID

原子性Atomicity,一致性Consistency,隔离性Isolation,持续性Durability

1.2 锁有几种,及范围

从数据库系统角度分为三种:排他锁、共享锁、更新锁。按作用范围划分为:行锁、表锁。

S锁,也叫读锁,用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。

X锁,也叫写锁,表示对数据进行写操作。如果一个事务对对象加了排他锁,其他事务就不能再给它加任何锁了。

U锁,在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。

1.3 分区,索引有那些

范围分区(时间),列表分区(值很少的数据),hash分区

索引链接:http://www.cnblogs.com/sessionbest/articles/8689255.html

1.4 数据表的关联有几种(在优化器)

NESTED LOOP,HASH JOIN,SORT MERGE JOIN

1.5 数据库调优(主要sql优化思路)

  • 数据模型优化
  • 数据裁剪,减少每个阶段的数据量  (where分区裁剪,select列裁剪,join关联使用相同的key)
  • 减少JOB数(map:input文件总大小,文件个数,集群文件块block大小;reduce:reduce个数=inputfilesize / bytes per reduce,reduce任务处理的数据量,默认为1G)
  • 数据倾斜(空值,赋予空值新的key值;不同数据类型关联;mapjoin,当小表与大表JOIN时,采用mapjoin,即在map端完成,大表放最后可避免小表与大表JOIN产生的数据倾斜,有效减少内存溢出)
  • 参数设置(本地local模式,并行执行,动态分区,map端聚合,小文件合并(小文件归档archive,重建表))

1.6 如何解决数据分布不均和数据重分布的问题

1.7 大表UPDATE,DELETE的方法

二 数据仓库

2.1 数据仓库架构,以及主题

数据分层:数据源层,主题层,基础汇总层,应用层

主题:用户,商品,商家,流量,订单,营销,供应链,配送,仓储,售后,财务
2.2 数据仓库建模方法

范式建模(3NF),维度建模(星形、雪花),实体建模(关系)

2.3 数据治理

数据治理包含:主数据管理,生命周期管理,业务流程管理,数据质量,数据安全,元数据

数据质量方法:

数据监控:准确性(行数和数量),及时性(设置完成时间)

数据清洗:清洗脏数据,标准化

错误预警:校验(0值,环比)

数据分析,发现及推动主数据

 2.4 mapreduce工作原理
Map阶段
    第一步: 通过FileInputFormat读取文件, 把输入文件按照一定的标准分片 (InputSplit),每个输入片的大小是固定的
    第二步: 自定义Map逻辑, 对输入片中的记录按照一定的规则解析每对<key,value>,生成中间结果
Shuffle阶段
    第三步: 对<key,value>进行分区,分区是基于key进行的
    第四步: 对每个分区内的数据按照相同的key进行排序
    第五步: 分组后的数据进行规约(combine操作),降低数据的网络拷贝(可选步骤)
    第六步: 对排序后的数据, 将相同的key的value数据放入一个集合中
Reduce阶段
    第七步: 对多个map的任务进行合并、排序. 自定义reduce逻辑,处理<key,value>进行输出
    第八步: 通过FileOutputFormat输出处理后的数据, 保存到文件

 2.5 谈谈调度机制,数据标准,元数据管理,以及实时数据技术

调度架构分为:NameNode,TaskNode,WEB管理,日志收集器

NameNode负责任务实例化、检查依赖、分配任务执行节点、处理任务执行结果、管理TaskNode节点;

TaskNode主动从NameNode按照一定的分配策略领取任务,并根据任务执行代理器,会监听进程执行结果并反馈给NameNode,同时接收任务日志输出到日志收集器

技术点包含:实例(任务到预定的执行时间时,会根据任务的配置,生成一个任务实例)

分配策略(轮询,并发数,机器资源)

跨周期依赖,数据依赖

上一篇:nginx搭建以及其配置文件


下一篇:DataPipeline丨DataOps的组织架构与挑战