近期面经总结

Hadoop

1.hdfs block块为什么是128M?

由磁盘的传输速率决定,hdfs的寻址时间为10MS,寻址时间为磁盘传输时间的1%时为最佳,普通磁盘的传输速率为100MB/S,所以块的大小约为 1s*100MB/S = 100MB。

2.hadoop中存在大量小文件的弊端?

hadoop中每个文件都会在namenode中创建元数据,每个元数据大小为150byte,小文件非常多时会产生大量的元数据文件,一方面会大量占用namenode的内存空间,另一方面因为元数据过多,导致寻址时间变长。
小文件过多,在进行mr计算时,产生的map任务过多,导致启动任务的时候大于任务计算的时间,造成资源浪费。

3.namenode和datanode,secondarynamenode?

namenode管理文件系统的命名空间,维护这文件系统树及整棵树内所有的文件及目录,这些信息以 命名空间镜像文件及编辑日志文件的格式保存
datanode是文件系统的工作节点,它们根据需要存储并检索数据块,并且定期向namenode发送它们所存储的块的列表
secondarynamenode的重要作用是定期合并编辑日志与命名空间镜像,以防止编辑日志文件过大。

4.hdfs写数据流程

1.客户端通过对DistributedFileSystem对象调用create()来新建文件,对namenode创建一个RPC调用
2.namenode检查确保文件不存在以及客户端有新建该文件的权限
3.namenode返回给客户端是否可以上传
4.客户端请求第一个block块上传到哪个datanode上
5.namenode返回可以上传的datanode列表
6.客户端请求dn1上传数据,dn1收到请求后会继续调用dn2,然后dn2调用dn3,将通信管道完成
客户端开始上传第一个block块,以packet为单位,dn1每收到一个packet就会传给dn2,dn2传给dn3,dn1每传一个packet会放入一个应答队列等待应答
7.第一个block传输完成后,客户端再次请求namenode上传第二个blcokd服务器 (重复执行4-7步)

5.hdfs读数据流程

1.客户端请求namenode下载文件
2.namenode查找文件元数据及block块信息
3.namenode将文件信息及block信息返回给客户端
4.客户端选择最近的datanode服务器,请求读取数据
5.客户端以packet为单位接受,先在本地缓存,然后写入目标文件

6.SecondaryNamenode 工作机制

1.SecondaryNamenode 询问 namenode是否需要CK,直接带回是否检查结果
2.SecondaryNamenode 请求执行checkpoint
3.namenode 滚动正在写的edits日志
4.将滚动前的编辑日志和镜像文件拷贝到 SecondaryNamenode
5.SecondaryNamenode 加载编辑日志和镜像文件到内存 并合并 生成新的镜像文件fsimage.chkpoint
6.拷贝fsimage.chkpoint到namenode
7.namenode将fsimage.chkpoint重新命名成fsimage

7.shffle过程

1.map阶段结束后会将数据收集进入环形缓冲区(默认大小为100M,阈值为80%)
2.溢写阶段:当环形缓冲区达到阈值后,将数据溢写到本地磁盘中,
3.合并阶段:当数据处理完之后,对所有临时文件进行一次合并,确保最终只生成一个数据文件
reduce阶段:
1.reduce端拉取map端数据,存放到内存中,如果超过阈值就写到磁盘中
2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值