1. 问题描述
           Flume讲数据收集上来之后,写入HDFS,我按照时间:每小时滚动生成一个文件。由于数据量不是特别大,因此一个小时生成的文件,通常都在10M左右,这对于Hadoop来说,都是小文件,因此需要处理一下。我的Hadoop集群默认块大小为128M,集群配置较差,暂时没做调整。
     
  2. 解决方案
           编写java程序,将符合指定正则表达式文件名的文件合并到指定的合并文件中去,通过程序控制,使合并文件不超过120M;如果合并文件达到指定大小,则重新创建新的合并文件。
     
  3. 具体程序
           git地址:https://github.com/wzq246810/mergeHDFSFiles
     
  4. 程序说明
           该程序比较简单,我没有写很多文档去介绍,主要就是提供一个思路。具体的一些主要注释,我在项目代码中也有说明,具体看项目代码吧。
           该项目为maven项目,IDEA工具开发,jdk1.8,可以直接用package打包,然后上传到Hadoop集群直接使用java -jar命令运行。
           该项目不一定适合你们直接使用,需要修改一些配置文件的内容,还有就是稍微修改一下代码处理逻辑。
10-05 17:27