Hive 在 java Map Reduce 作业上提供了一个抽象层,因此与 Java Map Reduce Jobs 相比,它应该存在性能问题。
Do we have any benchmark to compare the performance of Hive Query & Java Map Reduce Jobs ?
具有运行时数据的实际用例场景将是真正的帮助。
谢谢
您的前提是“因此与 Java Map Reduce Jobs 相比,它应该存在性能问题。” 是错的......
Hive(以及 Pig 和 crunch 以及其他 map/reduce 抽象)将比完全调整的手写 map/reduce 慢。
但是,除非您对 Hadoop 和 map/reduce 有经验,否则您编写的 map/reduce 与 Hive 等相比,在非平凡查询上可能会更慢。人。会做
前段时间我在虚拟机中做了一些小测试,但我并没有真正注意到任何区别。也许 Hive 有时会慢几秒钟,但我真的不知道这是 Hives 性能还是我的 VM 由于内存不足而挂起。我认为要记住的一件事是,Hive 将始终确定完成 MapReduce 工作的最快方法。现在,当您编写小型 MapReduce 作业时,您可能能够自己找到最快的方法。但是对于大型复杂工作(使用连接等),您是否始终能够与 Hive 竞争?
此外,与编写 HiveQL 查询相比,编写多个类和方法的 MapReduce 作业所需的时间似乎要花很多时间。
另一方面,我有一种感觉,当我自己写作业时,更容易知道发生了什么。
如果您的机器上有小型数据集并希望使用 Apache Hive 进行处理,那么与使用 Hadoop MapReduce 处理相同数据集相比,在小型数据集上执行 Job 会很慢。如果您考虑小型数据集,hive 的性能会略有下降。然而,对于大型数据集,与 MapReduce 相比,Apache Hive 的性能会更好。
在 MapReduce 中处理数据集时,数据集存储在 HDFS 中。MapReduce 没有自己的数据库,因为 Hive 有元存储。从 Hive 的 Metastore,数据可以与 Impala、Beeline、JDBC 和 ODBC 驱动程序共享。