大数据面试(手敲答案)

1、 请写出所有你记得住的 Linux 命令(至少五个)

ps -ef 、sz、rz、rm、mkdir、cd、kill、touch、netstat、top、lscpu、tsar

2、 请阐述 HDFS 1.x 和 2.x 的架构组成?

HDFS 1.x:
NameNode:①存放日志 ②负责接收客户端信息 ③ 存放信息:存放元数据、存放文件与块的映射、存放块与DataNode的映射
SeconderyNameNode:负责合并快照和日志、当日志达到阈值3600s或者64m时,合并快照和日志为新的快照。同时会生成新的edits.
DataNode:存放真实数据、并与NameNode保持心跳

HDFS 2.x:
1.Active NameNode:①存放日志 ②负责接收客户端信息 ③ 存放信息:存放元数据、存放文件与块的映射、存放块与DataNode的映射④合并快照
2.Standby NameNode: 与Active NameNode功能大致相同 ①存放日志 ②负责接收客户端信息 ③ 存放信息:存放元数据、存放文件与块的映射、存放块与DataNode的映射④合并快照
(注意的一点是主的NameNode存放日志是最新的日志,副的NameNode存放的日志可能会有延时)
3.DataNode:存放真实数据、并与NameNode保持心跳
4.QJM(统一管理日志):①也是一个小集群,有几个节点就有几个JournalNode②与主从NameNode保持心跳③ActiveNameNode生成的日志拷贝到QJM,QJM间隔一段时间再拷贝到StandbyNameNode(所以该节点的日志可能不是最新的)
5.zkfc:检测NN是否出现异常,如果出现异常,会借助Zookeeper进行一个主备切换
6.zookeeper:①协助zkfc进行主备切换②开机选举NN主节点

3、 请阐述 HDFS 的读写流程?

写流程:
1.首先客户端会向HDFS的NN发送请求
2.文件系统会通过远程rpc调用NN的create()方法,NN检查文件是否存在,是否存在权限,如果不存在权限,则抛出异常,如果存在权限,返回成功状态
3.HDFS接收到,创建一个文件流
4.客户端会依次询问blk的位置:向NN询问第一个blk的位置,NN通过机架感知策略返回存放到哪几个DN的位置(假设DN1、DN2、DN3)
5.客户端拿到位置信息直接向DN创建连接管道,并把blk切分为64k的packet
6.依次在DN1、DN2、DN4传输packet并发送ack信息,直至最后一个packet传输完成,ack置为true返回
7.直至所有blk传输完成客户端询问NN是否传输完成,确认完成,关闭文件流

读流程:
1.客户端向HDFS发送写请求
2…文件系统会通过远程rpc调用NN的open()方法
3.客户端会依次询问blk的位置:向NN询问第一个blk的位置,NN通过机架感知策略返回存放到哪几个DN的位置(假设DN1、DN2、DN3)
4.依次读取DN1、DN2、DN3
5.重复3.4直到所有blocks读取完成

4、 Yarn 的资源调度流程?

首先yarn有ResouceManager、NodeManager、ApplicationMaster、Container组成
1.APP想RM请求资源,RM是资源框架的管理者,同样具有主从节点,由zookeeper协助完成主备切换
2.RM会通知NM分配资源,NM是资源协调的执行者,资源存放在NM中,得到通知后开配资源Container(1.x:job、2.x:Container大小可变)
3.ApplicationMaster是每个JOB的主导者,AM创建成功后向RM中的ASM注册自己,表示自己可以去管理一个作业(job)。AM注册成功后,会对作业需要处理的数据进行切分,然后向RM申请资源,RM会根据给定的调度策略提供给请求的资源AM。当任务完成通知ResouceManager
4.ResouceManager杀死进程ApplicationMaster,释放资源

5、 MapReduce 的执行流程?

1.分片、格式化,一个split对应一个map,map默认进行行读取
2.环形数据缓冲区:map中间结果写入环形数据缓冲区,循环利用这块内存,减少数据溢出时map的停留时间
3.分区:溢写之前,对数据进行分区,确定reduce的位置,方便reduce的拉取,进行一个快排,省空间
4.溢写:达到80 溢写
5.合并:归并排序、临时文件
6.reduce拉取
7.合并:合并小文件
8.reduce计算
9.输出

6、 Zookeeper 的选举机制?

  • 第一次选举
    投票给myid大的
    存在leader,其他服务器启动自动follower
  • 非第一次选举(主节点挂掉,多数认为)
    谁的任期大选谁
    任期相同。谁的事务id大选谁
    任期相同,事务id相同,谁的myid大选谁

7、 你对数据倾斜是怎么理解的?有什么好的解决方案?

单节点相对于其他同类型节点有过多压力,造成整个工作有瓶颈
问题1.大量null值
数据没用,直接过滤
数据有用,给null值数据赋一个设定区间的随机值,放入设定区间,数据分布均匀
问题2:大量中间结果
预处理containner
问题3.分区不均匀
group by进行分组

8、 Flume 的核心组件有哪些?

source(avro.exec)、channel(jdbc.memory)、sink(avro…)

9. Flume 采集数据会丢失吗?为什么?

一般不会丢失,source与channel之间时put事务,channel与sink之间时take事务,
只有一种情况会丢失,channel的类型时memory内存类型

10、 你怎么理解 Hive 这个组件?

hive计算引擎,基于Hadoop的一个数据仓库工具

11、Hive 的内外部表、分区表、分桶表分别的作用是什么?

内部表:也称为管理表,一般创建临时表和中间表用这个,删除表的时候,元数据和数据本身都删除
外部表:创建表的时候加external就是外部表,可以共享数据,大多数用这个,删除表的时候,只删除元数据
分区表:把数据分到不同的文件夹,查询更快,可能会造成数据倾斜
静态分区: 动态分区:
分桶表:根据字段分桶,最好有公因数,减少数据的匹配量

12、 请简述 HBase 的数据结构和存储架构

数据结构:namespce、table、rowkey、colum family、cloum qulifier、timestamp、cell
存储架构:regionServer region store memstore storefile hlog

13、 请简述 HBase 查询数据的流程

客户端访问zookeeper,获取hbase:meta所在RegionServer的节点信息
RegionServer的信息加载到内存到,通过rowkey查到rowkey所在的regionServer
访问到对应的regionServer 找到region
先找memstore,没有找storefile,通过rowkey找见

14、 请简述 HBase 写入数据的流程

客户端访问zookeeper,获取hbase:meta所在RegionServer的节点信息
RegionServer的信息加载到内存到,通过rowkey查到rowkey所在的regionServer
先写memstore,达到阈值,刷写硬盘storefile,新的memstore
storefile数量达到阈值,合并,形成更大的storefile
storelfile大小达到阈值,切分:1.寻找切分点,最大的store,最大的storefile,中间的rowkey 2.切

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值