Java框架如何处理大数据?

Sab*_*lex 0 java bigdata

我对数据科学还很陌生,现在刚刚开始开发一个需要我分析大数据的系统(例如每个数据库中有 5 到 600 万条记录)。

从更大的角度来看:我有多个数据库,其中包含需要集成的各种数据。整合数据后,我还需要进行一些数据分析。最后,我需要将数据可视化给许多客户。

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

Bru*_*zio 5

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

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](那个时候是beta,但和httpd2不同,已经是多连接非阻塞方式)
  • [mongoDB][9](由于我们的原始内容已经是 JSON 文档样式)
  • [Apache Mahout][10] 用于所有算法实现,包括 MapReduce 策略
  • 除了其他东西。

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

我记得当时美国宇航局使用 Hadoop 在 AWS 中每小时处理约 1TB 的数据,这是由于 [Mars project with the Curiosity][11]。

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

  • 如果您只想实现数据分析、统计学家和数据挖掘者的算法(例如),可能 [R 编程语言][12] 将是最佳选择。
  • 如果您需要非常快速的 I/O(例如飞机的东西):任何本地编译语言,如 [Go Lang][13]、[C++][14] 等。
  • 但如果实际上你要创建一个 web 应用程序,它实际上只是一个客户端或提供大数据解决方案,我会推荐一些更软和可扩展的东西,比如 [nodeJS][15] 甚至是及时编译的技术就像那些基于 JVM([Scala][16]、[Jython][17]、Java)在 [dockerized][18] [微服务][19]...

祝你好运!(抱歉,Stack Overflow 还不允许我添加引用链接 - 但我在这里讨论的所有内容,很容易被谷歌搜索到)。