Hadoop和MySQL集成

14

我们希望在我们的系统中实现Hadoop,以提高其性能。

该过程如下: Hadoop将从MySQL数据库中获取数据,然后对其进行处理。 接着,输出结果将会被导出回MySQL数据库。

这是一个好的实现方案吗?这是否会提高我们系统的整体性能? 有哪些要求需要满足?之前有没有人做过类似的工作?一份好的教程会非常有帮助。

谢谢

5个回答

5

2

Hadoop介绍

Hadoop主要用于大量半结构化数据的批处理作业。批处理是指即使最短的作业也需要几分钟的时间。您面临的性能问题是什么类型?是基于数据转换还是报告生成?根据情况,这种架构可能会有所帮助,也可能会使事情变得更糟。


2
正如Joe所提到的,Sqoop是Hadoop生态系统中一个很好的工具,用于将数据从SQL数据库(如MySQL)导入和导出。
如果您需要更复杂的MySQL集成,包括过滤或转换等功能,则应使用集成框架或集成套件解决此问题。请查看我的演示文稿“超越Hadoop的大数据-如何集成您的所有数据”以获取有关如何在Hadoop中使用开源集成框架和集成套件的更多信息。

1
虽然这不是常规的Hadoop用法,但在以下情况下可能有意义:
a)如果您有很好的方法将数据分区为输入(例如现有分区)。
b)每个分区的处理相对较重。我建议每个分区至少需要10秒的CPU时间。
如果两个条件都满足-您将能够应用任何所需的CPU功率来进行数据处理。
如果您正在进行简单的扫描或聚合-我认为您不会获得任何收益。另一方面-如果您要在每个分区上运行一些CPU密集型算法-那么您的收益确实可以显着提高。
我还要提到一个单独的情况-如果您的处理需要大量数据排序。我认为MySQL在对数十亿条记录进行排序方面并不好。 Hadoop可以做到。

这是常规的Hadoop使用。请参考Lamda架构。使用MySQL作为速度层是规范的(尽管也使用其他工具)。如果这不是规范的话,SQOOP就不存在了。 - nick
通常情况下,当我们需要大规模扩展时,Hadoop才有意义。对一个MySQL运行数十个mapper并不能带来太多的收益。通常的用法是使用Hadoop预处理和聚合原始数据,然后加载到关系型数据库中... - David Gruzman

0

我同意Sai的观点。只有在需要时,我才会将Hadoop与MySQL一起使用。我将表格导出为CSV格式并上传到HDFS以更快地处理数据。如果您想要持久化您的已处理数据,您将需要编写一个单个reducer作业来执行批量插入,以提高插入性能。
但是这实际上取决于你想要做什么样的事情。


1
我相信将其导出为csv文件,然后从中加载到mysql中会比直接批量插入hadoop输出到数据库中更快。后者是一个jdbc调用,与文件加载相比较慢。 - Harsha Hulageri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接