【问题标题】:kick off a map reduce job from my java/mysql webapp从我的 java/mysql webapp 启动 map reduce 工作
【发布时间】:2011-01-08 22:11:41
【问题描述】:

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

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

【问题讨论】:

  • 线程和几个存储过程应该可以做到:P

标签: mysql architecture jpa hadoop hbase


【解决方案1】:

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

【讨论】:

  • 谢谢! DataNucleus 看起来很酷!我会调查更多!
【解决方案2】:

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

【讨论】:

  • 嗨,克里希纳,感谢您的回复。我的计算是基于行的,所以看起来选项 2(Hive)或选项 3 Sqoop 到 HDFS 是更好的方法。我知道 Sqoop 可以将数据从 DB 获取到 HDFS,但是您能否告诉我 sqoop 是否也是将数据从 DB 获取到 Hive 的正确方法?最后,Hive 与 raw map reduce 和 HDFS 的优缺点是什么。非常感谢,布赖恩
  • 似乎我找到了第一部分的答案...archive.cloudera.com/cdh/3/sqoop/…。那么,也许您可​​以就 Hive 与 HDFS 的优势给我您的经验/意见?
  • Hbase 和 Hive 都归结为 map-reduce 问题。 Raw Map-reduce 方法的唯一优点是我们可以根据我们的要求自定义分解。即使使用 Hbase 和 Hive,我们也可以自定义。这完全取决于您的要求。如果您能更详细地解释您的问题,我们会尽力帮助您。
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 2014-11-04
  • 2012-04-09
  • 2018-11-16
相关资源
最近更新 更多