一、hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,为某些需求大大省略了代码量。
二、hive主要有三种模式
local模式、单用户模式、多用户模式
三、本地模式
解压tar包 tar -xzvf apache-hive-3.1.2-bin.tar.gz
修改配置文件 ${hive}/conf/hive-env.sh.template复制为conf/hive-env.sh
添加hadoop路径 HADOOP_HOME
初始化
bin/schematool -dbType derby -initSchema
启动 bin/hive
数据库为derby数据库,自带的默认的一种数据库
四、单用户模式
这里把记录放到hdfs中;hive表和数据库放到mysql中
解压tar包
tar -xzvf apache-hive-3.1.2-bin.tar.gz
修改配置文件 ${hive}conf/hive-env.sh.template复制为conf/hive-env.sh
添加hadoop路径 HADOOP_HOME=
复制conf/hive-default.xml.template到hive-site.xml
添加hive数据仓库存储的位置,hadoop中hdfs的位置
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/data/</value>
</property>
//本地单用户启动,设置为true
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
hive中数据库相关的逻辑信息存储到mysql中,添加jdbc相关信息
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.56.1</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
准备一个mysql数据库;创建一个数据库(hive)
初始化
bin/schematool -dbType mysql-initSchema
启动服务器 后台启动
nohup bin/hive --service metastore &
启动客户端 bin/hive
五、多用户模式
即多台机器,一台为服务器端,其余为客户端
每台机器安装hive 修改配置文件 conf/hive-env.sh 添加hadoop路径
服务器端修改配置文件conf/hive-site.xml
设置数据仓库的路径(同上)
本地单用户启动为true(同上)
配置数据库相关信息(同上)
配置HiveServer2信息
<property>
<name>hive.server2.webui.host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10001</value>
</property>
客户端修改配置文件conf/hive-site.xml
设置数据仓库的路径(同上)
本地单用户启动为false
客户端与服务器交互的协议,协议路径为服务端地址
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
在服务端上启动服务 后台启动
nohup bin/hive --service metastore &
启动客户端 bin/hive
远程连接需要启动hive2服务 后台启动
bin/hiveserver2 &
六、常用命令
show databases 查看所有数据库
create database 库名 创建数据库
alter database 库名… 修改数据库属性
drop database 库名 数据库删除
select current_database() 查看当前数据库
create table 表名 创表
show tables 查看所有表
desc 表名 查看单张表
desc database 库名 描述库
describe formatted 表名 描述表
alter table 表名1 rename to 表名2 修改表名
drop table 表名 删除表
insert into 表名 values (1,‘aa’) 添加记录
select * from 表名 查询记录