我们希望在我们的系统上实现Hadoop以提高其性能。
这个过程是这样的: Hadoop将从MySQL数据库收集数据然后进行处理。 然后输出将被导出回MySQL数据库。
这是一个很好的实施吗?这会改善我们系统的整体性能吗? 有什么要求,以前做过吗?一个好的教程真的会有所帮助。
由于
答案 0 :(得分:5)
Sqoop是一种用于将关系数据库中的数据导入Hadoop
的工具https://github.com/cloudera/sqoop/wiki/
以及关于它的视频http://www.cloudera.com/blog/2009/12/hadoop-world-sqoop-database-import-for-hadoop/
答案 1 :(得分:2)
Hadoop主要用于大型半结构化数据的基于批处理的作业。从某种意义上来说,即使是最短的作业,批处理的大小也是几分钟。您遇到什么样的性能问题?它是基于数据转换还是报告。根据这种架构可能有所帮助或使事情变得更糟。
答案 2 :(得分:2)
正如Joe所提到的,Sqoop是Hadoop生态系统的一个很好的工具,用于从SQL数据库(如MySQl)导入和导出数据。
如果您需要更复杂的MySQL集成,包括:过滤或转换,那么您应该使用集成框架或集成套件来解决此问题。有关如何将开源集成框架和集成套件与Hadoop一起使用的更多信息,请查看我的演示文稿“Big Data beyond Hadoop - How to integrate ALL your data”。
答案 3 :(得分:1)
尽管不是常规的hadoop使用方法。它在下面的场景中很有意义:
a)如果您有好的方法将数据划分为输入(如现有分区)。
b)每个分区的处理相对较重。我会给每个分区至少10秒的CPU时间。
如果满足这两个条件 - 您将能够应用任何所需的CPU功率来进行数据处理。
如果您正在进行简单的扫描或聚合 - 我认为您将无法获得任何收益。另一方面 - 如果你要在每个分区上运行一些CPU密集型算法 - 那么你的收益确实很大。
如果您的处理需要大量数据排序,我还会提到一个单独的案例。我认为MySQL不会很好地排序数十亿条记录。 Hadoop会这样做。
答案 4 :(得分:0)
我同意赛。我只在需要时使用Hadoop和MySql。我将表导出为CSV并将其上传到HDFS以更快地处理数据。如果要保留已处理的数据,则必须编写单个reducer作业,该作业将执行某种批处理插入以提高插入性能。
但这实际上取决于你想做什么样的事情。