在路上
2021-10-06
徐老师好,MapReduce的第一个问题后来通过SQL得到解决,编程界面更友好,第二个问题通过内存+硬盘混合存储得到了解决,内存保存中间数据更快,硬盘保存中间数据更稳定,中间数据丢失可以根据依赖的数据和逻辑重新生成。 回答老师的问题,如果不定制分区函数,数据会产生倾斜,那么可以给数据多的分区分配多一些Reduce程序,或者再次Hash。MapReduce在运行的最后阶段,会启动后备的Reduce程序,和运行较慢的Reduce程序处理同一个分区,哪个先完成就采用哪个结果,以此避免较慢的机器拖慢了整体处理时间。在最后的阶段,其实可以让MapReduce为一个分区启动多个Reduce程序,加速数据处理,减轻数据倾斜的影响。
13
星语心愿
2021-10-08
数据倾斜源自于Key值分布不均,一方面数据源本身key值分布不均(仅以行号作为key值不存在这个问题),可以事先预处理key值,使其分布均匀,或者增大分区解决;另一方面在shuffle混洗后发生数据倾斜,写入磁盘时增加分区数,增加reduce的并发处理量,加速数据处理,减轻数据倾斜的影响。
5
qinsi
2021-10-04
坐时光机快进的话,现代的大数据框架大都提供了类似SQL的接口,于是任务的实现和优化就类似数据库中查询计划的生成和优化,对于使用者透明了
共 1 条评论
5
demo
2022-11-20
来自北京
如果只是定期的进行checkpoint那么从checkpoint恢复的时候不是会丢失数据吗?
1
陈迪
2021-10-06
尝试回答思考题:(首先应该是reduce任务存在数据倾斜,map不存在这个问题) 1. 论文中提到的思路:map端本地先算掉一波(combiner),但要求计算任务满足结合律和交换律(commutative和associative) 2. 同样是论文中提到的思路:调参数,自动对倾斜的key任务,通过master,要求cluster manager分配更多的、等比例的资源 3. 猜想一波:还是在partition上做文章,自动对倾斜的key任务,添加一些参数,让这批key的record分开处理,再尝试聚合。但这个思路应该和本地combiner方法类似,对计算任务有要求。
1
泊浮目
2021-10-05
如果让你在 MapReduce 框架层面解决好这一个问题,你觉得有什么好办法吗?——现在的做法都是SQL做声明,底层用CBO做优化。
1
Spoon
2022-09-20
Spark有针对数据倾斜的自动平衡机制
Joey
2022-08-23
来自广东
针对于数据倾斜问题,在reduce前进行数据量预评估,对reduce进行重新分配,确保每个reduce的数据均衡
大包子
2022-06-04
分区不平衡时,加一层负载均衡的机制,重新分配一下任务
Helios
2021-11-25
感觉调度系统和Map Reduce里面的Master做的事情有些重合呢,比如将任务分为多少个、如何找到距离任务最近的分片,感觉两者谁做都可以呢。