您的位置 首页 java

Hive的介绍

Hive 介绍

最初 Hive 是由 Facebook 开发的,主要用于查询 Hadoop 集群当中的数据。后来 Apache 软件基金会接受了它,并以 Apache hive 的名义将其进一步开发为开源,被大家所熟悉和使用,作为一个数据仓库基础设施工具。

因为,从Hadoop教程中,我们了解到想在Hadoop集群上简单的获取数据,都需要利用Hadoop api编写一段程序,才能够获取到想要的数据。这是需要一个有经验的 java 开发人员,因此引入Hive的目的就是想像操作关系型数据库一样,通过简单SQL语句来获取数据结果。

Hive不仅提供了一个熟悉SQL的用户所能熟悉的编程模型, 还消除了大量的通用代码,甚至是那些有时是不得不使用 Java 编写的令人棘手的代码。 这就是为什么Hive对于Hadoop是如此重要的原因,无论用户是 DBA 还是Java开发 工程师。Hive可以让你花费相当少的精力就可以完成大量的工作。


Hive的特点

  • 它将模式存储在数据库中并将处理后的数据存储到 HDFS 中。
  • 它是为 OLAP 设计的。
  • 它提供用于查询的 SQL 类型语言,称为 HiveQL 或 HQL。
  • 它熟悉、快速、可扩展和可扩展。

Hive体系结构:

Hive的介绍

从上图可以看出HIve主要有3个核心部分组成:

  • 1、hive客户端(hive clients)
  • 2、hive服务(hive services)
  • 3、hive存储和计算(hive storage and compute)

hive客户端:

hive客户端是提供hive服务与外界交互的驱动程序,外界想和hive进行交互,都得通过hive客户端。比如:

  • 对于基于 Thrift 的应用程序,它将提供 Thrift 客户端进行通信。
  • 对于Java相关的应用程序,它提供了 JDBC 驱动程序。
  • 对于其它应用程序,还提供了 ODBC 的驱动程序。
  • 这些客户端和驱动程序又在 Hive 服务中再次与 Hive 服务器进行通信。

hive服务:

客户端与 Hive 的交互可以通过 Hive 服务执行。如果客户端想要在 Hive 中执行任何与查询相关的操作,它必须通过 Hive 服务进行通信。

所有驱动程序都与 Hive 服务器和 Hive 服务中的主驱动程序通信,如上图所示。

Hive 服务中的驱动程序代表主驱动程序,它与所有类型的 JDBC、ODBC 和其他客户端特定应用程序进行通信。驱动程序将处理来自不同应用程序到元存储和Hadoop集群的请求。

hive存储和计算:

Meta 存储、文件系统、Job Client 等 Hive 服务依次与 Hive 存储通信并执行以下操作

  • 在 Hive 中创建的表的元数据信息是存储在 Hive元存储数据库当中中。
  • 查询结果和加载到表中的数据将存储在Hadoop分布式集群上。

Hive查询的执行流程

从上图,我们详细讲解以下Hive中一个查询操作的数据流程:

  • 1、用户执行hive查询,从用户界面。
  • 2、驱动程序(driver)与编译器(Compiler )进行交互,根据用户查询语句获取执行计划,以及流程当中需要的相关元数据信息。
  • 3、然后,编译器为要执行的计划,从元数据存储(meta store)那里获取元数据请求。
  • 4、元数据存储返回信息给编译器。
  • 5、编译器和驱动程序通信,返回执行查询的计划。
  • 6、驱动程序把执行计划发送到执行引擎进行执行。
  • 7、执行引擎( execution engine)根据执行计划,从Hadoop集群获取数据。这里元数据再次充当了Hive表和Hadoop之间的桥梁。让Hadoop知道从哪里获取数据。
  • 8、从驱动程序获取结果。
  • 9、一旦从数据节点获取结果到执行引擎,它就会将结果发送回驱动程序和 UI(前端)。

文章来源:智云一二三科技

文章标题:Hive的介绍

文章地址:https://www.zhihuclub.com/199542.shtml

关于作者: 智云科技

热门文章

网站地图