

Hive MetaData是Hive中的元数据,包含用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。元数据存储在关系数据库中,Hive自带的是derby,我们也可以使用第三方的Mysql。
MetaStore是元数据服务,作用是管理metadata,对外暴露服务地址,让各种客户端通
过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。某种程度上也保证了hive元数据的安全。

metastore的配置方式:内嵌模式、本地模式、远程模式。企业推荐的远程模式,在生产环境中,建议用远程模式来配置Hive Metastore。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。由于还可以完全屏蔽数据库层,因此这也带来了更好的可管理性/安全性。

<property>
<name>hadoop.proxyuser.root.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.root.groupsname>
<value>*value>
property>
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
#如果没有显示即卸载成功
rpm -qa|grep mariadb
#解压
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
#安装libaio
yum -y install libaio
#rpm安装MySQL
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm

#初始化
mysqld --initialize
#更改所属组
chown mysql:mysql /var/lib/mysql -R
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log

mysql -u root -p
# Enter password: #这里输入在日志中生成的临时密码
#更新root密码 设置为hadoop
ALTER user user() IDENTIFIED BY "123456";
#授权
USE mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
systemctl enable mysqld
#检查是否自启动
systemctl list-unit-files | grep mysqld

tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive-3.1.2
cd /export/server/hive-3.1.2/lib
rm -rf guava-19.0.jar
cp -p /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar .
cd /export/server/hive-3.1.2/conf
mv hive-env.sh.template hive-env.sh
#末尾添加
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/export/server/hive-3.1.2/lib
# 新增的
vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8value>
property>
<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
property>
<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>hadoopvalue>
property>
<property>
<name>hive.server2.thrift.bind.hostname>
<value>node1value>
property>
<property>
<name>hive.metastore.urisname>
<value>thrift://node1:9083value>
property>
<property>
<name>hive.metastore.event.db.notification.api.authname>
<value>falsevalue>
property>
configuration>
上传mysql jdbc驱动到hive安装包lib下
mysql-connector-java-5.1.32.jar
初始化元数据
cd /export/server/hive-3.1.2/bin/
./schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
#前台启动
/export/server/hive-3.1.2/bin/hive --service metastore
#前台启动开启debug日志
/export/server/hive-3.1.2/bin/hive --service metastore --hiveconf
hive.root.logger=DEBUG,console
#前台启动关闭方式 ctrl+c结束进程
nohup /export/server/hive-3.1.2/bin/hive --service metastore &
#后台挂起启动 结束进程使用jps查看进程 使用kill -9 杀死进程
#nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下



nohup /export/server/hive-3.1.2/bin/hive --service hiveserver2 &
/export/server/hive-3.1.2/bin/beeline
#连接
! connect jdbc:hive2://node1:10000

