期末简答题20选4 逻辑类比记忆

考试肯定选长的,先记长的。

1、MapRedece从读取数据开始到将最终结果写入HDFS经过哪些步骤?(记忆图)(期中考过期末肯定不考)

第一步:inputformat进行数据读读取,将数据发送给split
第二步:split 将数据进行切分,发送给RecordReader
第三步:RR将数据按照行再次切分,将切分好的数据组装成key(行首偏移量),value(每行的数据) 发送给map
第四步:map 进行自定义逻辑的书写,将数据传给Shuffle
第五步:Shuffle中的Partition 将数据key的哈希值与ReduceTask数量取余,余几就分到哪个区
第六步:Shuffle中的Sort 将数据按照一定规则进行排序
第七步:Shuffle中的Combine 将数据在map端先进行局部聚合,这样做的好处数节省了网络带宽的消耗,效率更高
第八步:Shuffle中的Group 将数据相同的key变成一个key,将这个key的Value拼装成一个Value的list
第九步:Reduce 进行自定义计算逻辑的书写,将结果发送给OutputFormat
第十步:OutPutFormat 将结果数据输出保存到HDFS上

2、Hadoop 的组成部分有哪些模块?(概念性)

HDFS 分布式文件存储系统
管理者:NameNode
工作者:DataNode
辅助者:SecondayNameNode
MapReduce 分布式离线计算框架
Yarn Hadoop资源调度器
管理者:ResourceManager
工作者:NodeManager

3、请阐述一下Hbase详细架构?★★★★★(记忆图)

Client:
访问数据的入口,包含访问hbase的API接口,维护着一些cache来加快对hbase的访问
Zookeeper:
1.zookeeper的选举机制保证任何时候,集群中只有一个master
2.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
3.存储Hbase的schema
4 存贮所有Region的寻址入口
Master:
1.为Region server分配region
2.负责region server的负载均衡
3.发现失效的region server并重新分配其上的region
4.处理schema(元数据)更新请求
Region server:
1.Region server维护Master分配给它的region,处理对这些region的IO请求
2.Region server负责切分在运行过程中变得过大的region

4、请说一下Hive的内部组成模块,作用分别是什么?

(1)解析器(SQL Parser):解析HQL语义
(2)编译器(Physical Plan):将语HQL根据语义转换成MR程序
(3)优化器(Query Optimizer):对逻辑执行计划进行优化。(对MR程序进行优化)
(4)执行器(Execution):把任务提交到hadoop集群

5.hbase读的过程★★★★★

1、首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息
2、Client通过刚才获取到的IP来访问Meta,读取Meta内的数据,
3、Client通过元数据(meta表内的数据)中存储的信息,找到region在哪个HRegionServer ,访问对应的 HRegionServer读取数据

6.hbase数据的写入★★★★★(记忆图)

1 Client 先访问zookeeper,找到Meta表,并获取Meta表元数据。确定将要写入的数据所对应的HRegion和 HRegionServer服务器。
2 Client向该HRegionServer服务器发起写入数据请求
3 RegionServer先把数据写入到HLog,以防止数据丢失。
4 然后将数据写入到Memstore。
5 若Memstore达到阈值,会将Memstore中的数据flush到Storefifile中
6 Storefifile数量达到阈值(默认3个)时,会触发Compact合并操作,把过多的Storefifile合并成一个大的Storefifile

7.为什么要HBase预分区(衣服为啥有俩兜?)

增加数据读写效率: 默认方式所有数据存在一个节点上,预分区将数据分散到多各节点上。

你衣服上有两个兜,每个兜同时只能伸进一只手,现在,你把一把瓜子放进其中一个兜,取瓜子吃的时候,就只能用一只手,吃的速度慢,效率低。
如果你规定把瓜子放在俩兜里,就可以同时使用两只手拿瓜子,效率自然就高了。

负载均衡,防止数据倾斜: 数据的rowkey分成多个区间,每个区间就是一个region,数据写入时,写入自己所在范围的region

一个兜硬撑着装了好多瓜子,另一个兜却是空的,手伸进装满瓜子的兜,可能会让瓜子溢出来。

(冬天时:农村的蹲坑式的厕所,共享一个fen坑,预分区就相当于来上厕所的人均匀地使用每个坑,而不是所有人都只拉一个坑,导致shi越堆越高,这时候就相当于数据倾斜,预分区避免数据倾斜)

方便集群容灾调度region: 将数据分散存储到了多个region中,region的粒度更小 优化Map数量

(你把所有瓜子放到一个兜里,你一个兜漏了,基本上全漏了(灾难),还得慢慢捡好久。如果你把瓜子放在两个兜里,漏一个,另一个兜的瓜子还能吃,而且捡地上漏的瓜子的时间更少(容灾))

8.HBase的基本介绍(概念性)

