0

我实际上是在尝试使用带有 Yarn 的 CDH 5.0 上的 Hive 来实现 Hadoop 的解决方案。所以我的架构是: 1 Namenode 3 DataNode 我正在查询约 1.23 亿行 21 列

我的节点使用 2vCPU @2.27 和 8 GO RAM 进行虚拟化

所以我尝试了一些请求并得到了一些结果,然后我在具有相同数据集的基本 MySQL 中尝试了相同的请求,以便比较结果。

实际上 MySQL 比 Hive 快得多。所以我试图理解为什么。我知道我有一些糟糕的表现,因为我的主人。我的主要问题是:我的集群大小合适吗?

我是否需要为这么多数据添加相同的 DataNode(我认为这不是很大)?

如果有人尝试使用大致相同的架构提出一些请求,欢迎您与我分享您的结果。

谢谢 !

4

1 回答 1

0

我正在查询约 1.23 亿行 21 列[...]在我看来这不是很大

这正是问题所在,不是很大。Hive 是一种数据解决方案,并非旨在在您使用的小型数据集上运行。这就像试图使用叉车取出厨房垃圾一样。当然,它会起作用,但手动取出它可能更快。

现在,说了这么多,如果您想要更接近传统 RDBMS 的实时性能,您有几个选择。

  • Hive 0.13+,它使用 TEZ、ORC 和许多其他优化,大大提高了响应时间
  • Impala(CDH 发行版的一部分)完全绕过 MapReduce,但在文件格式支持方面受到更多限制。

编辑:

我是说使用 2 个数据节点可以获得与使用 3 个相同的性能

这一点也不奇怪。由于 Hive 使用 MapReduce 处理查询运算符(join、group by、...),因此会产生 MapReduce 附带的所有成本。无论数据大小和数据节点数量如何,此成本或多或少都是恒定的。

假设您有一个包含 100 行的数据集。您可能会看到 98% 的处理时间用于 MapReduce 初始化,而 2% 用于实际数据处理。随着数据大小的增加,与总时间相比,与 MapReduce 相关的成本可以忽略不计。

于 2014-04-28T22:28:10.423 回答