Hadoop 运行 java 如何在DataNode的reduce函数上

How does Hadoop run the java reduce function on the DataNode's

我对 hadoop 集群中的 Datanode 如何运行作业的 reduce 函数的 java 代码感到困惑。比如,hadoop是如何发送一段java代码到另一台电脑去执行的?

帮我追踪这段代码,其中主节点将 reduce 函数的 java 代码发送到数据节点。

没有。 Reduce 函数在数据节点上执行。 Hadoop 将打包的代码(jar 文件)传输到要处理数据的数据节点。在 运行 时间,数据节点下载这些代码并处理任务。

如图所示,情况如下:

  • 您 运行 通过使用 hadoop jar 命令在客户端上执行作业,在该命令中您传递 jar 文件名、class 名称和其他参数,例如输入和输出
  • 客户端将获取新的应用程序 ID,然后它将 jar 文件和其他作业资源复制到具有高复制因子的 HDFS(在大型集群上默认为 10)
  • 然后Client会真正通过资源管理器提交申请
  • 资源管理器跟踪集群利用率并提交 application master(co-ordinates 作业执行)
  • Application master 将与 namenode 对话并确定输入块的位置,然后与 nodemanagers 一起提交任务(以容器的形式)
  • 容器不过是 JVM,它们 运行 映射和缩减任务(映射器和缩减器 classes),当 JVM bootstrapped 工作时,HDFS 上的资源将被复制到JVM。对于映射器,这些 JVM 将在数据存在的相同节点上创建。处理开始后,将执行 jar 文件以在该机器上本地处理数据(典型)。
  • 为了回答您的问题,reducer 将作为容器的一部分在一个或多个数据节点上 运行ning。 Java 代码将作为 bootstrap 过程的一部分进行复制(当创建 JVM 时)。数据将通过网络从映射器中获取。