Java 8 MapReduce用于分布式计算

 此女人不嫁_ 发布于 2023-02-12 17:52

当我parallelStream()在Java 8中听到它在多个内核上进行处理并最终在单个JVM中返回结果时,我很高兴.没有更多的多线程代码行.据我所知,这仅对单个JVM有效.

但是,如果我想在单个主机甚至多个主机上的不同JVM上分发处理,该怎么办?Java 8是否包含任何用于简化它的抽象?

在dreamsyssoft.com的教程中,用户列表

private static List users = Arrays.asList(
    new User(1, "Steve", "Vai", 40),
    new User(4, "Joe", "Smith", 32),
    new User(3, "Steve", "Johnson", 57),
    new User(9, "Mike", "Stevens", 18),
    new User(10, "George", "Armstrong", 24),
    new User(2, "Jim", "Smith", 40),
    new User(8, "Chuck", "Schneider", 34),
    new User(5, "Jorje", "Gonzales", 22),
    new User(6, "Jane", "Michaels", 47),
    new User(7, "Kim", "Berlie", 60)
);

经过处理以获得他们的平均年龄:

double average = users.parallelStream().map(u -> u.age).average().getAsDouble();

在这种情况下,它在单个主机上处理.

我的问题是:它可以使用多个主机进行处理吗?

例如,Host1处理下面的列表并返回average1五个用户:

new User(1, "Steve", "Vai", 40),
new User(4, "Joe", "Smith", 32),
new User(3, "Steve", "Johnson", 57),
new User(9, "Mike", "Stevens", 18),
new User(10, "George", "Armstrong", 24),

类似地Host2处理下面的列表并返回average2剩下的五个用户:

new User(2, "Jim", "Smith", 40),
new User(8, "Chuck", "Schneider", 34),
new User(5, "Jorje", "Gonzales", 22),
new User(6, "Jane", "Michaels", 47),
new User(7, "Kim", "Berlie", 60)

最后Host3计算最终结果如:

average = (average1 + average2)  / 2

使用分布式架构,它可以像远程处理一样解决.Java 8是否有一些更简单的方法来解决这个问题?

我知道像Hadoop,Akka和Promises这样的框架可以解决它.我在谈论纯Java 8.我可以parallelStream()为多个主机获取任何文档和示例吗?

1 个回答
  • 以下是截至2013年9月为Java 8安排的功能列表.

    如您所见,没有专门用于在群集上标准化分布式计算的功能.最接近的是JEP 107,它基于JDK 7中的Fork/Join框架构建,以利用多核CPU.在Java 8中,您将能够使用lambda表达式通过在多个处理器之间划分任务来并行地对集合执行批量操作.

    Java 8还计划使用JEP 103,它也将构建在Java 7 Fork/Join上以并行排序数组.同时,由于Fork/Join显然是一个大问题,它与JEP 155进一步发展.

    因此,群集上的分布式计算没有核心Java 8抽象 - 仅在多个核心上.您需要使用现有设施为真正的分布式计算设计自己的解决方案.

    尽管可能令人失望,但我还是会指出,就像Cascalog和Apache Spark一样,Hadoop仍然有很好的开源第三方抽象.Spark特别允许您通过RDD抽象以分布式方式对数据执行操作,这使您感觉您的数据只是在一个花哨的数组中.

    但是你必须在核心Java中等待这些事情.

    2023-02-12 17:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有