有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hadoop通过socket在还原程序之间共享数据

我正在开发一个Java MapReduce程序,我想知道是否可以使用socket或任何其他方式在还原程序之间共享数据。如果是通过socket,如何检索操作特定密钥的减速机的ip地址和端口号

提前感谢:)


共 (1) 个答案

  1. # 1 楼答案

    您可以通过自己的自定义套接字进行通信,为了找到运行特定密钥的reducer的特定主机,您可以使用JobClient API查询作业跟踪器,以获得正在运行的作业reducer列表

    要找到reducer主机,请通过作业分区程序运行密钥(大多数情况下是散列),确定reducer任务编号(0到num reducers-1),然后找到reducer任务运行的机器(通过JobClient API从作业跟踪器获取)

    不过,有些事情需要考虑:

    • 如果所有的减速机都不能并行运行(减速机多于减速机插槽,或者另一个作业同时运行),会发生什么情况
    • 如果作业跟踪器计划在同一个任务节点上运行两个或多个减速机,您将如何分配端口号以确保它们都不尝试侦听同一个编号(我想您应该选择一个基本端口号,比如21000,然后每个减速机将侦听一个编号为该编号加上减速机编号的端口)。如果该端口已被另一个进程使用,会发生什么情况