2012-05-29 31 views
1

声明:我是一位新手w.r.t Hadoop和Hive。MySQL簇顶部的Hive层

我们建立了一个存储海量数据的MySql集群(版本7.2.5)。这些行运行数百万次,并根据Mysql的自动轮询逻辑进行分区。尽管我们正在利用Cluster 7.2的自适应查询本地化(Adaptive Query Localization,AQL),但我们的一些查询有多个连接,并且会运行几分钟甚至几小时。

在这种情况下,我可以使用Hive与Hadoop一起查询数据库并检索数据吗?它会使查询更快吗?它是否重复其文件系统中的数据?这种方法有什么优点和缺点?

我的意图是使用Hive作为MySQL Cluster上的一层,并将它用于从MySQL Cluster DB读取和写入数据。我的应用程序中没有任何交易。那真的有可能吗?

回答

1

我认为这是可能的。在我看来,这个方向最接近的解决方案是:由Daniel Abadi提供的http://www.hadapt.com/。
它的解决方案的想法是在每个节点上拥有本地RDBMS,并在这些节点上运行通常的hadoop MR和Hive。
原则上,如果您将执行智能Hive集成并将谓词下推到MySQL实例,它可以为您带来一些性能提升。
在同一时间,你应该做一些严重的黑客行为,以使hadoop知道你分片放置以保存数据的局部性。
综上所述 - 这应该是可能的,但需要认真开发。
在同一时间 - 我不知道现成的解决方案运行配置单元的Mysql群集。

+0

所以这看起来像一个长期项目。那么这里有什么更好?如果我们编写自己的MapReduce作业,那么仅使用HDFS/HIVE的hadoop可以帮助减少阅读时间。 –

+0

我认为最简单的解决方案是将数据从MySQL加载到Hive/Hadoop并在那里查询。它将解决可伸缩性问题并带来延迟问题 - 您无法将配置单元集群中的数据保持最新状态。 –