从我的java / mysql webapp开始减少作业

时间:2011-01-08 22:11:42

标签: mysql architecture jpa hadoop hbase

我需要一些结构建议。我有一个基于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中。

非常感谢任何建议。 干杯, 布赖恩

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

布莱恩 在这种情况下,您可以使用HBase或Hive,也可以只使用原始map-reduce作业。 1. HBase是一个面向列的数据库。 HBase最适合基于列的计算。例如,员工平均工资(假设工资是一列)。凭借其强大的可扩展性功能,我们可以即时添加节点。 2. Hive就像传统的数据库一样支持SQL之类的查询。内部查询将转换为map-reduce问题。我们可以在基于行的计算的情况下使用它。 3.最终选项,我们可以编写自己的map-reduce功能。使用“sqoop”,我们可以将数据从关系数据库迁移到HDFS(Hadoop文件系统)。然后我们可以编写直接处理底层平面文件的map-reduce问题。 提到了一些可能的选择。如果您需要有关上述选项的其他详细信息,请与我们联系。