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?