大规模数据处理学习笔记:1.从未入门到放弃MapReduce

1. 从未入门到放弃MapReduce

\quad 之前看过一些关于大数据技术的内容和文章,了解了一些关于MapReduce的东西,不得不感慨技术发展是如此之快,MapReduce这么快已经开始逐渐沦落为“明日黄花”了。到2014年,Google内部已经几乎没有人写新的MapReduce了。

MapReduce被取代的原因主要有以下两个:

  • 高昂的维护成本
  • 时间性能达不到用户期待

MapReduce复杂度很高,从Google500多页的性能优化手册就足够说明它的复杂度了。

从2016年开始,Google在新员工的培训中已经将MapReduce改为FlumeJava(它后来的开源版本为Apache Beam)的数据处理技术

下一代数据处理技术雏型也即上面提到的FlumeJava,则解决了上面列举的MapReduce的短板。此外,它还带来了更好的一些别的优点:

  • 更好的可测试性
  • 更好的可监控性
  • 从1条数据到1亿条数据可以无缝扩展,不需要修改一行代码

这里记录一下分片的概念:
大规模数据处理学习笔记:1.从未入门到放弃MapReduce_第1张图片
大规模数据处理学习笔记:1.从未入门到放弃MapReduce_第2张图片
如何缓解上面分片的问题(20+岁的用户较多),也即处理Reducer key的倾斜问题,可以有以下几种缓解的思路:

  1. 将年龄的十位数和个位数调换,如21,22,23,24转换为12,22,32,42;但也存在hot spot的问题(如25岁的用户特别多)
  2. 哈希思想解决。传统哈希的求余运算在面对需要增减对象的场景时不够友好(m变了有些位置就映射不到了,需要重新再计算所有对象的位置)。改善方法为:使用Consistent hashing,即一致性哈希环处理,采用虚拟节点分配数据较多的对象

课程来自极客时间,以下为购买链接:(老师回答问题很认真,高手风范)
https://time.geekbang.org/column/intro/167?code=eBldjnQWBAomFiOJ0QysW3uX1hpGY2UfRDE75sBHQKQ%3D

你可能感兴趣的:(大数据处理技术,MapReduce,切片)