大数据相关学习-特辑.安装hive
环境介绍:mac m1、centos7、Hadoop3.4
1.前置条件
安装Hadoop集群,安装mysql
2.配置mysql
登陆mysql
mysql -uroot -p
# 输入密码连接数据库
配置远程登陆
use mysql
# 使用 mysql 数据库
select user, host from user;
# 查询 user 表,如果输出的 host 不是 %,则修改
update user set host="%" where user="root";
# 更新数据
flush privileges;
# 刷新
3.安装hive
3.1 下载安装包
官网http://archive.apache.org/dist/hive/,下载安装包 apache-hive-3.1.2-bin.tar.gz
3.2 上传解压
将安装包上传到服务器并解压,配置环境变量
vi /etc/profile
# 加入下面两行
export HIVE_HOME=/apps/hive3/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
# 保存退出
source /etc/profile
# 生效环境变量
执行 echo $HIVE_HOME ,输出hive安装路径则配置成功
3.3 初始化元数据库
cd $HIVE_HOME/bin
# 进入安装路径下 bin 目录
schematool -dbType derby -initSchema
# 初始化元数据库
4.配置元数据存储
Hive 本身并不直接存储表数据(数据通常存在 HDFS 或 S3),因此需要一个可靠的数据库用于存储元数据,其自带的 derby 只支持单用户,不支持并发访问,故不使用。
4.1 创建 metastore 数据库
mysql -uroot -p
# 登陆
create database metastore;
# 创建 metastore 数据库,退出
在 oracle 官网下载 mysql JDBC 驱动,将解压的 jar 包放到 $HIVE_HOME/lib/ 下
https://downloads.mysql.com/archives/c-j/
4.2 创建配置文件
touch $HIVE_HOME/conf/hive-site.xml
# 创建 hive-site.xml
4.3 修改配置文件
vi $HIVE_HOME/conf/hive-site.xml
# 加入下面一段
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop103:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
4.4 修改元数据库为 mysql
$HIVE_HOME/bin/schematool -dbType mysql -initSchema -verbose
4.5 验证 hive
启动 Hadoop 集群和 mysql
启动hive
$HIVE_HOME/bin/hive
# 连接 hive
hive> show databases;
# 查看 hive 数据库
hive> use default;
# 使用 default 数据库
hive> show tables;
# 查看数据表
hive> create table stu(id int, name string);
# 创建表
hive> insert into stu values(1,"ss");
# 插入数据
hive> select * from stu;
# 查询数据
4.6 查看元数据
元数据保存在mysql
mysql -uroot -p123456
# 登陆 mysql
mysql> use metastore;
# 使用元数据库
mysql> show tables;
# 查看表
mysql> select * from DBS;
# 查看元数据中记录的 hive 数据库信息
mysql> select * from TBLS;
# 查看hive 数据表信息
5.配置hiveserver2
Hive 的 hiveserver2 服务的作用是提供 jdbc/odbc 接口,为用户提供远程访问 Hive 数据的功能。
在远程访问 Hive 数据时,客户端并未直接访问 Hadoop 集群,而是由 Hivesever2 代理访问hivesever2 的模拟用户功能,依赖于 Hadoop 提供的 proxy user(代理用户功能),只有Hadoop 中的代理用户才能模拟其他用户的身份访问 Hadoop 集群。因此,需要将 hiveserver2 的启动用户设置为 Hadoop 的代理用户。
5.1 Hadoop 配置文件 core-site.xml
vi $HADOOP_HOME/etc/hadoop
# 添加下面一段
<!-- 配置访问hadoop的权限,能够让hive访问到 -->
<property>
<name>hadoop.proxyuser.*.hosts</name>
<value>*</value>
</property>
<!-- 配置HiveServer2启动用户root代理的组为任意组 -->
<property>
<name>hadoop.proxyuser.*.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.*.users</name>
<value>*</value>
</property>
5.2 hive 配置文件 hive-site.xml
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop103</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
5.3 启动 hivesever2
cd $HIVE_HOME/bin
nohup hive --service hiveserver2 &
# 注意使用后台启动
hivesever2 启动需要一点时间,启动成功后可以通过 beeline 连接
$HIVE_HOME/bin/beeline -u jdbc:hive2://hadoop103:10000 -n root
# 连接成功后可以执行 SQL
0: jdbc:hive2://hadoop103:10000> show databases;
此时每执行一次命令会输出一段 INFO 日志,可以通过配置 hive-site.xml 取消打印
<property>
<name>hive.server2.logging.operation.enabled</name>
<value>false</value>
</property>
6.配置 metastore 服务
Hive的metastore服务的作用是为Hive CLI或者Hiveserver2提供元数据访问接口。修改 hive-site.xml
<!-- 指定metastore服务的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop103:9083</value>
</property>
后台启动 metastore 服务
nohup hive --service metastore &
更多推荐
所有评论(0)