0

在 HIVE 安装和执行中,我遇到了以下术语。有人可以确认我的理解并为我的几个问题提供您宝贵的答案。

安装 HIVE 后,没有进程在运行和监听请求(如 RDBMS)。HIVE 的所有必要组件都安装在集群的所有节点中。这使得 HIVE 可以在集群中的任何机器上被调用。我在这里正确吗?

Meta Store: 它是一个 RDBMS 软件,当我们安装 HIVE 时默认是 Derby。由于它具有在给定时间点最多只有一个活动连接的限制,因此无法对其进行并行连接。因此,在所有生产环境中,都使用了另一个 RDBMS 数据库(MySql / SQL Server)。这是存储 HIVE 表的元数据信息的地方。当此数据库启动并运行时,它正在端口中侦听请求。让我们将其称为数据库服务

元服务: 我的理解是,这是另一层服务,它联系数据库服务并从 RDBMS 返回请求的信息。

问:为什么其他需要元数据信息的进程无法连接到RDBMS并自行检索信息?为什么需要元服务?元服务是为了统一吗?或者它是一种写在 RDBMS 上的 ORM?

HiveServer: 这是一个自定义版本的 Thrift 框架,用于 HIVE 执行(实际上,我们可以使用 Thrift 将任何程序制作为 Web 服务。实施后,服务将开始运行并监听请求)。当我们想要查询 HIVE 时(就像我们对其他数据库所做的那样),我们从客户端(来自编程语言/其他 JDBC 客户端)发送查询到 Thrift 服务器,并且在 Meteaservice 的帮助下,Thrift 服务调用 HIVE 查询执行引擎(QEE ) 并返回结果。我的理解正确吗?

Beeline: 它是一个 JDBC 客户端,它以格式良好的方式发布查询并打印结果。这可以在以下情况下调用: 1.Embedded 模式 2.Remote 模式。在本地模式下,Beeline 直接调用 HIVE 查询执行引擎并打印结果。我也为此读过,需要元服务。所以我的理解是 HIVE QEE 也可以使用元服务。

:那么如果仅 HIVE QEE 知道元服务在哪里运行就足够了吗?

在远程模式下,查询被发送到 Thrift 服务器并打印结果。我对么?

而且,当我尝试了解远程和本地元存储之间的区别时,许多文章都谈到在相同的 JVM 和不同的 JVM 中运行它们。当我尝试从流程及其依赖关系的角度来考虑它们时,我无法想象。

谢谢!

4

0 回答 0