gpt4 book ai didi

Hadoop - Reducers 花费大量时间写入数据(多个输出)

转载 作者:可可西里 更新时间:2023-11-01 16:12:53 26 4
gpt4 key购买 nike

所以我正在使用 org.apache.hadoop.mapreduce.lib.output 包中的 MultipleOutputs

我有一个 reducer,它正在连接 2 个数据源并发出 3 个不同的输出。

调用了 55 个 reduce 任务,平均每个任务需要大约 6 分钟来发出数据。有大约 11 分钟的异常值。

所以我观察到,如果我评论实际输出发生的部分,即调用 mos.write()(多输出),那么平均时间减少到几秒,整个工作完成大约 2 分钟。

我确实有很多数据要发送(大约 40-50 GB)。

在考虑和不考虑压缩的情况下,我可以做些什么来加快速度。

详细信息:我正在使用 TextOutputFormat 并提供一个 hdfs 路径/uri。

进一步说明:

我的 reducer 有少量输入数据,但是 reducer 正在执行 reduce side join,因此会发出大量数据。由于离群 reducer 大约需要 11 分钟,减少 reducer 的数量会增加这个时间,从而增加我工作的总时间,并且不会解决我的目的。

reducer 的输入来自 2 个映射器。映射器 1 -> 发出大约 10,000 条记录。 ( key ID)映射器 2 -> 发出大约 1500 万条记录。 (Key Id, Key Id2, Key Id3)

在 reducer 中,我得到属于 Key Id 的所有内容,按 Key Id、KeyId2 和 KeyId3 排序。

所以我知道我有一个像这样的迭代器:Mapper1输出,然后Mapper2输出。

在这里,我将 Mapper1 的输出存储在 ArrayList 中,并开始流式传输 Mapper2 的输出。

对于我做的每一个 Mapper2 记录,一个 mos.write(....)我有条件地将此记录的一部分存储在内存中(在 HashSet 中)每次 KeyId2 更改时,我都会执行额外的 mos.write(...)

在我的 reducer 的关闭方法中,如果我在条件步骤中存储了任何东西,我就会发出。所以第三个 mos.write(...)

我已经看完了文章http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performance/如前所述:

提示 1:正确配置我的集群超出了我的控制范围。

技巧 2:使用 LZO 压缩 - 或一般压缩。我正在尝试的东西。

技巧 3:调整映射器和缩减器的数量 - 我的映射器完成得非常快(以秒为单位)可能是因为它们几乎是恒等映射器。 Reducers 需要一些时间,如上所述(这是我尝试减少的时间)所以增加 reducers 的数量可能会帮助我 - 但随后会出现资源争用,一些 reducers 将不得不等待。这对我来说更像是一种实验性的尝试和错误。

Tip4:写一个组合器。不适用于我的情况(减少侧连接)

Tip5:使用 apt writable - 我现在需要使用 Text。所有这 3 个输出都进入目录,这些目录上有一个配置单元模式。稍后当我想出如何从多个输出发出 ParquetFormat 文件时,我可能会更改此方法和表存储方法。

技巧 6:重用可写对象。好的,这是我到目前为止还没有考虑过的事情,但我仍然相信它的磁盘写入需要时间而不是处理或 java 堆。但无论如何,我会再试一次。

Tip7:使用穷人的分析。有点已经这样做了,并且发现它实际上花费了大部分时间的 mos.write 步骤。

最佳答案

1.减少 reducer 的数量。

优化的 reducer 数量(对于一般的 ETL 操作)是 1 个 reducer 有大约 1GB 的数据。这里您的输入数据(以 GB 为单位)本身少于 reducer 的数量。

2. 可以做代码优化。分享代码,否则引用http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performance/对其进行优化。

3. 如果这没有帮助,请了解您的数据。数据可能有偏差。如果您不知道什么是倾斜的, pig 中的倾斜连接会有所帮助。

关于Hadoop - Reducers 花费大量时间写入数据(多个输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27447632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com