Java 为什么Hadoop mapper和reducer采用类名而不是对象?

Java 为什么Hadoop mapper和reducer采用类名而不是对象?,java,hadoop,Java,Hadoop,我刚刚开始使用Hadoop,我看到在job.set*()中设置映射器、还原器和其他任何东西时,它总是要求输入类名。为什么不是那个类的对象 我相信这一定是有原因的。有人愿意提及原因吗?正如您所观察到的,Hadoop中的作业是由map reduce框架以分布式方式执行的 因此,实际作业将通过将工作划分为多个映射器和约简器来执行,其中每个映射/约简作业实际上是一个Java进程,将由集群中许多随机节点上的任务容器执行 我们在作业配置中提到的设置只是有关作业的规范。根据此设置,将在随机JVM任务容器上创建

我刚刚开始使用Hadoop,我看到在
job.set*()
中设置映射器、还原器和其他任何东西时,它总是要求输入类名。为什么不是那个类的对象


我相信这一定是有原因的。有人愿意提及原因吗?

正如您所观察到的,Hadoop中的作业是由map reduce框架以分布式方式执行的

因此,实际作业将通过将工作划分为多个映射器和约简器来执行,其中每个映射/约简作业实际上是一个Java进程,将由集群中许多随机节点上的任务容器执行

我们在作业配置中提到的设置只是有关作业的规范。根据此设置,将在随机JVM任务容器上创建所需的Mapper/Reducer实例

将实例化的map/reduce对象从作业配置传递到每个分布式节点的任务容器(实际的map/reduce任务将在其中执行)是没有效率的,相反,可以根据作业设置在容器上按需创建此类实例


希望这能有所帮助。

正如您可能观察到的,Hadoop中的作业是通过map reduce框架以分布式方式执行的

因此,实际作业将通过将工作划分为多个映射器和约简器来执行,其中每个映射/约简作业实际上是一个Java进程,将由集群中许多随机节点上的任务容器执行

我们在作业配置中提到的设置只是有关作业的规范。根据此设置,将在随机JVM任务容器上创建所需的Mapper/Reducer实例

将实例化的map/reduce对象从作业配置传递到每个分布式节点的任务容器(实际的map/reduce任务将在其中执行)是没有效率的,相反,可以根据作业设置在容器上按需创建此类实例


希望这能有所帮助。

根据你的问题,我推测你正在寻找一个你看不见的物体

在本例中,您正在查找
MAPPER对象
,但在程序中的任何位置都没有找到
NEW
关键字

总而言之。
A.class
如何转换为
A=newa()?为什么?

简单地说,如果没有java或hadoop中的对象,您无法做任何事情

因此,将为所述类创建后台对象以执行程序。在高层,我们可以说这个机制内置于hadoop中,用于根据需要创建对象

在更高的层次上,他们使用
JAVA反射API
在后台无缝地完成这些操作

为什么需要这样做?--<代码>原因

因为我们不知道以下问题的实时答案:

  • 文件大小是多少<代码>地图绘制者的数量基于此信息
  • 有多少个输入拆分(某些对象基于此)
  • 输入和输出有多少个键/值对(这里还有一些对象)
  • 映射器/还原器/等(其他X.class输入和相关对象)
  • 我们不知道

    需要多少(总数)对象?

    何时(程序中的执行时间)需要它们?

    我们需要依赖一个更高端的API,比如反射来在运行时处理它们

    HADOOP使用的
    反射API负责根据时间需要为输入
    类提供
    对象


    希望这能澄清

    根据你的问题,我认为你在寻找一个你看不见的物体

    在本例中,您正在查找
    MAPPER对象
    ,但在程序中的任何位置都没有找到
    NEW
    关键字

    总而言之。
    A.class
    如何转换为
    A=newa()?为什么?

    简单地说,如果没有java或hadoop中的对象,您无法做任何事情

    因此,将为所述类创建后台对象以执行程序。在高层,我们可以说这个机制内置于hadoop中,用于根据需要创建对象

    在更高的层次上,他们使用
    JAVA反射API
    在后台无缝地完成这些操作

    为什么需要这样做?--<代码>原因

    因为我们不知道以下问题的实时答案:

  • 文件大小是多少<代码>地图绘制者的数量
  • 基于此信息
  • 有多少个输入拆分(某些对象基于此)
  • 输入和输出有多少个键/值对(这里还有一些对象)
  • 映射器/还原器/等(其他X.class输入和相关对象)
  • 我们不知道

    需要多少(总数)对象?

    何时(程序中的执行时间)需要它们?

    我们需要依赖一个更高端的API,比如反射来在运行时处理它们

    HADOOP使用的
    反射API负责根据时间需要为输入
    类提供
    对象


    希望这能澄清

    不错。我也在想原因。很好。我也在想原因。