Hive中Map任务和Reduce任务数量计算原理

本文详细解析了Hive中Map任务和Reduce任务的数量计算原理,包括MapReduce的基本步骤,Map任务数量与分片大小的关系,以及Reduce任务数量的估算策略。Hive的Map数量基于输入文件的分片,而Reduce数量则考虑了用户配置和数据输入大小。针对小文件问题,Hive会尝试合并小文件以减少Map任务。在调整任务数量时,需平衡资源利用和任务并发度,避免空文件浪费或小文件过多的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive中Map任务和Reduce任务数计算原理

MapReduce原理

  • Map阶段(以FileInputFormat为例)
    步骤:map, partition, sort, combiner

    • InputFormat负责计算分片,一个分片对应一个Map任务,InputFormat而且还负责创建RecordReader,通过RecordReadernext()方法,然后循环调用map()方法
    • map()方法的输入为一行文本,处理的结果先是写到内存缓冲区,达到阈值之后,溢写到磁盘,如果多次溢出,则会有多个溢出文件,这些溢出文件经过了分区,排序,而且还可能作过Combiner,map任务结束之后,多个溢出文件会合并成一个,结果写在本地
  • Reduce阶段
    步骤:copy, sort, reduce

    • reduce阶段先会进行copy,如果copy过来的文件很小,则直接copy到内存中,如果文件较大,则copy到磁盘
    • copy完成之后,会进行一个归并,由于在map端已经作过排序,所以,归并其实是在将多个有序的文件合并成一个有序的文件,这个文件中,一个key会生成一条记录,value为这个key对应的数组
    • 对归并后的文件循环调用reduce()方法,对每个key进行处理。

Map数量

hive的Map数量与分片大数量一致,一个分片生成一个Map任务,分片不是数据本身,是记录了数据的位置和长度,长度用于考虑优先运行,位置用于查找数据,一个分片大小的计算取决于使用的Input

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值