MapReduce 之小文件合并(HDFS小文件预处理)

MapReduce 之小文件合并

1.HDFS之小文件背景知识

  1. HDFS作为分布式文件系统,自身机制原因,每一个数据块(默认128MB一个数据块)都会在namenode节点的元数据中保存一份索引。
  2. 如果是小文件,例如1MB以下的小文件,由于HDFS本身机制,每个文件都会建立一个索引。这样的小文件过多,会导致namenode的索引文件过大。
  3. namenode的索引文件在启动时会加载到namenode的内存中,而内存是有限的。考虑到HDFS是分布式文件系统,里面存储的文件数量会非常大,所以这些小文件单独存放到HDFS中就不是很适合

2.HDFS小文件存储解决方式

  1. 文件之间合并,也是稍后会做代码演示的方式
  2. 文件打包压缩,和方法1差不多(hdfs本身支持多种压缩方式,有的压缩方式支持数据切块,有的不支持,有的解压缩速度很快,有的压缩率很高,根据需要进行设置处理即可)
  3. 小文件使用其他存储方式存储,不放在HDFS文件系统上

3.使用mapreduce进行小文件合并

  1. 考虑到效率,一般会在把小文件上传到HDFS之前,就在本地对小文件做合并,这样效率更高。
  2. 在整个大数据处理前期,针对原始数据做处理,包括数据清洗,筛选,合并等操作也是一个关键环节。数据清洗做的好,能很大降低后续代码数据处理的复杂程度和数据量。例如一些数据可以提前做一些分类跟聚合,这样工作量就不用全部放在mapreduce阶段,可以有效提升数据处理速度。
  3. mapreduce本身自带的combiner就是出于这种思路,在maptask处理的数据之后,提前做一些数据聚合。
  4. 数据准备,一部准备好的txt英文小说,拆分为10份
    在这里插入图片描述
    在这里插入图片描述
package com.doit.hadoop.combin_small_files;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值