如果输出太大而不适合减速器RAM怎么办? 例如,排序任务。在这种情况下,输出与输入一样大。如果使用单个减速器,则所有数据都不适合RAM。那么分类是如何进行的呢?
答案 0 :(得分:1)
我想我已经得到了答案。 是的,即使数据大于reduce的内存,也可以在单个reducer中执行任何map任务。在shuffle阶段,reducer将数据从mapper复制到reducer的内存并对其进行排序,直到它溢出。一旦它溢出内存,部分数据就存储在Reducer本地磁盘中,它就会开始获取新值。一旦它再次溢出,它将新数据与先前存储的文件合并。合并文件维护已排序的方式(可能使用外部合并排序)。一旦进行了混洗,就以分类的方式存储中间密钥,值对。然后对该数据执行reduce任务。在对数据进行排序时,通过在内存中一次获取一大块数据,可以很容易地在内存中进行聚合。