mapreduce—hadoop map reduce中的全局值

ar5n3qh5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(497)

我的用例包括找出有缺陷的项目…假设我有一个在hdfs中标记为good/defective的百万个项目的产品列表…我想找出有缺陷项目的前10个匹配项,然后停止。
我在考虑使用计数器来实现这一点,但是看起来计数器都是任务跟踪器级别的…所以每个任务跟踪器都维护自己的计数器副本,直到作业完成才真正聚合。因此,在一个split的map作业中运行的计数器不会知道另一个map是否已经找到了这10个条目。
你知道怎么解决这个问题吗?

gev0vcfq

gev0vcfq1#

在map任务中找到本地前10条记录并将它们发送到reducer。因此,如果有7个Map器,那么reducer将获得70条记录。reducer必须对这70条记录进行排序,并发出全球前10条记录。这是相同的代码。
请注意,这种方法只适用于单个减速器,而不适用于1+减速器,这可能是一个瓶颈。而且,Map器之间没有通信,因此无法减轻减速机的负担。看看这篇文章,Map绘制者可以用全球数据相互交流。ibmbiginsights实现了它。
请查看此博客以了解更多模式。

smtd7mpg

smtd7mpg2#

假设您使用的是hadoop,计数器也是全局可用的。
但是,我不理解使用map reduce解决这个问题的原因。

相关问题