gpt4 book ai didi

hadoop - pig : Control number of mappers

转载 作者:可可西里 更新时间:2023-11-01 14:20:58 25 4
gpt4 key购买 nike

我可以通过在生成缩减器的语句中使用 PARALLEL 子句来控制缩减器的数量。

我想控制映射器的数量。数据源已经创建,我无法减少数据源中的部件数。是否可以控制我的 pig 语句生成的 map 数量?我可以对生成的 map 数量设置上下限吗?控制这个是个好主意吗?

我尝试使用 pig.maxCombinedSplitSize、mapred.min.split.size、mapred.tasktracker.map.tasks.maximum 等,但它们似乎没有帮助。

有人可以帮助我了解如何控制 map 的数量并可能分享一个工作示例吗?

最佳答案

映射器的数量有一个简单的经验法则:映射器的数量与文件拆分的数量一样多。文件拆分取决于 HDFS 将文件拆分成的 block 的大小(64MB、128MB、256MB,具体取决于您的配置),请注意 FileInput 格式考虑在内,但可以定义自己的行为。

拆分很重要,因为它们与集群中数据的物理位置相关联,Hadoop 将代码带到数据而不是数据到代码。

当文件的大小小于 block 的大小(64MB、128MB、256MB)时就会出现问题,这意味着有多少输入文件就有多少分割,效率不高,因为每个Map任务通常是启动时间。在这种情况下,您最好的选择是使用 pig.maxCombinedSplitSize,因为它会尝试将多个小文件读入一个 Mapper,以某种方式忽略拆分。但是如果你让它太大,你就会冒着将数据带到代码中的风险,并且会遇到网络问题。如果您强制使用太少的映射器,您可能会受到网络限制,因为数据必须从其他数据节点流式传输。让数字接近 block 大小或它的一半,你应该没问题。

其他解决方案可能是将小文件合并为一个大的可拆分文件,这将自动生成高效的映射器。

关于hadoop - pig : Control number of mappers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238341/

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