And 3.Hive的安装使用
3.1.环境准备
3.1.1.Hive包准备:
将准备好的包均放置到hadoop01下的 /opt/software
目录内统一管理
这里需要使用的Hive包版本为 apache-hive-3.1.2-bin.tar.gz
官方下载:Index of /dist/hive (apache.org)
mysql包为5.7:mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
官方下载:MySQL :: MySQL Community Downloads
3.1.2.计划安装目标
这里我将会把mysql安装到hadoop03上,然后将hive安装到另外两台主机上(hadoop01,hadoop02)
3.2.安装mysql
这里安装mysql可以参考之前文章:
3.2.1.分发mysql包
将hadoop01的mysql压缩包拷到hadoop03主机上
scp -r /opt/software/mysql/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar root@hadoop03:/opt/software/mysql/
到hadoop03主机上检查:
3.2.2.解压mysql的rpm包
直接将mysql包解压
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
3.2.3.检查环境
在安装之前先检查一下目标环境是否有已经安装的mysql,避免出错
rpm -qa | grep mysql
3.2.4.安装和基础配置
没有问题就可以直接安装了,在当前目录下(mysql解压目录):
rpm -ivh mysql-community-*.rpm --nodeps --force
启动mysql检查是否正常可用:
systemctl start mysqldl
systemctl status mysqld
查看mysql的默认初始密码:
grep password /var/log/mysqld.log cat /var/log/mysqld.log |grep password
mysql -uroot -p
## 复杂密码有些字符可能会被shell解析,所以密码等弹出输入符后再输入
+.uuiXtm,7xp
修改mysql默认密码,先修改密码策略:
show variables like "password";
提示需要先修改初始密码:
set password for 'root'@'localhost' = 'P@ssword1';
重启MySQL:
mysql> exit
Bye
[root@hadoop03 mysql]# systemctl restart mysqld
再次登录mysql,使用已经修改的新密码:
查看密码策略:
show variables like "%password%";
将 validate_password_length
和 validate_password_policy
记下,这里需要让配置一直有效,需要修改mysqld的配置文件:
mysql> exit
Bye
[root@hadoop03 mysql]# vi /etc/my.cnf
重启mysql:
systemctl restart mysqld
进入mysql修改密码:
set password for root@'localhost' = '123456';
为了后面方便,我将mysql的root用户的host修改为 %
允许任何地址连接登录,可以不修改
update mysql.user set host="%" where user='root' and host="localhost";
3.2.5.为Hive创建元数据存储数据库
create database hive character set latin1;
3.2.6.创建数据库用户hive并分配权限
create user "hive"@"%" identified by "123456";
grant all privileges on hive.* to 'hive'@'%' with grant option;
flush privileges;
-- 刷新
show grants for hive;
-- 查看用户权限
3.2.7.允许从本地查看数据库用户信息
grant all privileges on hive.* to 'hive'@'localhost' identified by '123456';
flush privileges;
select host,user,authentication_string from mysql.user;
3.3.安装Hive
3.3.1.分发解压hive安装包
3.3.1.1.分发
将hive包分发到hadoop02上
scp /opt/software/apache-hive-3.1.2-bin.tar.gz root@hadoop02:/opt/software/
3.3.1.2.解压
这边统一将安装放置到 /opt/module
目录下
1.进入到压缩包目录下:
cd /opt/software
2.解压压缩包:
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
3.进入 module
检查:
cp /opt/module
3.3.2.配置安装
3.3.2.1.配置环境变量
vi /etc/profile
编辑 profile
配置文件,添加下方配置:
##########hive3.1.2
export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HCAT_HOME=$HIVE_HOME/hcatalog
export PATH=$HIVE_HOME/bin:$PATH
source命令让profile文件配置生效:
source /etc/profile
3.3.2.2.配置hive
3.3.2.2.1.配置hive-env.sh
进入hive的 conf
目录
cd /opt/module/apache-hive-3.1.2-bin/conf/
cp复制一份 hive-env.sh.template
命名为 hive-env.sh
,并且编辑它:
cp hive-env.sh.template hive-env.sh vi hive-env.sh
将hadoop_home路径填入:
HADOOP_HOME=/opt/module/hadoop-3.1.4
3.3.2.2.2.配置hive-site.xml
不要切换目录,直接继续vi编辑 hive-site.xml
文件
配置如下(按需修改):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration>
<property>
<!--javax.jdo.option.ConnectionURL: 指定了Hive元数据存储数据库的连接URL,这里使用的是MySQL数据库,并指定了连接的主机和端口号,以及Hive元数据数据库的名称。参数createDatabaseIfNotExist=true表示如果指定的数据库不存在,则会尝试创建该数据库。-->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop03:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<!--javax.jdo.option.ConnectionDriverName: 指定了连接Hive元数据存储的数据库所使用的JDBC驱动名,这里是MySQL数据库,因此指定为com.mysql.jdbc.Driver。-->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<!--mysql账号-->
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<!--mysql密码-->
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<!--hive.metastore.warehouse.dir: 指定了Hive数据仓库的默认存储路径。这是Hive用于存储表数据的位置。-->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/data</value>
</property>
<property>
<!--hive.hbase.snapshot.restoredir: 指定了HBase快照恢复的目录。这个属性用于指定在HBase快照恢复时存储快照的位置。-->
<name>hive.hbase.snapshot.restoredir</name>
<value>/tmp</value>
</property>
<property>
<!--system:java.io.tmpdir: 指定了Java临时目录的位置,这个属性可以让Hive指定用于存储临时文件的位置。-->
<name>system:java.io.tmpdir</name>
<value>/opt/module/apache-hive-3.1.2-bin/iotmp</value>
</property>
<property>
<!--system:user.name: 指定了Hive运行时的用户名称-->
<name>system:user.name</name>
<value>hive</value>
</property>
<!--hive.exec.local.scratchdir和hive.downloaded.resources.dir: 分别指定了Hive执行过程中使用的本地临时目录和下载资源的存储目录。-->
<property>
<name>hive.exec.local.scratchdir</name>
<value>${system:java.io.tmpdir}/${system:user.name}</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
</property>
</configuration>
3.3.2.2.3.应用hive-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties
3.3.2.2.4.应用hive-exec-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
3.3.2.2.5.在HDFS创建hive目录
保证hadoop集群开启状态,且正常使用
使用hdfs命令为hive创建目录
hadoop fs -mkdir -p /user/hive/data
确保路劲已经创建
3.3.2.2.6.拷JDBC驱动包
将mysql的JDBC驱动包拷到$HIVE_HOME/lib
JDBC包在上方mysql官网中可下载,再贴一个:MySQL :: 下载 MySQL Connector/J (存档版本)
cd $HIVE_HOME/lib wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.49.tar.gz
3.3.2.2.7.Hive初始化
schematool -dbType mysql -initSchema