如果输出太大以至于不能装入减速机柱塞怎么办?例如排序任务。在这种情况下,输出和输入一样大。如果使用一个减速机,那么所有的数据都不适合ram。那么分拣是如何进行的呢?
wfsdck301#
我想我已经找到答案了。是的,即使数据比reduce的内存大,也可以在一个reducer中执行任何map任务。在shuffle阶段,reducer将数据从mapper复制到reducer的内存中,并对其进行排序,直到溢出为止。一旦内存溢出,部分数据就存储在reducers本地磁盘中,并开始获取新值。一旦它再次溢出,它就会将新数据与先前存储的文件合并。合并文件保持排序方式(可能使用外部合并排序)。一旦对中间键执行了洗牌操作,值对将以排序方式存储。然后对该数据执行reduce任务。在对数据进行排序时,通过在内存中一次获取一块数据,可以很容易地在内存中进行聚合。
1条答案
按热度按时间wfsdck301#
我想我已经找到答案了。是的,即使数据比reduce的内存大,也可以在一个reducer中执行任何map任务。在shuffle阶段,reducer将数据从mapper复制到reducer的内存中,并对其进行排序,直到溢出为止。一旦内存溢出,部分数据就存储在reducers本地磁盘中,并开始获取新值。一旦它再次溢出,它就会将新数据与先前存储的文件合并。合并文件保持排序方式(可能使用外部合并排序)。一旦对中间键执行了洗牌操作,值对将以排序方式存储。然后对该数据执行reduce任务。在对数据进行排序时,通过在内存中一次获取一块数据,可以很容易地在内存中进行聚合。