二、Hive安装部署详细过程

Hive 是大数据离线数仓的核心组件。我们这次将系统讲解 Hive 的安装、配置、Metastore 初始化及 DataGrip 连接实战,帮助你快速完成 Hive 环境搭建。

一、准备工作:安装 Hive 的先决条件

在正式开始安装 Hive 之前,请确保你的环境已经满足以下基本要求:Java 环境已安装、Hadoop 集群已启动并运行正常、MySQL环境已安装

二、下载并解压 Hive 安装包

  1. 访问 Apache Hive 官网:前往 Apache Hive 的官方网站 (hive.apache.org) 的下载页面。
  1. 选择合适的版本 :根据你的 Hadoop 版本和需求,选择一个稳定的 Hive 版本进行下载 (apache-hive-x.y.z-bin.tar.gz)。

    • 假设你已经将安装包上传到 /export/softwares 目录下,例如 apache-hive-3.1.2-bin.tar.gz
  2. 解压安装包到指定目录 :将安装包解压到 /export/server 目录下。

    • 示例解压命令:
bash 复制代码
cd /export/softwares  # 首先进入安装包所在目录
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server/
  1. 重命名目录为 hive
    • 示例重命名命令:
bash 复制代码
cd /export/server/
mv apache-hive-3.1.2-bin hive

现在,你的 Hive 安装路径就是 /export/server/hive

三、配置 Hive 环境变量

  1. 编辑配置文件
    • 示例编辑命令 (当前用户):
bash 复制代码
vim /etc/profile
  1. 添加以下内容 :
bash 复制代码
# HIVE_HOME
export HIVE_HOME=/export/server/hive
export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:/export/server/hive/bin
  1. 使配置生效
bash 复制代码
source /etc/profile

四、配置 Hive 核心文件

Hive 的核心配置在 $HIVE_HOME/conf (即 /export/server/hive/conf) 目录下。

  1. hive-env.sh
    • 复制模板并编辑:
bash 复制代码
cd $HIVE_HOME/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
  • hive-env.sh 中主要配置 (取消注释并修改):
bash 复制代码
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
  1. hive-site.xml
    • 创建 hive-site.xml:
bash 复制代码
vim hive-site.xml
  • hive-site.xml 中添加或修改以下核心配置 (以 MySQL 为例): 注意:以下配置是非常基础的示例。
xml 复制代码
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop01:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value>
        <description>JDBC connect string for a JDBC metastore. Added allowPublicKeyRetrieval=true for MySQL 8+ compatibility.</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore. Use com.mysql.cj.jdbc.Driver for MySQL 8+.</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value> </property>

    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop01</value>
    </property>

    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop01:9083</value>
    </property>

    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    </configuration>

五、准备 Metastore 数据库 (以 MySQL 为例)

  1. 安装 MySQL 。 详细安装教程参考《CentOS 7 yum 安装 MySQL 并实现任意主机远程连接》
  2. 准备 MySQL JDBC 驱动
    • 下载 MySQL JDBC 驱动 JAR 文件。
bash 复制代码
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.4.0/mysql-connector-j-8.4.0.jar -O /tmp/mysql-connector-j-8.4.0.jar
  • 将 JAR 文件复制到 $HIVE_HOME/lib/ (即 /export/server/hive/lib/) 目录下。 示例复制命令:
bash 复制代码
cp /tmp/mysql-connector-j-8.4.0.jar /export/server/hive/lib/

六、初始化 Hive Metastore Schema (首次安装时执行)

  • 执行 schema 初始化命令:
bash 复制代码
$HIVE_HOME/bin/schematool -dbType mysql -initSchema -verbose

如果看到 "Schema initialization [SUCCESS]",则初始化成功。

创建Hive存储文件的目录

bash 复制代码
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
mkdir -p /export/server/hive/logs

拷贝到hadoop02,hadoop03下面

bash 复制代码
cd /export/server/
scp -r hive hadoop02:$PWD
scp -r hive hadoop03:$PWD

七、启动 Hive 服务和客户端 CLI

  1. 启动 HiveServer2 (重要!DataGrip 连接需要)
    • 后台启动 HiveServer2 命令:
bash 复制代码
nohup /export/server/hive/bin/hive --service metastore > /export/server/hive/logs/metastore.log 2>&1 &
nohup /export/server/hive/bin/hive --service hiveserver2 > /export/server/hive/logs/hiveserver2.log 2>&1 &

请确保 HiveServer2 服务已成功启动并正在运行,可以尝试使用一下命令来进行检查。

