01 Hive简介、架构、及安装部署模式

简介

Hive是一个数据仓库基础工具,提供sql查询,并可以将sql语句转换为MapReduce、Tez、Spark等任务,用来处理Hadoop HDFS中的数据,使得查询和分析更加方便。除此外,Hive还讲HDFS上的数据转换为了有行和列的二维表,并提供了统一的元数据管理功能。

架构

image-20210206212058975

如上所述,Hive是将sql转换成MapReduce、Tez、Spark等分布式计算任务,并提交给Hadoop集群的Yarn进行调度执行。

从Hive自身来讲,其包括Driver、MetaStore、客户端三部分。

Driver

Driver可以说是Hive的核心,可以将客户端接收的SQL语句进行解析、编译、优化,并生成执行计划,然后提交给Yarn集群执行。

MetaStore

Hive其元数据存储在数据库中,如内存数据库derby、关系型数据库MySQL。Hive 中的元数据包括库名、表名,表的列和分区及其他属性(是否为外部表等),表的权限、数据所在目录等。

Metastore包括两个部分:metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如hive默认的嵌入式磁盘数据库derby,还有mysql数据库。

客户端

Hive提供的客户端主要有CLI、Web GUI、Thrift客户端(支持JDBC、ODBC等方式)。

CLI

Command Line Interface,即命令行接口。启动方式:bin/hive

Web GUI

Hive提供了一种通过网页的方式访问Hive的服务。这个接口对应Hive的hwi组件(hive web interface),使用前要启动hwi服务。

Thrift类客户端

Thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务(hiveserver/hiveserver2),能让不同的编程语言调用hive的接口。Hive的许多客户端接口是建立在thrift客户端之上,包括JDBC、ODBC等。

hiveserver与hiveserver2区别

hiveserver和hiveserver2都允许远程客户端在不启动CLI的情况下对hive进行操作,hiveserver只能支持单个客户端,因此在Hive-0.11.0版本中重写了该模块代码得到了hiveserver2,进而解决了该问题。hiveserver2支持多客户端,为开放API客户端如JDBC、ODBC提供了更好的支持。

安装部署模式

Hive部署模式有三种:使用其自带的derby数据库部署为内嵌模式。按metastore服务是否部署在独立的服务器上分为本地模式和远程模式。

内嵌模式 Local/Embedded Metastore Database (Derby)

使用该模式,Hive在运行时会在部署目录生成一个derby文件和一个metastore_db目录。该模式,一般只用做测试、练习使用。

本地模式 Local/Embedded Metastore Server

该模式使用MySQL数据库存放其元数据,MySQL数据库可以部署在该服务器,也可以在其他服务器上。

默认情况下metastore服务和Hive服务是安装在一起的,运行在同一个进程当中,这也是该模式名字的由来。该模式可以多个Hive client一起使用,并且可以共享元数据。但mysql的连接信息明文存储在客户端配置,不便于数据库连接信息保密和以后对元数据库进行更改,

该模式下,每当使用bin/hive或者hiveServer2的时候,都会在内部启动一个metastore嵌入式服务。如果客户端过多,因为每个客户端都自己发起连接,就会对mysql造成较大的压力,资源比较浪费。

远程模式 Remote Metastore Server

该模式也是使用MySQL数据库存放其元数据。

该模式是把metastore服务从Hive服务里剥离出来部署,让metastore服务和hive服务运行在不同的进程里,这样从架构上进一步解耦,保证了hive的稳定性,提升了hive服务的效率。另外,也支持多个客户端同时连接,而且客户端不需要知道MySQL的用户名和密码,只需要连接metastore服务即可,从而提供了更好的管理性和安全保障。

posted @ 2021-02-06 22:07  数大招疯-公众号同名  阅读(545)  评论(0编辑  收藏  举报