配置MySQL
create database hive_db;
create user hive@'localhost' identified by 'hive';
update mysql.user set host = '%' where user = 'hive';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
完成后查看结果:
配置Hive
上传驱动包
上传mysql-connector-java-8.0.21.jar
到$HIVE_HOME/lib
中:
修改配置文件
复制配置文件/opt/modules/apache-hive-2.3.8-bin/conf/hive-default.xml.template为hive-site.xml,进行如下配置:
<configuration>
<!--mysql数据库连接信息-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!--mysql连接地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.181.1:3306/hive_db?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong</value>
</property>
<!--mysql用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!--mysql密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<!--在hive提示符中包含当前数据库-->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!--在查询输出中打印列的名称-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!--hive数据库在HDFS中的存放地址-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--hive本地缓存目录-->
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!--hive在HDFS中的缓存目录-->
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!--从远程文件系统中添加资源的本地临时目录-->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive</value>
</property>
<!--hive运行时的结构化日志目录-->
<property>
<name>hive.querylog.location</name>
<value>/tmp/hive</value>
</property>
<!--日志功能开启时,存储操作日志的最高级目录-->
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive</value>
</property>
</configuration>
初始化元数据
schematool -dbType mysql -initSchema
hive_db生成了许多表:
启动命令行
验证多用户同时访问
新开一个ssh窗口连接centos01
并重复上述操作:
两个会话都可以执行成功,说明使用MySQL存储Hive元数据允许同一时间内多个会话对数据进行操作