在多个服务器上运行java代码

eni9jsuy  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(347)

我写了一个java代码,它的运行时间很糟糕。我知道也许我的代码效率不高,我不专注于提高效率。现在唯一重要的是加快代码的运行速度。我可以访问一个有20多个节点的集群。下面是我的代码中运行时间太长的部分的模式。第一个for循环迭代彼此完全独立。

for (int i = 0; i < 1000000; i++) {
        for (int j = 0; j < 10000; j++) {
            HashSet temp1 = new HashSet();
            for (int k = 0; k < 10; k++) {
                HashSet temp2 = new HashSet();
                boolean isSubset = temp1.containsAll(temp2);
                if (isSubset == true) {
                    BufferedReader input = new BufferedReader(new FileReader("input.txt"));
                    HashSet temp3 = new HashSet();
                    for (int l = 0; l < 10000; l++) {
                        boolean isSubset1 = temp1.containsAll(temp3);
                    }
                }
            }
        }
    }

基于我对分布式计算的基本知识,我可以在多个服务器上运行它以更快地得到结果,而且我认为mapreduce是另一个想法。我没有任何并行处理的经验。我需要一些想法和方向我怎么能并行?有没有平台让它平行?mapreduce是个好主意?希望你能帮我一些想法,教程或类似的例子。谢谢。

uqxowvwt

uqxowvwt1#

要使用mapreduce,您首先要将问题划分(Map)为提供给实际处理器(reducer)的子集。在所有Map的输入完成处理之后,这些输入被连接在一起。
这就是说,你有更多的问题比扔cpu在它,这个算法是超级慢,并找出如何Map到像hadoop的东西使用的键值对的输入将需要一些重大的重构。
仅从mapper类就可以阅读hadoop的基础知识:
apache hadoopMap器

ryoqjall

ryoqjall2#

为了获得更好的性能,应该使用线程

相关问题