Hadoop Map-Reduce:关于状态的信息:mappers:80%,reducers:20%

Hadoop Map-Reduce: what you can tell about a state: mappers: 80%, reducers: 20%

在采访中我被问到一个问题:关于状态你能说些什么:映射器:80%,缩减器:20%?

我的理解是,进入那种状态是不可能的。因为在 reducer 开始工作之前,所有映射器都应该完成 运行:收集所有键值对并按键分组。

我说的对吗?

Reducers 占 20% 意味着后台线程已开始将数据从 mapper 输出位置复制到 reducer 输入位置。这就是为什么在映射器输出达到 100% 之前,reducers 进度显示为 20%。

before reducers can start their job, all mappers should finished running

没有。

映射器完成后开始随机播放。就像您的示例中的 80% map 和 20% reduce 表示随机播放阶段正在进行中。

reduce阶段有3个sub-phases:

  1. 随机播放
  2. 排序
  3. 减少

可能的,因为减速器处于 shuffle 阶段,所以你的答案不正确。在地图完成之前不可能达到reduce超过33%的状态:

粗略地说,将洗牌排序缩减,每个视为1 /3 的减少阶段。排序和减少不能在映射阶段完成之前开始,但洗牌(复制数据)可以。 因此,在 map 阶段完成之前,不能完成超过 1/3 (33%) 的 reduce 阶段。

您可以通过设置称为 reduce slowstart 的参数值来设置映射器完成减速器将开始复制的百分比。

即使您的 Mappers 尚未完成,Reducers 也可以开始工作。实际上,这就是为什么你看到 reducer 状态甚至在映射器为 100% 之前就达到了 20%,但是当映射器尚未完成时,reducer 状态可以为 0%-33%。希望对你有帮助