Hadoop中MapReduce所面临的问题是什么?
Reduce端的Join,在Map的时候对两个表的两一个key的数据分别打上表的标签,放进同一个key里,然后在Reduce阶段按标签分成两组,再进行Join输出操作。 Map端Join, 适合一端表小的情况,将小表在Map端作为其中一个lookup输入,进行Join操作。 读入输入数据然后产生的中间输出结果必须输出到磁盘,无法在中间内存中处理(Spark可以选择cache在内存里,用空间换时间),重复写磁盘,I/O开销比较大。 Key需要是可比较,会用来排序。 Shuffle和Reduce阶段强制要求对数据按照某key进行排序,某些场景(比如数据量不是特别大的时候,简单hash就够了)会有性能的损失。 不能在线聚合,不论是Map端的combine还是Reduce端的都需要等所有的数据都存放到内存或者磁盘后,再执行聚合操作,存储这些数据需要消耗大量的内存和磁盘空间。如果能够一边获取record一边聚合,那么就会大大的减少存储空间,减少延时。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。