尝试学习搭建Hive环境

之前我学习搭建了Hbase环境,现在我开始接着在这个虚拟机上配置Hive的环境。

关于这次学习,我准备的是:
本机上已经存在的MySQL8.0.33,
适配的jdbc8.0.28
apache-hive-3.1.3-bin.tar.gz
Hadoop依旧是我之前的3.3.6版本,jdk8。

因为是使用本机的MySQL,所以虚拟机上只需要客户端工具用来远程连接就行了。

sudo apt update
sudo apt install mysql-client-core-8.0 mysql-client-8.0 -y

image

接下来对本机的MySQL进行配置:
-- 创建Hive元数据库
CREATE DATABASE hive_metastore CHARACTER SET latin1 COLLATE latin1_bin;
-- 创建Hive用户(注意替换'虚拟机IP'为实际IP)
CREATE USER 'hive'@'虚拟机IP' IDENTIFIED WITH mysql_native_password BY '这里是自己设置的密码';
-- 授予权限
GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive'@'虚拟机IP';
-- 调整字符集(Hive要求)
ALTER DATABASE hive_metastore CHARACTER SET latin1 COLLATE latin1_general_cs;
-- 刷新权限
FLUSH PRIVILEGES;

还要找到找到 my.ini文件:
添加或修改:
[mysqld]
bind-address = 0.0.0.0
default_authentication_plugin = mysql_native_password

添加:
bind-address = 0.0.0.0

接着重启MySQL服务。

接下来解压我提前准备好的Hive包,配置环境变量:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib/*:.

环境变量设置好之后开始配置hive:
在/usr/local/hive/conf这个文件夹里添加一个文件:hive-site.xml(这个文件在我的这个版本里是没有的,需要自己创建)
可以直接输入nano hive-site.xml,就能创建这个空文件,里面需要写上:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- 元数据库连接 - 替换[本机IP]为你的实际IP -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://[你的本机IP]:3306/hive_metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;serverTimezone=UTC</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>这里替换为之前创建MySQL用户设置的那个密码</value>
  </property>
  
  <!-- HDFS仓库目录 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  
  <!-- 临时目录 -->
  <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
  </property>
  
  <!-- 关闭schema验证 -->
  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>
</configuration>

然后在/usr/local/hive/lib这个地方放入本机里对应的jdbc,我使用的是mysql-connector-java-8.0.28.jar。

接下来就是解决Guava版本冲突:
cp $HADOOP_HOME/share/hadoop/common/lib/guava-*.jar /usr/local/hive/lib/(我的hive放在/usr/local/里的,要以自己的位置为标准)

下一步是在HDFS中创建必要的目录:
确保Hadoop已启动

start-dfs.sh
start-yarn.sh

创建Hive所需目录

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive
hadoop fs -chmod g+w /user/hive/warehouse
hadoop fs -chmod g+w /tmp/hive

验证创建

hadoop fs -ls /user/hive

验证后应该就能看到有warehouse这个文件夹。

创建目录的时候可能会因为HDFS的NameNode处于安全模式,而无法成功创建:
image
退出安全模式即可:

hdfs dfsadmin -safemode leave

最后就可以初始化元数据库了:

# 进入Hive目录
cd /usr/local/hive(以自己的位置为标准)
# 初始化(确保本机MySQL已配置好hive用户和hive_metastore数据库)
./bin/schematool -dbType mysql -initSchema

如果成功的话,就能看到:

Initialization script completed
schemaTool completed

输入hive,就可以进入Hive数据库中进行操作了

失败的话,可能的原因大致是:
hive的没有配置好,仔细检查配置文件hive-site.xml,
本机的hive用户权限和ip问题,检查MySQL是否允许远程连接
在本机MySQL配置文件中检查,确保有以下配置:

[mysqld]
bind-address = 0.0.0.0
posted @ 2026-01-30 17:10  老汤姆233  阅读(3)  评论(0)    收藏  举报