mapreduce中FileInputFormat与TextInputFormat解析以及HDFS小文件优化

一、FileInputFormat与TextInputFormat

在map阶段,文件先被切分成split块,而后每一个split切片对应一个Mapper任务

  1. FileInputFormat这个类先对输入文件进行逻辑上的划分,以128M为单位,将原始数据从逻辑上分割成若干个split,每个split切片对应一个Mapper任务
  2. TextInputFormat这个类随后将每个split块中的每行记录解析成一个一个的键值对,即<k1,v1>

在这里插入图片描述

二、HDFS小文件的优化

hdfs大量的小文件势必影响NameNode的寿命,因为文件元数据存储在NameNode的内存中,影响计算引擎的任务数量,比如每个小的文件都会生成一个Map任务

解决小文件过多的问题有以下几种方法

  1. 对小文件进行归档(Har),将众多的小文件打包成一个har 文件,但由于har是目录,其只能减轻namenode压力,无法在mapreduce中起作用
  2. 采用ConbinFileInputFormat来作为输入,解决输入端大量小文件场景。ConbinFileInputFormat可以将多个小文件合并到一个inputsplit里面,用一个map来处理
  3. 启用jvm重用,多个顺序执行的task之间jvm不会关闭,可以避免频繁启动jvm的资源消耗。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值