本地模式
使用mysql替换derby进行元数据的存储,hive的相关进程都是在同一台机器上,即本地模式。mysql因为是独立的进程,所以mysql可以和hive在同一机器上,也可以在其他机器上。
说明:
通常使用关系型数据库来进行元数据存储(mysql、oracle等执行带jdbc驱动的数据库)
优点:支持多session
缺点:需要配置、还需要安装mysql等关系型数据库
配置安装mysql
-
安装包准备
通过SSH工具,将MySQL的RPM安装包上传到Linux的 ~/software 目录下。 MySQL的RPM安装包,可以在MySQL的官网下载,也可以直接使用课程提供的资料。 注意事项: - 在官网下载安装包的时候,注意版本号 - mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar - 这里的el7,表示适用于CentOS7的版本。注意,不要下载el6的。 - x86_64: 这个表示arm版本的CentOS,如果是amd64架构的,可以选择x64。
-
安装前准备
# CentOS7中,系统默认采用的数据库是mariadb,这个数据库与MySQL冲突! # 因此,在安装MySQL之前,需要先将其卸载! [root@qianfeng01 ~]# rpm -qa | grep mariadb # 查询是否已经安装了mariadb mariadb-libs-5.5.68-1.el7.x86_64 # 查询结果。如果没有这个结果,说明没有安装。 # 强制卸载mariadb # --nodeps: 强制卸载,RPM卸载程序的时候,如果这个程序被其他的程序依赖,是无法卸载的。 # 此时,就需要使用--nodeps,忽略依赖,强制卸载。 # 下面的卸载命令中,卸载的包是上方查询到的包 [root@qianfeng01 ~]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
-
安装MySQL
# 安装MySQL, 其实就需要安装 mysql-community-server, 但是它依赖其他的包 [root@qianfeng01 mysql]# rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm [root@qianfeng01 mysql]# rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm [root@qianfeng01 mysql]# rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm [root@qianfeng01 mysql]# rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm [root@qianfeng01 mysql]# rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm [root@qianfeng01 mysql]# yum install -y net-tools perl [root@qianfeng01 mysql]# rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
-
启动MySQL的服务
# 查看MySQL服务的运行状态 [root@qianfeng01 ~]# systemctl status mysqld # 如果MySQL服务没有开启,则开启 [root@qianfeng01 ~]# systemctl start mysqld
-
登录到MySQL
# 在第一次开启MySQL服务的时候,会自动生成一个随机的密码 [root@qianfeng01 ~]# grep password /var/log/mysqld.log # 到mysqld.log文件中查找 password 2020-12-16T07:47:14.117739Z 1 [Note] A temporary password is generated for root@localhost: pVLJs6&o(QQe # 使用这个随机密码登录到MySQL [root@qianfeng01 ~]# mysql -u root -p pVLJs6&o(QQe # 这里用自己的密码登录
-
修改密码
# 1. 修改MySQL的密码策略(安全等级) # MySQL默认的密码安全等级有点高,在设置密码的时候,必须同时包含大小写字母、数字、特殊字符,以及对位数有要求 show variables like '%validate_password%'; set global validate_password.policy=LOW; set global validate_password.length=4; set global validate_password.mixed_case_count=0; set global validate_password.number_count=0; set global validate_password.special_char_count=0; # 2. 修改密码 alter user root@localhost identified by '123456'; # 3. 远程授权 create user root@'%' identified by '123456'; grant all privileges on *.* to 'root'@'%' with grant option; FLUSH PRIVILEGES;
-
重新登录
试着退出MySQL,用新的密码重新登录。如果可以登录成功,那么MySQL的安装就到此结束! MySQL在安装完成后,是不需要配置环境变量的。因为RPM的安装特性,启动脚本会被放到/usr/bin下。这个路径本来 就在环境变量里面,不需要单独配置。
配置hive的环境
- 解压并配置环境变量
- 配置hive的配置文件
cp hive-env.sh.template hive-env.sh
vi hive-env.sh(可以配置jdk、hive的conf路径) - 在Hive的conf配置hive的自定义配置文件
vi hive-site.xml:添加如下内容
**注意:**前三步和内嵌模式一样
4、找到下面四个属性进行修改对应的值。
<!--配置mysql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://qianfeng01:3306/hive?createDatabaseIfNotExist=true&characterEncoding=latin1</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置mysql的连接驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置登录mysql的用户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置登录mysql的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
注意:在hive-site.xml的第3215行有一个特殊的字符,由于编码,执行程序时不识别,需要手动修改(删除就可以了)
注意:hive的元数据在mysql库里创建的数据库hive的编码最好设置成latin1
show variables like 'character%';
5、将mysql的驱动包mysql-connector-java-8.0.26.jar
上传到$HIVE_HOME/lib下(注意:驱动是jar结尾,不是tar结尾)
5.1先启动Hadoop集群
start-all.sh
在创建文件夹
[root@qianfeng01 hive] # hdfs dfs -mkdir -p /user/hive/warehouse
[root@qianfeng01 hive] # hdfs dfs -mkdir -p /tmp/hive/
[root@qianfeng01 hive] # hdfs dfs -chmod 750 /user/hive/warehouse
[root@qianfeng01 hive] # hdfs dfs -chmod 777 /tmp/hive
6、执行执行先要初始化数据库
[root@qianfeng01 hive]# bin/schematool -initSchema -dbType mysql
7、启动hive
[root@qianfeng01 hive]# bin/hive
说明: hive命令会默认启动元数据服务项(metastore)