确定hive的map和reduce的task的数量

本文详细介绍了如何在Hive中设置mapper和reducer的任务数量以优化查询效率。设置mapper任务数量受数据块大小、mapred.map.tasks参数及split size影响;而reducer数量可通过mapred.reduce.tasks、hive.exec.reducers.max和hive.exec.reducers.bytes.per.reducer参数进行调整,以平衡数据输出量和文件数量。
摘要由CSDN通过智能技术生成

        Hive的底层查询原理,也是讲sql语句转化为map-reduce进行查询和计算的,所以设置正确的map和reduce的task的数量对查询效率有很重要的影响。

1. 设置mapper的task数量

        在分布式计算系统中,决定map数量的一个因素就是原始数据,在不加干预的情况下,原始数据有多少个块,就可能有多少个起始的task,因为每个task对应要去读取一个块的数据;当然这个也不是绝对的,当文件数量特别多,并且每个文件的大小特别小,那么我们就可以限制减少初始map对相应的task的数量,以减少计算资源的浪费,如果文件数量较少,但是单个文件较大,我们就可以增加map的task的数量,以减小单个task的压力。

        在hive里面有个决定mapper的task数量的参数:mapred.map.tasks,因为决定mapper的task的数量因素相对比较复杂,所以这个参数不一定起作用,具体决定mapper的task数量的过程如下:

        (1)hive的文件基本上都是存储在HDFS上,而HDFS上的文件,都是分块儿的,所以具体的hive数据文件在HDFS上分多少块,就可能是默认的hive起始task的数量,我们记做:default_mapper_num。在网上还有人这么解释,就是用数据总大小除以dfs的默认最大块大小(total_size/dfs.block.size)来决定初始默认数据分区数,感

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值