vlambda博客
学习文章列表

【每日一题】Flume HDFS Sink小文件处理(顺丰)

大家好,今天带来顺丰面试题:Flume HDFS Sink小文件处理,一起来看看吧~


问题分析 



这道题考察的是大数据相关组件的理解程度,可以结合HDFS Sink存入大量小文件会有什么影响去切入小文件如何处理这个点,由点及面的回答.


核心问题回答



1、HDFS存入大量小文件,有什么影响?
元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在Namenode内存中。所以小文件过多,会占用Namenode服务器大量内存,影响Namenode性能和使用寿命。

计算层面:
默认情况下MR会对每个小文件启用一个Map任务计算,非常影响计算性能。同时也影响磁盘寻址时间。
2、HDFS小文件处理
官方默认的这三个参数配置写入HDFS后会产生小文件,hdfs.rollInterval、hdfs.rollSize、hdfs.rollCount
基于以上hdfs.rollInterval=3600,hdfs.rollSize=134217728,hdfs.rollCount =0,hdfs.roundValue=3600,hdfs.roundUnit= second

几个参数综合作用,效果如下:
a.tmp文件在达到128M时会滚动生成正式文件
b.tmp文件创建超3600秒时会滚动生成正式文件

举例:
在2018-01-01 05:23的时侯sink接收到数据,那会产生如下tmp文件:
/atguigu/20180101/atguigu.201801010520.tmp
即使文件内容没有达到128M,也会在06:23时滚动生成正式文件

3、问题扩展
Flume作为开发中的一个重要组件,我们要对它做一个自顶向下的了解,从他的底层架构,到细节部分Flume的优化,还有一些Flume相关,比如Flume的拦截器,Flume内存等等,这些面试都常涉及。

4、综合项目使用
Flume HDFS Sink 小文件过多会有很大影响,会非常影响性能,所以在实际生产中为了合理利用资源,我们需要对相关问题有一个清楚地了解。


推荐阅读: