vij*_*ani -1 hadoop hive impala
Impala 如何在查询处理中实现比 Hive 更低的延迟?
我正在浏览http://impala.apache.org/overview.html,其中说明:
为了避免延迟,Impala 绕过 MapReduce,通过专门的分布式查询引擎直接访问数据,该引擎与商业并行 RDBMS 中的查询引擎非常相似。结果是性能比 Hive 快几个数量级,具体取决于查询和配置的类型。
Impala 如何在没有 MapReduce 的情况下获取数据(如在 Hive 中)?
能不能说Impala更接近HBase,应该和HBase比,而不是和Hive比?
编辑:
或者我们可以说,像经典一样,Hive 位于 MapReduce 之上并且确实需要更少的内存来工作,而 Impala 在内存中完成所有工作,因此它需要更多的内存来工作,因为数据已经被缓存在内存中并根据请求采取行动?
只需阅读Impala 架构和组件
Impala 是一个大规模并行处理 (MPP) 数据库引擎。它由在特定主机上运行的不同守护进程组成...... Impala 与 Hive 和 Pig 不同,因为它使用自己的守护进程,这些守护进程分布在整个集群中进行查询。
它通过在每个能够接受查询请求的节点上运行一个长时间运行的守护进程来绕过 MapReduce 容器。没有像 HiveServer2 那样处理请求的单点故障;所有 impala 引擎都能够立即响应查询请求,而不是排队 MapReduce YARN 容器。
然而,Impala 确实依赖于 Hive Metastore 服务,因为它只是将存储在 RDBMS 中的元数据映射到 Hadoop 文件系统的有用服务。Pig、Spark、PrestoDB 和其他查询引擎也共享 Hive Metastore,无需通过 HiveServer 进行通信。
Impala 中的数据未“已缓存”。与 Spark 类似,您必须将数据读入大部分内存中才能快速操作。与 Spark 不同,守护进程和状态存储服务保持活动状态以处理后续查询。
Impala 可以查询 HBase,但它在架构上并不相似,根据我的经验,设计良好的 HBase 表比 Impala 查询更快。Impala 可能更接近 Kudu。
另外值得一提的是,不再推荐使用 MapReduce Hive。Tez好得多,Hortonworks 表示 Hive LLAP 比 Impala 好,尽管正如您所引用的,它在很大程度上“取决于查询和配置的类型”。