bash 复制代码
# 1. 检查后台任务列表 (看是否有对应的 nohup 任务在运行)
jobs -l
# 2. 检查 Java 进程 (看是否有 Metastore 和 HiveServer2 对应的 Java 进程)
jps
# 3. 检查网络端口监听 (看 9083 和 10000 端口是否被监听)
netstat -naltp | grep 9083
netstat -naltp | grep 10000
  1. (可选)启动 Hive CLI (用于直接命令行操作)
    • 启动命令:
bash 复制代码
hive

示例 HQL 命令 (查看数据库):

sql 复制代码
hive> SHOW DATABASES;

八、在 DataGrip 中连接 Hive

DataGrip 是一款强大的数据库 IDE。

  1. 打开 DataGrip
  2. 新建数据源 (Data Source)+ -> Data Source -> Apache Hive
  1. 配置连接参数
    • 名称 : 自定义连接名 (例如 MyHiveCluster)。
    • 主机: HiveServer2 主机名或 IP。
    • 端口 : HiveServer2 端口号 (默认 10000)。
    • 用户: 连接用户名 (若无特定认证,可留空或填 Hadoop 用户)。
    • 密码: 对应密码。
  1. 测试连接 (Test Connection)

    • 点击 Test Connection 按钮。成功则显示 "Succeeded"。✅
  2. 保存并连接

    • 点击 确定应用

九、常见问题与排错提示

  • DataGrip 连接 HiveServer2 超时或拒绝连接:检查 HiveServer2 服务状态、主机/端口配置、防火墙。
  • JDBC 驱动问题:确保 DataGrip 加载了正确且完整的 Hive JDBC 驱动。
  • 认证问题:若 HiveServer2 配置了认证,DataGrip 连接需相应调整。
  • MySQL JDBC 驱动问题:强调 hive-site.xml 中 javax.jdo.option.ConnectionDriverName (MySQL 8.x 用 com.mysql.cj.jdbc.Driver) 与 $HIVE_HOME/lib/ 下的 ==JDBC JAR 版本必须匹配==,且旧版驱动要移除。
  • MySQL 连接参数:如 serverTimezone, allowPublicKeyRetrieval 对 MySQL 8.x 的重要性。 Hadoop htrace-core*.jar 丢失问题:指出 Hadoop 的 common/lib 目录可能缺少此文件,以及如何从 Maven 或 Hadoop 安装包恢复。
  • Guava 版本冲突:解释 Hive 自带 Guava 与 Hadoop Guava 的版本差异,以及如何通过重命名 Hive 的 Guava JAR 来解决。
  • Hive lib 目录完整性:强调如果 Hive 缺少核心类(如 ParseException),可能需要从原始安装包恢复整个 lib 目录。
  • 服务启动日志检查:指导用户如何查看 nohup.out$HIVE_HOME/logs/ 下的日志文件来定位服务启动失败的原因。
  • getcwd 错误:提示用户不要在已被删除的目录中执行命令。
  • HDFS 权限和目录:确保 Hive 在 HDFS 上的工作目录存在且权限正确。

恭喜你!你不仅搭建了 Hive 数据仓库,还能通过强大的 DataGrip 工具进行可视化操作和查询。大数据分析之旅,现在才刚刚开始!

相关推荐
数智顾问2 小时前
(100页PPT)数字化转型德勤集团信息化顶层规划方案(附下载方式)
大数据·人工智能
汽车仪器仪表相关领域2 小时前
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案
大数据·人工智能·机器学习·单元测试·压力测试·可用性测试
D愿你归来仍是少年2 小时前
深入解析 LSM-Tree
大数据·lsm-tree
babe小鑫2 小时前
2026高职大数据工程技术毕业就业指南
大数据·信息可视化
talen_hx2962 小时前
《零基础入门Spark》学习笔记 Day 10
大数据·hive·笔记·学习·spark
源码之家2 小时前
计算机毕业设计:汽车数据可视化分析系统 Django框架 Scrapy爬虫 可视化 数据分析 大数据 大模型 机器学习(建议收藏)✅
大数据·python·信息可视化·flask·汽车·课程设计·美食
二进制_博客2 小时前
Spark On Hive 系统整合
大数据·hive·spark
D愿你归来仍是少年2 小时前
Apache Flink 学习笔记 · Phase 1
大数据·flink·apache
白眼黑刺猬2 小时前
真实面试:大数据开发岗
大数据·面试·职场和发展