如何使用Java框架处理大数据?

时间:2016-11-29 10:17:52

标签: java bigdata

我对数据科学很陌生,现在只是开始开发一个系统,要求我分析大数据(例如每个数据库中有5到6百万条记录)。

从更大的角度来看:我有多个DB,包含需要集成的各种数据。在整合数据之后,我还需要执行一些数据分析。最后,我需要将数据可视化到许多客户端。

总的来说,我想知道处理大数据的当前技术/趋势是什么(即使用java框架)

1 个答案:

答案 0 :(得分:2)

答案是:取决于您的非功能性要求。您的用例对于决定使用哪种技术至关重要。 让我分享一下我的经验,以澄清我的意思:

2012年,我需要每月处理约200万个非结构化记录,并执行熵(信息理论)和相似度算法,每分钟约600个请求。 我们的场景由:

组成
  • 记录非结构化,但已经采用JSON格式。
  • 熵和相似度的算法基于数据库的所有内容与要匹配的记录(参见[Shannon熵公式] [1],你会理解我所说的复杂性)
  • 他们更多100个不同的Web应用程序作为此解决方案的客户。

考虑到这些要求(和许多其他要求),以及用[Casandra] [2],[Hadoop] [3],[Voldmort] [4],[neo4j] [5]执行PoC,以及压力测试,弹性,可扩展性和稳健性,我们在那个时刻(2012)获得了最佳解决方案:

  • Java EE 7(激活了新的Garbage-First(G1)收集器)
    • JBoss AS 7([wildfly] [6])+ [Infinispan] [7]用于MapReduce竞争条件,以及其他集群的控制和分布式缓存需求。
  • Servlet 3.0(因为它是非阻塞I / O)
  • [Nginx] [8](在那段时间是测试版,但httpd2不同,它已经是非阻塞方式的多个连接)
  • [mongoDB] [9](由于我们的原始内容已经采用JSON文档样式)
  • [Apache Mahout] [10]用于所有算法实现,包括MapReduce策略
  • 等等。

所以,一切都取决于你的要求。没有银弹。每种情况都需要进行架构分析。

我记得当时的Nasa正在使用Hadoop在AWS处理每小时约1TB,因为[火星项目有好奇心] [11]。

在您的情况下,我建议您注意您的要求,也许是Java框架,这不是您需要的(或者不仅仅是您需要的):

  • 如果您只想实施数据分析算法,统计学家和数据挖掘者(例如),可能[R编程语言] [12]将是最佳选择。
  • 如果你需要一个非常快速的I / O(例如飞机的东西):任何本地编译语言,如[Go Lang] [13],[C ++] [14]等。
  • 但实际上,如果您要创建一个实际上只是客户端或提供大数据解决方案的Web应用程序,我会推荐一些更加柔软和可扩展的东西,如[nodeJS] [15]甚至是时间编译技术,如[Dockerized] [18] [微服务] [19]中的JVM([Scala] [16],[Jython] [17],Java)...
祝你好运! (对不起,Stack Overflow不允许我添加引用链接 - 但我在这里谈到的所有内容都很容易用Google搜索。)