如何有效地将 hadoop 与大型 MySQL 数据库一起使用?

Posted

技术标签:

【中文标题】如何有效地将 hadoop 与大型 MySQL 数据库一起使用?【英文标题】:How can I effectively use hadoop with a large MySQL database? 【发布时间】:2014-11-26 18:45:54 【问题描述】:

我对 hadoop 和 MapReduce 比较陌生,但我想用它来分析大量数据。这些数据代表大约 1 GB 的棒球统计数据,并且全部存储在 mysql 数据库中。我知道 hadoop 是围绕将代码引入数据而不是相反的想法构建的,因此传统数据库通常不能很好地与 hadoop 一起使用。但是,我做了一些研究,看起来 Sqoop 可能适合我的需求。以下是我的几个问题:

1 GB 的数据是否足以保证使用 MapReduce 框架?还是小到可以按顺序处理? 如何才能最有效地处理这些数据?我应该使用 Sqoop 插件还是尝试重构数据? 使用 hadoop 可以获得哪些性能提升?

【问题讨论】:

“假设”我们是假设还是您确认了这一点? 这是一个假设,如果我错了,你可以纠正我。 我无权访问您的数据和设置。你做。你需要弄清楚它是否是一个瓶颈,而不是仅仅假设它是。 【参考方案1】:

如果您能够在单台机器的主内存中存储和处理所有数据,那么在多台机器之间拆分数据是没有意义的。

关于你的要求有讨论here。

所以,我认为 MapReduce 处理 1 GB 数据有点过头了。没错,数据库适合从更大的数据集中选择少量数据(前提是您有正确的索引),如果您需要处理所有可用数据,则可能效果不佳。但同样,如果您拥有正确的数据库架构和正确的索引,那么您将能够使用现有的 MySQL 数据服务器非常有效地分析您的数据。

另一种情况 - 您想学习 MapReduce 并可能预期更多数据。那么 Sqoop 真的很有意义。

【讨论】:

以上是关于如何有效地将 hadoop 与大型 MySQL 数据库一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地将大型数据框拆分为多个拼花文件?

如何有效地将大型 .tsv 文件上传到 pyspark 中具有拆分列的 Hive 表?

如何有效且快速地将大型 (6 Gb) .csv 文件导入 R,而不会导致 R REPL 崩溃?

如何有效地将 MySQL 表读入 Apache Spark/PySpark?

如何有效地将 CouchDB 与规范化数据一起使用?

如何使用 PHP 和 MySQL 有效地对大型数据集进行分页?