Hadoop 运行 java 如何在DataNode的reduce函数上
How does Hadoop run the java reduce function on the DataNode's
我对 hadoop 集群中的 Datanode 如何运行作业的 reduce 函数的 java 代码感到困惑。比如,hadoop是如何发送一段java代码到另一台电脑去执行的?
- Hadoop 是否向节点注入 java 代码?如果是这样,java 代码位于 hadoop 中的什么位置?
- 或者主节点上的 reduce 函数 运行 不是数据节点?
帮我追踪这段代码,其中主节点将 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 时)。数据将通过网络从映射器中获取。
我对 hadoop 集群中的 Datanode 如何运行作业的 reduce 函数的 java 代码感到困惑。比如,hadoop是如何发送一段java代码到另一台电脑去执行的?
- Hadoop 是否向节点注入 java 代码?如果是这样,java 代码位于 hadoop 中的什么位置?
- 或者主节点上的 reduce 函数 运行 不是数据节点?
帮我追踪这段代码,其中主节点将 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 时)。数据将通过网络从映射器中获取。