0

我需要一些架构建议。我有一个基于 java 的 webapp,一个基于 JPA 的 ORM 支持一个 mysql 关系数据库。现在,作为应用程序的一部分,我有一个批处理作业,可以相互比较数千条数据库记录。这项工作变得过于耗时,需要并行化。我正在考虑使用 mapreduce 和 hadoop 来做到这一点。但是,我不太确定如何将其集成到我当前的架构中。我认为最简单的初始解决方案是找到一种将数据从 mysql 推送到 hadoop 作业的方法。我对此做了一些初步研究,发现了以下相关信息和可能性:

1) https://issues.apache.org/jira/browse/HADOOP-2536这给出了一些内置 JDBC 支持的有趣概述 2) 这篇文章http://architects.dzone.com/articles/tools-moving-sql -database描述了一些将数据从 mysql 移动到 hadoop 的第三方工具。

老实说,我刚开始学习 hbase 和 hadoop,但我真的不知道如何将其集成到我的 webapp 中。

任何意见是极大的赞赏。干杯,布赖恩

4

2 回答 2

0

DataNucleus 支持对 HBase 的 JPA 持久性。显然,JPA 是为 RDBMS 设计的,因此永远不可能支持完整的 JPA,但您可以进行基本的持久性/查询

于 2011-01-09T05:42:32.627 回答
0

Brian,在这种情况下,您可以使用 HBase 或 Hive 或仅使用原始 map-reduce 作业。1、HBase是一个面向列的数据库。HBase 最适合基于列的计算。例如,平均员工工资(假设工资是一列)。凭借其强大的可扩展性功能,我们可以动态添加节点。2. Hive 就像传统的数据库一样,支持类似 SQL 的查询。内部查询将转换为 map-reduce 问题。我们可以在基于行的计算中使用它。3. 最后一个选项,我们可以在其中编写自己的 map-reduce 功能。使用“sqoop”,我们可以将数据从关系数据库迁移到HDFS(Hadoop File System)。然后我们可以编写直接处理底层平面文件的 map-reduce 问题。提到了一些可能的选择。

于 2011-01-11T17:55:10.783 回答