Hive安装配置及基本操作
一.Hive内嵌模式安装(内嵌derby数据库:一个会话连接,常用于简单测试)
参考教材P110-112(第4步和第5步省略,增加环境变量的设置)
启动Hadoop集群并检查是否成功
使用find找到Hive压缩包(以.tar.gz为扩展名的是一种压缩文件)
find / -name hive.tar.gz
解压Hive压缩包至/opt目录下(注意命令中的空格!)
tar -zxvf /root/experiment/file/apache-hive-2.1.1-bin.tar.gz -C /opt/
查看是否解压成功
ls /opt
将apache-hive-2.1.1-bin更名为hive
配置Hive环境变量(HIVE_HOME和PATH)
vi /etc/profile
使profile文件配置生效
source /etc/profile
检查环境变量
echo $PATH
初始化Hive
Hive2.1的启动需要先执行schematool命令,由于Hive默认内嵌的是derby数据库,先使用默认的数据库运行
schematool -dbType derby -initSchema
执行命令hive进入到Hive Shell操作
执行命令hive后,会在当前目录生成一个derby.log日志文件和一个metastore_db目录(derby数据库,保存元数据)。这种存储方式的弊端是在同一个目录下同时只能有一个Hive客户端能使用数据库,元数据是内嵌在Derby数据库中的,数据会存放到HDFS上。
hive
显示Hive表和函数
hive> show tables;
hive> show functions;
查看HDFS
hive> dfs -ls -R /;
退出Hive
hive> quit;
二.Hive本地模式安装
安装(本环境已安装好)并进入MySQL
mysql
建立Hive元数据需要的MySQL下的数据库“hive”
mysql> create database hive;
查看数据库“hive”
mysql> show databases;
mysql授权
1.mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to ‘用户名’@‘用户地址’ identified by ‘连接口令’;
2.权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
3.当权限1,权限2,…权限n被all privileges代替,表示赋予用户全部权限。
4.当数据库名称.表名称被.代替,表示赋予用户操作服务器上所有数据库所有表的权限。
5.用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
6.'连接口令’不能为空,否则创建失败。
mysql> grant all privileges on . to 'root'@'master' identified by 'root';
mysql> grant all privileges on . to 'root'@'%' identified by 'root';
刷新使配置生效
使配置生效,刷新mysql的系统权限相关表,否则会出现拒绝访问
mysql> flush privileges;
查看权限
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> desc user;
mysql> select Host,User,Super_priv from user;
退出MySQL
mysql> quit;
拷贝Hive需要的mysql依赖包mysql-connector-java-5.1.42.jar 至hive/lib目录下
find / -name mysql*.jar
cp /root/experiment/file/mysql-connector-java-5.1.42.jar /opt/hive/lib
查看jar是否在lib下
ls /opt/hive/lib
配置Hive相关配置文件的参数
进入Hive配置文件的目录
cd /opt/hive/conf
显示conf目录内容
ls
生成hive-site.xml文件
cp hive-default.xml.template hive-site.xml
查看是否生成hive-site.xml文件
ls
配置hive-site.xml文件
vi hive-site.xml
显示行号
:set nu
回到最后1行
G
删除第18行至5343行
:18,5342d:
不显示行号
:set nonu
修改property,配置4个属性(参考官网要求http://hive.apache.org/)
20201022_213236.png
初始化元数据库,启动Hive,进入Hive运行环境
schematool -dbType mysql -initSchema
hive
hive> show tables;
hive> show functions;
退出Hive
quit;
检查MySQL中的元数据是否成功创建
mysql
mysql> show databases;
mysql> use hive;
mysql> show tables;
TBLS保存表的信息
目前是空的,因为Hive中目前没有创建表
mysql> desc TBLS;
mysql> select * from TBLS;
退出mysql
mysql> quit;
在Hive中创建表
hive
hive> show tables;
hive> create table test(id int,name string);
hive> quit;
Hive中创建的表的信息会自动存入到MySQL的hive数据库TBLS表中
mysql
mysql> use hive;
mysql> select * from TBLS;
Hive中创建的表的字段信息会自动存入到MySQL的hive数据库COLUMNS_V2表中
mysql> select * from COLUMNS_V2;
三.Hive远程模式安装
远程模式的安装与本地模式类似,最主要的区别是
hive-site.xml的javax.jdo.option.ConnectionURL的hostname值为远程安装MySQL的IP地址
四.Hive基本操作
Hive Shell接口(hive>)
参考教材P118-119和P122-126
Hive Shell常用命令
查看数据库中的表结构
hive> desc 表名;
查看HDFS上的文件
hive> dfs -ls -R /;
Hive中执行Linux命令
hive> !pwd;
hive> !ls;
hive> quit;
在Linux命令中执行Hive操作
会先进入Hive命令行,再执行引号内的操作
hive -e "show tables;"
创建数据库dbtest
hive
hive> create database dbtest;
显示Hive中的数据库
hive> show databases;
查看数据库信息
hive> desc database dbtest;
打开数据库
hive> use dbtest;
查看HDFS中的信息
hive> dfs -ls -R /;
删除数据库dbtest
删除dbtest数据库实质是删除HDFS中的dbtest.db目录删除dbtest数据库实质是删除HDFS中的dbtest.db目录
hive> drop database dbtest;
查看HDFS中的信息
hive> dfs -ls -R /;
显示Hive中的数据库
hive> show databases;
hive> quit;
创建表
在本地/root目录下建立文本文件stu.txt,文件内容仿照教材P125的图4-11,录入10位本班同学的信息(学号,姓名,性别,年龄)
进入Hive,创建表mytable
hive> create table mytable(id int,name string,gender string,age int) row format delimited fields terminated by '\t';
将本地文件stu.txt的数据导入到表mytable中
hive> load data local inpath ‘/root/stu.txt’ overwrite into table mytable;
在HDFS中查看文件信息
Hive会为每个数据库创建一个目录,数据库中的表以数据库的子目录形式存储
hive> dfs -ls /user/hive/warehouse;
hive> dfs -ls /user/hive/warehouse/mytable;
hive> dfs -cat /user/hive/warehouse/mytable/stu.txt;
查询mytable表的记录
hive> select * from mytable;
使用Web端查看HDFS中的目录与文件
在指定位置(/自己姓名字母缩写/t1)创建表t1
hive> create table t1(id int,name string) location '/自己姓名字母缩写/t1';
验证创建操作
hive> dfs -ls -R /自己姓名字母缩写;
创建表t2的同时加载数据,数据间隔用逗号
hive> create table t2 row format delimited fields terminated by ',' as select * from mytable;
Hive的实质是HDFS和MapReduce的翻译终端。
用dfs –cat进行验证
hive> dfs -cat /user/hive/warehouse/t2/*;
使用Web端查看MapReduce任务的执行情况
在指定位置(/自己姓名字母缩写/t3)创建表t3的同时加载数据(学号和姓名两列,性别为女),数据间隔用冒号
hive> create table t3 row format delimited fields terminated by ':' location '/自己姓名字母缩写/t3' as select id,name from mytable where gender="female";
hive显示不随fields terminated by发生变化,但是hdfs随着fields terminated by**发生变化。

浙公网安备 33010602011771号