这是用例:
输入 url 由地图读取,然后在一些过滤后发出。然后分区器根据它们的主机名对它们进行分区。
运行 map-reduce 作业后,我对输出 url 有一个全局限制。我将它均匀地分布在所有减速器上。IE。如果全局限制为 1000,reducer 的数量为 5,那么每个 reducer 最多会发出 (1000/5 = 200) 个 url 作为输出
问题是,如果只有 2 个主机的 url(由于用户输入)并且这 2 个主机中的每一个都有 100000 个 url,则处理这些 url(相同主机,相同分区)的 2 个 reducer 将每个限制为 200 个 url输出。由于分区和发出 0 条记录,Rest reducer 不会获取任何数据进行处理。
因此,即使我有 100000 个 url/主机和 1000 的全局限制,输出也只有 400 个 url(200 个 url/主机)。