我正在开发一个 Java MapReduce 程序,我想知道是否可以使用套接字或任何其他方式在减速器之间共享数据。如果是通过sockets,如何获取某个key的reducer操作机器的ip地址和端口号?
提前致谢 :)
您可以通过您自己的自定义套接字进行通信,并找到正在运行特定密钥的减速器的特定主机,您可以使用 JobClient API 查询作业跟踪器以获取正在运行的作业减速器列表。
要找到 reducer 主机,请通过作业 Partitioner 运行密钥(大多数情况下为哈希),确定 reducer 任务编号(0 到 num reducers-1),然后找到运行 reducer 任务的机器(从 JOb Tracker 获取通过 JobClient API)。
不过有些事情需要考虑: