我们
Streaming
程序
Trigger Inverval
设置的是
5
分钟
[
⾃⼰定
]
,那么每
5
分钟就会⽣成⼀个⽂件,⼀天就
会有
288
个
⽂件,⼩⽂件会产⽣三个主要问题
1.
过多的⼩⽂件会对
namenode
形成压⼒
2.
过多的⼩⽂
件是不利于分析引擎做数据查询分析的,降低查询效率
3.
单个⼩⽂件的压缩⽐低,会占⽤更多的存储空间
尤其是第⼆个问题是我们⾸要关注的问题。 因此我们应对⼩⽂件,会开发
Merge
程序,来完成⼩⽂件的
合并⼯作,所谓
Merge
程序就是从定时把⼩⽂件从
HDFS
上读出来,然后合并成⼤⽂件,存回
HDFS
,同
时删除
Merge
后的⼩⽂件。写完这个程序,交个
Azkaban
定时调度就可以了。 我们⼀般
1
⼩时
调度⼀次
Merge
程序,并且尽可能控制
Merge
后的⽂件⼤⼩在
1G
左右。
上⾯的说的是我们不使⽤
Hudi
这个组件的情况下需要做的事情,不使⽤
Hudi
也是完全可以的。