• 在路上
    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做的事情有些重合呢,比如将任务分为多少个、如何找到距离任务最近的分片,感觉两者谁做都可以呢。
    
    