我实际上是尝试使用Hive在CDH 5.0上使用Harn实现Hadoop解决方案。所以我的架构是: 1 Namenode 3 DataNode 我用21列查询了大约1.23亿行
我的节点使用2vCPU @ 2.27和8 GO RAM进行虚拟化
所以我尝试了一些请求,得到了一些结果,之后我在基本的MySQL中尝试了相同的数据集,以便比较结果。
实际上MySQL比Hive快得多。所以我试图理解为什么。我知道因为我的主人而有一些不好的表现。我的主要问题是:我的集群是否正在调整大小?
我是否需要为此数据量添加相同的DataNode(在我看来这不是很大)?
如果有人尝试使用大致相同的架构,我们欢迎您将结果分享给我。
谢谢!
答案 0 :(得分:0)
我查询了大约1.23亿行,包含21列 [...] ,这在我看来并不是很大
这正是问题所在,并不是很大。 Hive是 大型 数据解决方案,并不适用于像您使用的小型数据集一样运行。这就像试图用叉车取出厨房垃圾一样。当然,它会起作用,但手动取出可能会更快。
现在,尽管如此,如果您希望实时性能更接近传统RDBMS,那么您有几个选择。
修改强>
我说有2个数据节点我的性能与3
相同
这一点都不奇怪。由于Hive使用MapReduce来处理查询运算符(join,group by,...),因此会产生MapReduce带来的所有成本。无论数据大小和数据节点数量如何,此成本或多或少都是恒定的。
我们假设您有一个包含100行的数据集。您可能会在MapReduce初始化中看到98%的处理时间,在实际数据处理中看到2%的处理时间。随着数据大小的增加,与总时间相比,与MapReduce相关的成本变得微不足道。