HDFS面试题

1.2nn作用

帮助nn进行管理,nn主要存储元数据信息,当nn运行的时候,元数据信息是存在内存中的,也可以持久化到磁盘上。持久化到磁盘上有两个文件,一个是fsimage,一个是edits log。

Fsimage是nn启动时的一个快照,edits log是nn启动后做的改动。只有当nn重启时,edits log才会合并到fsimage中,但是nn不会经常重启,因此edits log就会变得很大。此时2nn会将edits log中的信息更新到自己的fsimage中,然后将自己的fsimage复制给nn的fsimage,实现nn的fsimage的更新。

2.块大小及原因

太小:一个大文件在hdfs中会被分为多个block,每查找一个block都会寻址一次,如果block太小,分的block就会很多,寻址时间就很长。并且namenode对每个block都会存储一份元数据,小文件过多,也会影响namenode寿命。

太大:做mapreduce时要从hdfs上下载对应的block,如果block太大,下载时间就会很长

3.HDFS数据一致性靠什么保证

(1)namenode secondaryname

(2)心跳机制

(3)安全模式

4.HDFS文件格式

行式存储:TEXTFILE

列式存储:ORC、PARQUET

总结:相同数据量的数据,列式存储(ORC、PARQUET)占的磁盘空间远远低于行式存储(如textfile),当查询部分字段是,列式存储的数据只需加载对应的列数据即可。 存少读少,极大磁盘使用以及IO,相对减少资源(内存,cpu)不必要的浪费,故列式存储在大数据领域完爆行式存储。

压缩格式:lzo gzip bzip2 snappy

5.HDFS读写流程

HDFS写流程:
1.client向namenode发送请求,通过rpc与namenode建立通信,请求上传文件
2.namenode对client进行审查,检查client是否有上传权限,以及检查上传的文件是否在hdfs目录下有重名文件,如果通过,则同意client上传文件
3.client对文件进行切分,默认128M,切分完后请求向namenode上传第一个block
4.namenode收到请求后,返回可用的datanode地址给client
5.client收到地址后,向datanode传输文件,同时datanode有leader和follower,client会先向leader传输block,再由leader将文件传输给follower,这是一个正向的过程,当follower成功写入数据后,会返回一个ack给leader,逐级返回,最后由leader返回一个ack给client,这是一个反向的过程
6.当第一个block成功传输之后,client会再次向namenode发送请求,请求上传第二个block

HDFS读流程:
1.client向namenode发送rpc请求,请求读取文件
2.namenode收到请求后,对client进行审查,检查是否有权限,如果通过,则会返回所有block所在的datanode地址,这里的datanode地址,包括了leader的地址以及follower的地址,同时,这些返回的地址,会按照datanode与client的距离远近进行排序
3.client会选取排序靠前的datanode进行读取,因为排在前面的datanode,距离越近
4.读取完一个block会进行checksum,如果读取datanode时出现错误,client会通知namenode,然后从下一个拥有该block的datanode进行读取
5.read方法是并行读取block的信息,不是一块一块的读取
6.最终读取所有的block信息,合并为一个完整的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值