我对hadoop集群中的datanode如何运行作业reduce函数的java代码感到困惑。比如,hadoop如何将java代码发送到另一台计算机来执行?hadoop是否向节点注入java代码?如果是,那么java代码在hadoop中的位置是什么?或者reduce函数是在主节点上运行的,而不是在datanodes上运行的?帮助我跟踪主节点将reduce函数的java代码发送到datanode的代码。
1u4esq0p1#
如图所示,情况如下:通过使用 hadoop jar 命令中传递jar文件名、类名和其他参数,如输入和输出客户机将获得新的应用程序id,然后将jar文件和其他作业资源复制到具有高复制因子的hdfs(在大型集群上默认为10)然后客户端将通过资源管理器提交应用程序资源管理器跟踪集群利用率并提交应用程序主控程序(协调作业执行)应用程序主节点将与namenode通信并确定输入块的位置,然后与节点管理员一起提交任务(以容器的形式)容器只不过是jvm,它们运行map和reduce任务(mapper和reducer类),当jvm引导时,hdfs上的作业资源将被复制到jvm。对于Map程序,这些JVM将在数据所在的相同节点上创建。一旦处理开始,jar文件将被执行以在本地处理该机器上的数据(典型)。为了回答您的问题,reducer将作为容器的一部分在一个或多个数据节点上运行。java代码将作为引导过程的一部分被复制(当jvm被创建时)。数据将通过网络从Map器中获取。
hadoop jar
pieyvz9o2#
不,reduce函数在数据节点上执行。hadoop将打包的代码(jar文件)传输到要处理数据的数据节点。在运行时数据节点下载这些代码并处理任务。
2条答案
按热度按时间1u4esq0p1#
如图所示,情况如下:
通过使用
hadoop jar
命令中传递jar文件名、类名和其他参数,如输入和输出客户机将获得新的应用程序id,然后将jar文件和其他作业资源复制到具有高复制因子的hdfs(在大型集群上默认为10)
然后客户端将通过资源管理器提交应用程序
资源管理器跟踪集群利用率并提交应用程序主控程序(协调作业执行)
应用程序主节点将与namenode通信并确定输入块的位置,然后与节点管理员一起提交任务(以容器的形式)
容器只不过是jvm,它们运行map和reduce任务(mapper和reducer类),当jvm引导时,hdfs上的作业资源将被复制到jvm。对于Map程序,这些JVM将在数据所在的相同节点上创建。一旦处理开始,jar文件将被执行以在本地处理该机器上的数据(典型)。
为了回答您的问题,reducer将作为容器的一部分在一个或多个数据节点上运行。java代码将作为引导过程的一部分被复制(当jvm被创建时)。数据将通过网络从Map器中获取。
pieyvz9o2#
不,reduce函数在数据节点上执行。hadoop将打包的代码(jar文件)传输到要处理数据的数据节点。在运行时数据节点下载这些代码并处理任务。