Hive概述和部署
Hive是一个Hadoop客户端,将HQL转换为MapRedurce程序
1.Hive中表的数据都储存再HDFS中
2.Hive分析数据底层的实现为MapReduce
3.执行程序运行在Yarn上
Hive的框架
Hive两大组件为HiveMetastore和HiveServer2
HiveMetastore:储存元数据的信息,即真实的数据储存在HDFS中,而其信息储存在Metastore中
HiveServer2:负责连接客户端,执行客户端的操作
用户操作Hive的流程:client发出指令和HiveServer2交互,HiverServer2得到指令执行和Metastore交互,Metastore和HDFS交互,HDFS再通过YARN计算得出结果
HiveQL和HSQL是两个不同的查询语言,前者基于Hive而后者是一个独立的数据结构
启动 metastore
hive --service metastore &
启动 hiveserver2
bin/hiveserver2 1>/dev/null 2>&1 &
hive的部署
下载地址,下载第一个文件
https://dlcdn.apache.org/hive/hive-3.1.3/
上传到liunx中的master节点的主机上并且解压
填加hive的环境变量并刷新
#Hive3.1.3
export HIVE_HOME=/usr/local/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin
初始化配置
cd /usr/local/hive-3.1.3
bin/schematool -initSchema -dbType derby
#启动hive
bin/hive
安装mysql和mysql包,建议下载5.7版本的
#先删除自带的数据库
sudo yum -y remove mari*
#解压完mysql在mysql解压包中安装里面这几个文件
rpm -ivh mysql-community-common-5.7.37-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-5.7.37-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-5.7.37-1.el8.x86_64.rpm
启动mysql
sudo systemctl start mysqld
获取初始密码
sudo cat /var/log/mysqld.log | grep password
mysql -uroot -p '你的密码'
改变密码规则
set global_validate_password_policy=0;
set global_validate_password_length=4;
set password=password('新密码');
update user set host="%" where user="root";
flush privileges;
create database metastore;
quit;
拷贝mysql的jdbc包到hive的bin目录下
cd /usr/local/hive-3.1.3
vi con/hiev-site.xml
<!-- Hive 元数据存储配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://billsaifu:3306/metastore?useSSL=false</value>
<description>JDBC连接元数据存储的URL</description>
</property><property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>JDBC连接驱动程序的类名</description>
</property><property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>连接元数据存储的用户名</description>
</property><property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>连接元数据存储的密码</description>
</property><!-- 如果没有目录需要创建 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>hive workspace in hdfs</description>
</property><property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>HiveServer2 使用的 Thrift 服务端口号</description>
</property><property>
<name>hive.server2.thrift.bind.host</name>
<value>billsaifu</value>
<description>HiveServer2 绑定的主机名或 IP 地址</description>
</property><property>
<name>hive.metastore.uris</name>
<value>thrift://billsaifu:9083</value>
</property>
<property>
<name>hive.server2.webui.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>billsaifu</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property><property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Display the current database name in the Hive CLI prompt</description>
</property>
vi /usr/local/hadoop-3.3.5/etc/hadoop/core-site.xml
<!-- 允许代理用户访问的用户组 -->
<property>
<name>hadoop.proxyuser.bill.groups</name>
<value>*</value>
</property><!-- 允许代理用户访问的主机 -->
<property>
<name>hadoop.proxyuser.bill.hosts</name>
<value>*</value>
</property><property>
<name>hadoop.proxyuser.bill.users</name>
<value>*</value>
</property>启动相关服务
hive --service metastore &
bin/hiveserver2 1>/dev/null 2>&1 &
ok,这里就配置成功了,接下来就可以执行相关Hive SQL语句了