gpt4 book ai didi

mysql - Hadoop(+HBase/HDFS)与 Mysql(或 Postgres)——要处理和查询的独立结构化数据负载

转载 作者:可可西里 更新时间:2023-11-01 06:29:17 24 4
gpt4 key购买 nike

你好,在 SO

我想听听尊敬的各位对以下内容的一些想法/评论。

我有 100M 条记录需要处理。我有 5 个节点(在岩石集群中)来执行此操作。数据非常结构化,非常适合关系数据模型。我想并行处理事情,因为我的处理需要一些时间。

在我看来,我有两个主要选择:

在每个节点上安装mysql,每个节点放20M条记录。使用头节点将查询委托(delegate)给节点并聚合结果。 Query Capabilities++,但在选择分区策略等方面我可能会有些头疼(问:这就是他们所说的 mysql/postgres 集群吗?)。真正糟糕的是记录的处理现在由我来处理(如何跨机器分发等)...

或者安装 Hadoop、Hive 和 HBase(请注意,这可能不是存储我的数据的最有效方式,因为 HBase 是面向列的)并仅定义节点。我们用 MapReduce 范式编写所有内容,然后,砰的一声,我们从此过上了幸福的生活。这里的问题是我们失去了“实时”查询功能(我知道你可以使用 Hive,但不建议实时查询 - 我需要) - 因为我有时也有一些正常的 sql 查询要执行“select * from wine where color = 'brown'”。

请注意,理论上 - 如果我有 100M 台机器,我可以立即完成整个操作,因为对于每条记录,处理过程都是独立于其他记录的。另外 - 我的数据是只读的。我不认为会发生任何更新。我不需要/想要一个节点上的 100M 记录。我不希望有冗余数据(因为有很多)所以将它保存在 mysql/postgres 和 Hadoop/HBase/HDFS 中。不是真正的选择。

非常感谢

最佳答案

你能证明MySQL是瓶颈吗? 100M 条记录并不多,看起来您没有执行复杂的查询。在不知 Prop 体是哪种处理的情况下,以下是我将按以下顺序执行的操作:

  1. 将 100M 保留在 MySQL 中。查看 Cloudera 的 Sqoop 实用程序,从数据库导入记录并在 Hadoop 中处理它们。
  2. 如果 MySQL 是 (1) 中的瓶颈,请考虑设置从复制,这将使您并行读取,而无需分片数据库的复杂性。由于您已经声明不需要写回数据库,因此这应该是一个可行的解决方案。您可以根据需要将数据复制到任意数量的服务器。
  3. 如果您正在从数据库运行复杂的选择查询,并且 (2) 仍然不可行,请考虑使用 Sqoop 导入您的记录并在 Hadoop 中执行您需要的任何查询转换。

在你的情况下,除非绝对必要,否则我会抵制跳出 MySQL 的诱惑。

关于mysql - Hadoop(+HBase/HDFS)与 Mysql(或 Postgres)——要处理和查询的独立结构化数据负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com