Mapreduce 在不同的远程节点上均匀创建同一参与者的多个实例?

Mapreduce 在不同的远程节点上均匀创建同一参与者的多个实例?,mapreduce,akka,Mapreduce,Akka,为了实现可伸缩性,我希望Map actor实例(下面名为mapActor)分布在多个远程节点上,比如host1、host2和host3。我不确定如何在Akkaapplication.conf中实现这一点 MapReduceSystem { include "common" akka { actor { deployment { /mapActor { router = round-robin nr-of-inst

为了实现可伸缩性,我希望Map actor实例(下面名为
mapActor
)分布在多个远程节点上,比如
host1
host2
host3
。我不确定如何在Akka
application.conf中实现这一点

MapReduceSystem {
  include "common"
  akka {
    actor {
      deployment {
        /mapActor {
          router = round-robin
          nr-of-instances = 48
          remote = "akka.tcp://MapReduceSystem@host1:2552,akka.tcp://MapReduceSystem@host2:2552,akka.tcp://MapReduceSystem@host3:2552" 
        }
        /reduceActor {
          remote = "akka.tcp://MapReduceSystem@host1:2552"
          router = round-robin
          nr-of-instances = 1
        }
        /masterActor {
          remote = "akka.tcp://MapReduceSystem@host1:2552"
          nr-of-instances = 1
        }
      }
    }
    remote.enabled-transports = ["akka.remote.netty.tcp"]
    remote.netty.tcp.hostname = "host1"
  }
}
为了完整起见,这里是我的
common.conf

akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
  }
  remote.netty.tcp.port = 0
  remote.log-remote-lifecycle-events = off
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
}  
注意
mapActor
的定义,我想提供3台主机来创建此Actor的实例,每台主机16台,但是
remote
参数只占用一台主机。我该怎么做

据我所知,此配置将对应于系统启动计算机
host1
,配置在
host2
host3
上的外观如何

因此,您需要从


因此,您需要的不是
remote=“a,b,c”
而是
target.nodes=[“a”,“b”,“c”]

除了pushy指出的配置语法问题之外,除了在
主机1
主机2
上启动系统,在
主机1
之前不需要做任何事情,这样当启动
/user/mapActor
时,它的路由可以成功部署到它们上。配置取自
host1
并传输到其他主机,无需进一步配置,并且无需在工作主机上调用
actorOf
(至少不适用于讨论中的路由器)。配置取自
host1
并传输到其他主机,无需进一步配置,无需在工作主机上调用
actorOf
(至少不需要讨论中的路由器)。

部署配置仅需要在调用
actorOf
的主机上进行,目标节点将被告知要做什么。完美!这是我缺少的一点重要信息。目标节点中的代码怎么样?main不会在那里做任何
actorOf
,或者?如果你能详细说明一个完整的答案,我会接受。部署配置只需要在你调用
actorOf
的主机上,目标节点就会被告知该做什么。太好了!这是我缺少的一点重要信息。目标节点中的代码怎么样?如果你能详细说明一个完整的答案,我会接受。
akka {
  actor {
    deployment {
     /serviceA/aggregation {
       router = "round-robin"
       nr-of-instances = 10
       target {
         nodes = ["akka.tcp://app@10.0.0.2:2552", "akka.tcp://app@10.0.0.3:2552"]
       }
      }
    }
  }
}