TEZ。慢减速器

时间:2016-02-15 16:53:33

标签: hadoop apache-tez

我对TEZ mapreduce工作有奇怪的行为。

我正在尝试从Hive读取日志数据,通过id,date和其他一些参数将其拆分为一些块,然后写入另一个hive表。

地图阶段工作得足够快,大约需要20分钟,而减速器开始工作,458减速器中的453减速器在接下来的20分钟内处理所有数据。但最后5个减速器工作约1小时。

这是因为我的输入数据包含一些巨大的条目,处理这些条目需要花费很多时间。 这种情况的最佳做法是什么?我应该进行一些hadoop / tez / hive调整以允许对最后一个reducers进行并行处理,还是通过其他参数分割输入数据以避免大量输入会更聪明?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:4)

这种不那么奇怪的行为背后的神奇话语是倾斜。这是一个常见的问题。通常人们更喜欢忽略这个问题......直到他们真正感受到疼痛(就像你现在一样)。

使用TEZ,因为 HIVE-7158 Use Tez auto-parallelism in Hive ,您可以尝试修改某些特定属性:

hive.tez.auto.reducer.parallelism
hive.tez.max.partition.factor
hive.tez.min.partition.factor

但那是"自动并行"当你有几个异常小的简化数据集可以合并时,功能似乎适用,而你的问题正好相反(一个异常大的简化数据集)。所以你应该尝试修补

hive.exec.reducers.bytes.per.reducer
hive.exec.reducers.max 

...改变规模并使"大"新的"正常" (因此"正常"变成"小")。但是,也许你将得到的只有3个减速器需要1个小时才能完成。很难说。

祝你好运。这种性能调整更多的是艺术而不是科学。

参考:

~~~~~~

PS:当然,如果您可以通过更改组织输入数据集的方式来删除偏斜源......