Mapper 和 Reducer 可以放在不同的 jar 上吗

Posted

技术标签:

【中文标题】Mapper 和 Reducer 可以放在不同的 jar 上吗【英文标题】:Can Mapper and Reducer be on separate jars 【发布时间】:2014-01-28 12:50:48 【问题描述】:

据我所知,在 MapReduce 作业中,作业运行器类本身可以驻留在与映射器和减速器不同的单独 jar 中 (check this answer) 并且 setJarByClass 是我将传递单独的 jar 信息的工作位置。 但是,有没有办法让 mapper 和 reducer 分别放在自己单独的 jar 中?

10 倍!

【问题讨论】:

【参考方案1】:

是的,可以将 Mapper 和 Reducer 放在单独的 JAR 中。

我过去为实现这一点所做的是:

    将包含 Mapper 和 Reducer 的所需 JARS 放在 HADOOP_CLASSPATH 环境变量中 如果 Mapper/Reducer 未包含在 Driver JAR 中,则使用 Hadoop ToolRunner 通过 -libjars 选项将包含 Mapper 和 Reducer 的 JARS 提供给 Hadoop 分布式缓存。 使用适当的 Java ClassLoader 将 Mapper 和 Reducer 类手动加载到运行时类路径中

【讨论】:

您确定需要使用分布式缓存来完成吗?听起来很奇怪,我不能将包含 3 个类(mapper、driver、reducer)的包导出到 1 个 jar 文件中吗?

以上是关于Mapper 和 Reducer 可以放在不同的 jar 上吗的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Hadoop Mapreduce 中为单个作业打印 Mapper 和 reducer 输出

Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类

tasktracker对应hadoop中的mapper还是reducer?

Mapreduce:在单个作业中同时从 mapper 和 reducer 写入

Hadoop-2.4.1学习之怎样确定Mapper数量

自定义 Mapper 和 Reducer 与 HiveQL