a.Hbase是建立在hdfs之上的一个数据库,
b.不支持join等SQL复杂操作
c.支持的数据类型:byte[],
d.依靠横向扩展,一个表可以有上十亿行,上百万列。
e.面向列(族)的存储和权限控制
f.对于为空(null)的列,并不占用存储空间,是一个稀疏表

9.distribute by+sort by(相同字段) 与Cluster by的区别

在分区字段和排序字段相同时,这两个可以作用是相同的,只是cluster by 的结果有限制,只能倒序排列,而distribute by+sort by 可根据需求进行排序

10.Hive支持的数据格式(概念性)

可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE

11.hive自定义函数的类型有哪几种,分别表示什么意思?(概念性)

1.UDF(User-Defined-Function) 一进一出
2.UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min

A长的像个伞,假设数据从下面流入,从上面流出,A就是聚集一堆,流出一个点
同理,T就像Y,由一股分成了好几股。
前提是记住一进一出UDF(输入一个数据,返回另一个数据)

3.UDTF(User-Defined Table-Generating Functions) 一进多出,如lateral view explore)

这让人想到了进进出出。

12.集群扩容,添加新节点需要做哪些准备?(步骤性)

1.配置JDK
2.配置SSH免**
3.关闭防火墙
4.关闭selinux
5.修改主机名
6.修改hosts

新节点必须有jdk,节点间沟通需要ssh免密,节点需要关闭防火墙增加效率,
节点需要关闭杀软selinux,节点需要改名方便交流,每个节点需要认识其它节点hosts

增加新节点就像公司来了个新人,每个新人都得会java(安装jdk),新人需要有办公室钥匙方便工作(ssh免密),
团队个人之间应该放下心中的防备,相互信任(关闭防火墙,selinux),新人来了会被起个外号(修改主机名),新人来了之后,团队中的每个人都要认识新人,新人也得认识团队中的每个人(hosts文件)。

13.hadoop 的组成部分?(概念性)

HDFS 分布式文件存储系统
管理者:NameNode
工作者:DataNode
辅助者:SecondayNameNode

MapReduce 分布式离线计算框架

Yarn Hadoop资源调度器
管理者:ResourceManager
工作者:NodeManager

14.Namenode作用(概念性)

理解为长老,长老有族谱,记录了每个族人的名字。
长老要接收仆人汇报的工作进度、健康信息。
长老要接待来宾,调度仆人完成工作,充当沟通桥梁

一:管理,维护文件系统的元数据/名字空间/目录树,管理数据与节点之间的映射关系(管理文件系统中每个文件/目录的block块信息)
二:管理DataNode汇报的心跳日志/报告
三:客户端和DataNode之间的桥梁(元数据信息共享)

15.DataNode作用(概念性)

datanode是仆人、工具人

一:负责数据的读写操作
二:周期性的向NameNode汇报心跳日志/报告
三:执行数据流水线的复制

16.hbase中如何解决rowkey的热点问题(概念性)

热点就是数据分布不均匀,集中到一个节点了。

1.哈希(随机数):将哈希值放在高位(每条数据hash值不同)
2.反转:反转固定长度或者数字格式的数据(时间戳反转、手机号反转,订单号反转)
3.加盐:本质时是加随机数,并且放在高位。

17.hbase中Hlog的切分机制

1.当数据写入hlog以后,hbase发生异常。关闭当前的hlog文件
2.当日志的大小达到HDFS数据块的0.95倍的时候,关闭当前日志,生成新的日志
3.每隔一小时生成一个新的日志文件

类比于人体撒尿,存尿的过程。

人撒尿时突然被人碰一下,紧张的尿不出来,就像hbase发生异常,关闭hlog文件。
膀胱存尿达到0.95倍自身体积时撒尿一次
一小时尿一次

18.HBase的三个重要机制是什么?

1、flush机制

2、compact机制

3、split机制

regionServer的全局memstore的大小,超过该大小会触发flush到磁盘的操作
撒尿,憋尿到一定程度,就得尿出来

把小的storeFile文件合并成大的Storefile文件。
清理过期的数据,包括删除的数据
将数据的版本号保存为3个

compact把3个避孕套整理到一个盒子里存放

当Region达到阈值,会把过大的Region一分为二。

region受精卵分裂,过大时一分为二

19.Crontab 定时器怎么写?

每个*什么意思,给出一个定时任务,描述出相应的内容

日 月 时 分 星期

20.SecondaryNamenode 的工作机制是什么?★★★★★

NameNode创建一个Edits.new
SNN从NameNode节点拷贝Fsimage和Edits文件到SNN
SNN将两个文件导入内存进行合并操作生成一个新的Fsimage.ckpt文件
SNN将新的Fsimage.ckpt发送到NameNode节点
重命名为Fsimage替换原先的Fsimage
原先的Edits生成Edits.new文件
将Edits替换为新的Edits.new
期末简答题20选4 逻辑类比记忆