Hive 安装与配置
1、安装MySQL
卸载Centos7自带mariadb
# 查找
rpm -qa|grep mariadb
# mariadb-libs-5.5.52-1.el7.x86_64
# 卸载
rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps
解压mysql
mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar
# 创建mysql安装包存放点
mkdir /opt/server/mysql
# 解压
tar xvf mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar -C /opt/server/mysql/
执行安装
# 安装依赖
yum -y install libaio
yum -y install libncurses*
yum -y install perl perl-devel
# 切换到安装目录
cd /opt/server/mysql/
# 安装
rpm -ivh mysql-community-common-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.34-1.el7.x86_64.rpm
启动Mysql
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log | grep password
修改初始的随机密码
# 登录mysql
mysql -u root -p
Enter password: #输入在日志中生成的临时密码
# 更新root密码 设置为root
set global validate_password_policy=0;
set global validate_password_length=1;
set password=password('root');
授予远程连接权限
grant all privileges on *.* to 'root' @'%' identified by 'root';
# 刷新
flush privileges;
控制命令
#mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#建议设置为开机自启动服务
systemctl enable mysqld
#查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld
查看mysql状态
查看开机自启是否成功
2、Hive安装配置
解压安装包
apache-hive-3.1.3-bin.tar.gz
# 切换到安装包目录
cd /opt/tools
# 解压到/root/server目录
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/server/
添加mysql_jdbc驱动到hive安装包lib目录下
mysql-connector-java-5.1.34.jar
# 上传mysql-connector-java-5.1.34.jar
cd /opt/server/apache-hive-3.1.3-bin/lib
修改hive环境变量文件,指定Hadoop的安装路径
cd /opt/server/apache-hive-3.1.3-bin/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
# 加入以下内容
HADOOP_HOME=/opt/server/hadoop-3.3.4
新建 hive-site.xml 文件,内容如下,主要是配置存放元数据的 MySQL 的地址、驱动、用户名和密码等信息
vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 存储元数据mysql相关配置 /etc/hosts -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://server:3306/hive?
createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&chara
cterEncoding=UTF-8</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>root</value>
</property>
</configuration>
初始化元数据库
cd /opt/server/apache-hive-3.1.3-bin/bin
./schematool -dbType mysql -initSchema
执行发现报错
解决办法:现在数据库中建立hive数据库再执行./语句
初始化成功
进入数据库查看hive数据库发现新建74张表
3、启动Hive服务
添加环境变量
vim /etc/profile
export HIVE_HOME=/opt/server/apache-hive-3.1.3-bin
export PATH=$HIVE_HOME/bin:$PATH
使用配置的环境变量立即生效
source /etc/profile
启动Hive
hive
- 此时启动可能会出现错误
-
出错原因:没有开启Hadoop服务
-
解决办法
[root@server ~]# cd /opt/server/hadoop-3.3.4/sbin/
[root@server sbin]# ./start-dfs.sh
[root@server sbin]# ./start-yarn.sh
启动Hive
输入show databases命令可以看到默认的数据库,代表搭建成功
4、Hive CLI的使用
help命令
使用 hive -H 或者 hive --help 命令可以查看所有命令的帮助,显示如下:
usage: hive
-d,--define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B --定义用
户自定义变量
--database <databasename> Specify the database to use -- 指定使用的数据库
-e <quoted-query-string> SQL from command line -- 执行指定的 SQL
-f <filename> SQL from files --执行 SQL 脚本
-H,--help Print help information -- 打印帮助信息
--hiveconf <property=value> Use value for given property --自定义配置
--hivevar <key=value> Variable subsitution to apply to hive --自定义
变量
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file --在进入交互模式之前运行
初始化脚本
-S,--silent Silent mode in interactive shell --静默模式
-v,--verbose Verbose mode (echo executed SQL to the console) --详细模式
交互式命令行
直接使用 Hive 命令,不加任何参数,即可进入交互式命令行
执行SQL命令
在不进入交互式命令行的情况下,可以使用 hive -e 执行 SQL 命令
hive -e 'select * from emp';
可能会报错,因为hive数据库里没有emp表
执行SQL脚本
用于执行的 sql 脚本可以在本地文件系统,也可以在 HDFS 上
# 本地文件系统
hive -f /usr/file/simple.sql;
# HDFS文件系统
hive -f hdfs://node01:8020/tmp/simple.sql;
5、Hive简单使用
连接Hive
hive
数据库操作
create database test;--创建数据库
show databases;--列出所有数据库
use test;--切换数据库
表操作
-- 建表
create table t_student(id int,name varchar(255));
-- 插入一条数据
insert into table t_student values(1,"potter");
-- 查询表数据
select * from t_student;
在执行插入数据的时候,发现插入速度极慢,sql执行时间很长,花费了26秒,并且显示了
MapReduce程序的进度
查看YARN及HDFS
输入网址http://自己的IP:8088
6、Hive总结
Hive SQL语法和标准SQL很类似,使得学习成本降低不少
Hive底层是通过MapReduce执行的数据插入动作,所以速度慢
如果大数据集这么一条一条插入的话是非常不现实的,成本极高
Hive应该具有自己特有的数据插入表方式,结构化文件映射成为表