【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(九)

持续分享有用、有价值、精选的优质大数据面试题

致力于打造全网最全的大数据面试专题题库

81、hdfs数据块的默认大小是多少?过大过小有什么优缺点?

参考答案:

1、数据块默认大小

        Hadoop2.0之前,默认数据块大小为64MB。

        Hadoop2.0之后,默认数据块大小为128MB  。

2、优缺点

1)数据块太小:

        (1)会导致寻址时间相对比较长,如果读取数据块数据的时间小于寻址时间,这样是很不划算的,所以数据块要尽可能大一点。

        (2)数据块的大量元数据会占用namenode内存,影响namenode管理的集群规模。   

2)数据块太大:

        为了保证数据的本地性,通常一个块的 数据是交给一个map任务来处理,如果数据块太大,就导致map任务处理的数据量就会很多,时间就会很长,不能很好地实现并行处理。

82、简述hadoop的副本策略?副本过多过少有什么优缺点?

参考答案:

1、默认的副本策略:BlockPlacementPolicyDefault。

        1)1st replica. 如果写请求方所在机器是其中一个datanode,则直接存放在本地,否则随机在集群中选择一个datanode。

        2)2nd replica. 第二个副本存放于不同第一个副本的所在的机架。

        3)3rd replica.第三个副本存放于第二个副本所在的机架,但是属于不同的节点。

        4)剩下其它的副本随机选择存储的位置。

2、副本过多导致存储空间的浪费,增加节点之间数据传输对时间和资源的消耗,副本过少容易导致数据丢失,起不到数据安全可靠的作用。

83、DataNode副本存储策略?如果Hadoop在保存副本的时候,比如,第二个副本存完毕,向第三个副本存入数据时DataNode挂了,会出现什么情况?

参考答案:

1、默认的副本策略:BlockPlacementPolicyDefault。

        1)1st replica. 如果写请求方所在机器是其中一个datanode,则直接存放在本地,否则随机在集群中选择一个datanode。

        2)2nd replica. 第二个副本存放于不同第一个副本的所在的机架。

        3)3rd replica.第三个副本存放于第二个副本所在的机架,但是属于不同的节点。

        4)剩下其它的副本随机选择存储的位置。

2、数据复制过程中出现问题怎么解决?

        1)这个问题其实也是写数据过程,当数据写入DataNode的过程中,当其中一个DataNode挂掉了,会将这个DataNode移除流水线,然后将数据写入到剩余的datanode。

        2)在写入结束后, namenode会收集datanode的信息,发现此文件的数据块的replication没有达到配置的要求(default=3),然后再选择一个datanode保存副本。

84、客户端向HDFS写入数据过程?

参考答案:

写数据流程:

        1)首先客户端对文件进行切分,切分成数据块,每个数据块默认存储到3个节点上。

        2)在写入数据之前,客户端首先会告诉NameNode要写一个文件,此时NameNode会增加一个文件,记录这个文件的详细信息,把这个文件放入目录树里面。

        3)然后开始写数据,因为客户端把文件划分成了很多块,在写第一个数据块时,NameNode先要返回3个DataNode位置,这样第一个数据块会以一个一个数据包的方式(packet)写入第一个DataNode,同时数据包也同时会向第二,第三个节点写,形成数据写的流水线,每个DataNode写完数据包之后,会返回确认。当第一个数据块写完之后,以同样的方式写下一个数据块。

        4)当所有数据块写完之后,它调用close关闭写入流,它会通知NameNode 文件写完了,这时就会关闭socket,结束数据的写过程。

85、客户端从HDFS读数据过程?

参考答案:

读数据流程:

        1)客户端首先发送一个open请求到NameNode,获取这个文件所包含数据块,以及每个数据块的存储位置。

        2)这些数据块信息返回给客户端之后,它依次按照这个数据块的顺序,读取每一个数据块。

        3)第一个数据块在这个节点上面读,第二个数据块在这个节点读,读完之后,按照文件实际数据块的先后位置,显示给用户,整个文件读完之后,就会调用close,关闭输出流就ok了。

86、datanode什么情况下不会备份?

参考答案:

        设置备份数为1时, 就不会备份了。

        延申:Hadoop中在哪里设置备份数, 是哪个字段?

        在hdfs-site.xml中的dfs.replication变量。

87、HDFS中大量小文件带来的问题以及解决方法

参考答案:

问题:

        hadoop中目录,文件和块都会以对象的形式保存在namenode的内存中, 大概每个对象会占用150bytes. 小文件数量多会大量占用namenode的内存; 使namenode读取元数据速度变慢, 启动时间延长; 还因为占用内存过大, 导致gc时间增加等。

解决办法:

        两个角度, 一是从根源解决小文件的产生, 二是解决不了就选择合并。

        从数据来源入手, 如每小时抽取一次改为每天抽取一次等方法来积累数据量。

        如果小文件无可避免, 一般就采用合并的方式解决. 可以写一个MR任务读取某个目录下的所有小文件, 并重写为一个大文件。

88、fsimage和editlogs是做什么用的?

参考答案:

        命名空间镜像(FSlmage):HDFS的目录树及文件/目录元信息是保存在内存中的,如果节点停电或进程崩溃,数据将不再存在,必须将上述信息保存到磁盘,Fslmage就是保存某一个时刻元数据的信息的磁盘文件。

        镜像编辑日志(EditLog):对内存目录树的修改,也必须同步到磁盘元数据上,但每次修改都将内存元数据导出到磁盘,显然是不现实的,为此,namenode引入了镜像编辑日志,将每次的改动都保存在日志中,如果namenode机器宕机或者namenode进程挂掉后可以使用FSlmage和EditLog联合恢复内存元数据。

89、Linux中的块大小为4KB, 为什么HDFS中块大小为64MB或128MB?

参考答案:

        (1)块是存储在文件系统中的数据的最小单元. 如果采用4kb的块大小来存放存储在Hadoop中的数据, 就会需要大量的块, 大大增加了寻找块的时间, 降低了读写效率。

        (2)一个map或者一个reduce都是以一个块为单位处理, 如果块很小, mapreduce任务数就会很多, 任务之间的切换开销变大, 效率降低。

90、并发写入HDFS文件可行吗?

参考答案:

        不行。因为客户端通过namenode接收到在数据块上写入的许可后, 那个块会锁定直到写入操作完成, 所以不能在同一个块上写入。

持续分享有用、有价值、精选的优质大数据面试题

致力于打造全网最全的大数据面试专题题库

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值