我有一个mapper,它的输出通过我自己的Partitioner映射到多个不同的reducer实例。我的分区程序确保将给定的内容始终发送到给定的reducer实例。我想知道的是,如果由于某种原因,输入数据是偏斜的,并且我得到一百万条记录(更准确地说,#records不能适合内存)特定键,是否有任何可能的方法减速器将还行吗?我的意思是,hadoop迭代是否被传递给reducer一个懒惰的加载器?
答案 0 :(得分:2)
与Reducer关联的值的唯一实际限制是本地磁盘上的可用空间,包括Map和Reduce端。这可以通过添加更多节点以及更多Map / Reduce任务来管理,具体取决于您的倾斜。
所以是的,Iterator从内存和磁盘的组合中加载值。