1. Hive 简介
数据仓库工具,将结构化数据映射成二维表,并提供类SQL查询,底层把HQL转换成MR程序
- Hive 自带的客户端
- hive client
- beeline client
- 特点
- HQL 用于数据分析,但处理处理粒度粗
- 处理大数据,但延迟高
- 支持自定义函数
- 架构原理
Metastore 元数据存储 Client 客户端 MapReduce 计算引擎 HDFS 数据源
- 解析器 解析HQL 映射关系,元数据
- 编译器 把HQL 转化成MR
- 优化器 优化执行的逻辑
- 执行器 把执行逻辑 物理化执行
2. Hive vs RDBMS
- 查询语言:类似SQL
- 数据规模:数据量大
- 数据更新:读多写少,导入导出
- 执行延迟:量大,延迟高
3. Hive 安装
- 下载安装包
- 解压安装包
- 配置环境变量
- 初始化元数据
./schematool -dbType derby -initSchema
- 启动测试
# 先启动hadoop,在启动hive
./hive
- 更改元数据存储位置
hive 默认元数据存在自带的derby 数据库,缺点: 1. 元数据不好查看;2.使用derby 不支持多租户,即不支持多个hive client 同时使用,可以更换元数据存储位置为MySQL
3.1 MySQL安装
此处安装的是rpm的MySQL安装包,所以只适用于redhat系列
- 卸载系统自带的MySQL
# 查找
rpm -qa|grep mariadb
rpm -qa|grep mysql
# 卸载,不带依赖的卸载方式
rmp -e --nodeps maridb-libs
- 解压tar包并安装rpm包
tar -xvf xx.tar
# 依次安装 common、libs、libs-compat、client、server
rpm -ivh xxx.rpm
# 如果是最小化安装,需要安装额外依赖
rpm install -y libaio
- 修改MySQL配置文件
vim /etc/my.cnf # 查看datadir 位置
# 删除datadir 目录下内容
- 初始化MySQL
mysqld --initialize --user=mysql
# 查看临时密码
cat /var/log/mysqld.log
- 启动MySQL服务并登录
systemctl start mysqld
mysql -u root -pXXX
# 密码需改(可以不修改),各个版本MySQL修改方式不同
set password = password("000000");
- 开启MySQL远程连接
# 查看
select host,user from mysql.user;
# 修改
update mysql.user set host='%' where user='root';
flush privileges;
3.2 Hive Metasore
修改元数据存储位置为MySQL
- copy 一个MySQL驱动包 到 hive的lib目录下
- 在conf下创建一个一个hive-site.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 元数据存储库MySQL四大连接参数-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&allowPublicKeyRetrieval=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
</property>
<!-- 元数据存储版本验证和存储授权-->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.metadata.validate</name>
<value>false</value>
</property>
</configuration>
- 登录MySQL并创建存储的数据库
create database metastore;
- 初始化hive元数据存储库
schematool -initSchema -dbType mysql -verbose
- 再次启动hive
hive
3.3 Hive 远程服务
使用元数据服务的方式,开启hive的远程访问
- 修改hive-site.xml,添加
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
- 启动元数据服务
hive --service metastore
4. Hive JDBC
要想使用jdbc连接Hive ,还需要开启hiveserver2的服务
- 修改hive-site.xml
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>