Hadoop(八)——MapReduce下

本文探讨了Hadoop中常见的数据倾斜、join操作、小文件问题及推测执行机制的优化方法,包括二阶段聚合、缓存利用、文件打包及合理配置推测执行。

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

1.数据倾斜:

原因:
因为又分区的情况,导致Reduce阶段的ReduceTask处理的数据量不一样,可能有的多有的少,这就产生了数据倾斜的问题。
另外还有可能发生Map阶段的数据倾斜,但是需要满足3个条件:多输入源,文件不可切分,文件大小不均等。

reduce阶段的数据倾斜如何优化?

  • 二阶段聚合:

第一阶段:把数据打散,进行部分聚合
第二阶段:根据分区条件来进行聚合

没有使用二阶段聚合:
每一个reduceTask处理的数据量都不一样,可以明显的看出第一个reduceTask的处理数据量比另外两个要大很多,所以九发生了数据倾斜
在这里插入图片描述

使用了二阶段聚合:
在一个阶段,把任务平均分一下到各个reduceTask中进行计算,然后第二个mapTask去拿数据,拿出各个reduceTask计算出来的数据,把这些数据分区进行计算。
在这里插入图片描述

2.join

什么时候使用join?
如果两个或者多个文件之间相互关联,那么此时就需要使用join操作

使用方法:
分析需求确定好键值之后,就可以确定哪个文件作为主处理文件,其他的关联文件需要放到缓存中。在Mapper处理的时候,先将缓存中文件取出来先处理,然后再利用map方法来处理主文件,在处理主文件的过程中,如果需要用到缓存中的内容,那么就可以直接获取

3.小文件

小文件存在的问题:

  • 存储:大量小文件,就会产生大量的元数据,导致内存被大量占用,降低查询效率
  • 计算:大量小文件,就会产生大量的切片,导致产生大量的线程(MapTask),增加服务器(集群)的并发压力

小文件的解决方案:
合并和打包。
打包的方式:Hadoop提供了原生的打包方式:Hadoop Archive。例如:hadoop archive -archiveName txt.har -p /txt /result - 实际上就是利用合并+索引的方式来实现可切的打包过程

4.推测执行机制

是Hadoop自身提供的一种任务执行的优化方案:
当集群中出现慢任务的时候,Hadoop会将这个慢任务复制一份到其他节点上,两个节点同时执行相同的任务,谁先执行完成,那么这个结果就作为最后结果,而另一个没有完成的任务会被kill

慢任务出现的场景:

  • 任务分配不均匀
  • 服务器性能不一致
  • 数据倾斜

问题:
数据倾斜的情况下,任务本身就慢,所以开启推测机制是没有意义的,所以一般都会关闭推测机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛像话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值