Hive安装配置

Hive是一个数据仓库工具,基于Hadoop,可以通过类sql的方式来对数据提供读、写及管理的功能。比直接用mapreduce开发效率高,提供了快速开发的能力。

特点

可扩展 延展性 容错性

Hive组成

  • 客户端:CLI、JDBC、WebUI

  • Thrift Server:Thrift协议RPC通信服务

  • metastore:元数据存储(库/表的定义等

  • Driver:解析器,将hql抽象成表达式树

  • Compiler:编译hql语句,生成一个有向无环的执行计划,hive在mr引擎上就是编译成mapreduce的job

  • Optimizer:将执行计划进行优化,减少不必要的列、使用分区、使用索引等操作,优化job。

  • Executor:将优化后的执行计划提交给Hadoop上的yarn,执行job

Hive的安装部署

  • Hive是基于Hadoop的,最好选用跟Hadoop合适的版本进行安装。

  • Hive的存储基于hdfs/hbase,默认的计算引擎基于mapreduce(hive2.x以上版本不推荐使用mr引擎)

安装:

https://hive.apache.org/downloads.html

去官网下载合适版本的安装包

如果网络不顺畅可以尝试 清华大学开源镜像站 - /apache/hive

解压后配置环境变量,

一、本地模式

使用默认的derby进行存储,用于测试,不需要配置,但是只支持单session。

配置 hive-env.sh的JAVA_HOME

启动Hive

元数据会在启动hive命令的目录下生成

二、远程模式

通常使用关系型数据库来进行元数据存储(mysql、oracle等

支持多session,但需要安装关系型数据库,并需要配置

进行配置:

hive-site.xml

将mysql的JDBC驱动包放在$HIVE_HOME/lib目录下

启动hive,初始化元数据 schematool -dbType mysql -initSchema

启动服务 nohup hiveserver2 > hiveserver2.log 2>&1 &

连接Hive

使用hive命令

使用beeline

  1. 开启metastore服务

  2. 开启hiveserver2服务

  3. 进入 beeline

  4. 使用 !connect jdbc:hive2://hdfs03:10000 命令进入hive

没有配置权限的情况,用户名和密码可以直接敲回车跳过,或者任意输入

beeline退出使用 !exit 命令

使用JDBC连接

  • 配置jdbc使用java代码可用maven导包

  • 图形化工具连接 需手动配置hive的jdbc依赖

配置JDBC Driver

本文使用DataGrid,也可以使用Idea Ultimate版本自带的database工具连接。使用方法一样。

DataGrip打开Data Sources and Drivers

创建一个新的 Apache Hive Driver

配置合适版本的驱动包

由于 hive-jdbc 不是包含所有依赖的包(这里是 HA 的 HiveServer, 需要有 ZK 的依赖, 也可以直接连接 HiveServer), 所以需要导入 Driver 的全部 jar, 如下:

commons-httpclient-3.0.1.jar commons-logging-1.2.jar curator-client-2.7.1.jar curator-framework-2.7.1.jar hadoop-auth-2.9.2.jar hadoop-common-2.9.2.jar hive-common-2.3.6.jar hive-exec-2.3.6.jar hive-jdbc-2.3.6.jar hive-metastore-2.3.6.jar hive-service-2.3.6.jar httpclient-4.4.jar httpcore-4.4.jar slf4j-api-1.7.25.jar zookeeper-3.4.6.jar

这里的文件有部分是hive的lib中找,有部分是从hadoop的库(${HADOOP_HOME}\/share\/hadoop/common/lib)中找 我的Hive版本是2.3.6,Hadoop的版本是2.9.2。

配置连接Hive

和连接其他数据库类似, 配置好连接名, JDBC URL, 用户, 密码 即可

URL可以有两种形式:

  • jdbc:hive2://<hiveserver_host>:<port>: 直接连接某个 HiveServer

  • jdbc:hive2://<zookeeper_server1>:<port>,<zookeeper_server2>:<port>;zooKeeperNamespace=<hiveserver_namespace>: 通过 Zookeeper 连接 HiveServer(需要多几个依赖)

打开连接即可使用了。

Last updated

Was this helpful?