二、Hive安装部署详细过程
Apache Hive 是一个构建在 Hadoop 之上的数据仓库基础设施。它提供了类似 SQL 的查询语言 (称为 HiveQL 或 HQL),让熟悉 SQL 的开发人员和分析师能够轻松地查询和分析存储在 HDFS 或其他兼容存储系统中的大规模数据集。把结构化或半结构化的数据映射成表,然后用 HQL 操作,是不是很酷?😎
这篇笔记将指导你完成 Hive 的基本安装和配置过程,并展示如何通过 DataGrip 连接到 Hive。
一、准备工作:安装 Hive 的先决条件 🛠️
在正式开始安装 Hive 之前,请确保你的环境已经满足以下基本要求:Java 环境已安装、Hadoop 集群已启动并运行正常、MySQL环境已安装
二、下载并解压 Hive 安装包 📦
-
访问 Apache Hive 官网:前往 Apache Hive 的官方网站 (hive.apache.org) 的下载页面。
-
选择合适的版本:根据你的 Hadoop 版本和需求,选择一个稳定的 Hive 版本进行下载 (
apache-hive-x.y.z-bin.tar.gz
)。- 假设你已经将安装包上传到
/export/softwares
目录下,例如apache-hive-3.1.2-bin.tar.gz
。
- 假设你已经将安装包上传到
-
解压安装包到指定目录:将安装包解压到
/export/server
目录下。- 示例解压命令:
cd /export/softwares # 首先进入安装包所在目录
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server/
- 重命名目录为
hive
:- 示例重命名命令:
cd /export/server/
mv apache-hive-3.1.2-bin hive
<font color="brown">现在,你的 Hive 安装路径就是 `/export/server/hive`。</font>
三、配置 Hive 环境变量 🌍
- 编辑配置文件 (
~/.bashrc
或/etc/profile
)。- 示例编辑命令 (当前用户):
vim ~/.bashrc
- 添加以下内容 :
# HIVE_HOME
export HIVE_HOME=/export/server/hive
export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:/export/server/hive/bin
- 使配置生效:
source ~/.bashrc
四、配置 Hive 核心文件 ⚙️
Hive 的核心配置在 $HIVE_HOME/conf
(即 /export/server/hive/conf
) 目录下。
hive-env.sh
:- 复制模板并编辑:
cd $HIVE_HOME/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
- 在
hive-env.sh
中主要配置 (取消注释并修改):
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
hive-site.xml
:- 创建
hive-site.xml
:
- 创建
vim hive-site.xml
- 在
hive-site.xml
中添加或修改以下核心配置 (以 MySQL 为例):
⚠️ 注意:以下配置是非常基础的示例。
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop01:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true</value>
</property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value>
</property><!-- MySQL账号 -->
<property><name>javax.jdo.option.ConnectionUserName</name><value>root</value>
</property><!-- MySQL密码 -->
<property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value>
</property><!-- H2S运行绑定host -->
<property><name>hive.server2.thrift.bind.host</name><value>hadoop01</value>
</property><!-- 远程模式部署metastore metastore地址 -->
<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 为例) 🐬
- 安装 MySQL。
详细安装教程参考《CentOS 7 yum 安装 MySQL 并实现任意主机远程连接》 - 准备 MySQL JDBC 驱动。
- 下载 MySQL JDBC 驱动 JAR 文件。
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/
) 目录下。
示例复制命令:
cp /tmp/mysql-connector-j-8.4.0.jar /export/server/hive/lib/
六、初始化 Hive Metastore Schema (首次安装时执行) ✨
- 执行 schema 初始化命令:
$HIVE_HOME/bin/schematool -dbType mysql -initSchema -verbos
如果看到 “Schema initialization [SUCCESS]”,则初始化成功。🎉
创建Hive存储文件的目录:
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
拷贝到hadoop02,hadoop03下面:
cd /export/server/
scp -r hive hadoop02:$PWD
scp -r hive hadoop03:$PWD
七、启动 Hive 服务和客户端 🚀 CLI
- 启动 HiveServer2 (重要!DataGrip 连接需要):
- 后台启动 HiveServer2 命令:
nohup /export/server/hive/bin/hive --service metastore &
nohup $HIVE_HOME/bin/hiveserver2 > $HIVE_HOME/logs/hiveserver2.log 2>&1 &
请确保 HiveServer2 服务已成功启动并正在运行。
- (可选)启动 Hive CLI (用于直接命令行操作):
- 启动命令:
hive
示例 HQL 命令 (查看数据库):
hive> SHOW DATABASES;
八、在 DataGrip 中连接 Hive 🐘+🐬=❤️
DataGrip 是一款强大的数据库 IDE。
- 打开 DataGrip。
- 新建数据源 (Data Source):
+
->Data Source
->Apache Hive
。
- 配置连接参数:
- 名称: 自定义连接名 (例如
MyHiveCluster
)。 - 主机: HiveServer2 主机名或 IP。
- 端口: HiveServer2 端口号 (默认
10000
)。 - 用户: 连接用户名 (若无特定认证,可留空或填 Hadoop 用户)。
- 密码: 对应密码。
- 名称: 自定义连接名 (例如
-
测试连接 (Test Connection):
- 点击
Test Connection
按钮。成功则显示 “Succeeded”。✅
- 点击
-
保存并连接:
- 点击
确定
或应用
。
- 点击
九、常见问题与排错提示 🧐
- 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 工具进行可视化操作和查询。大数据分析之旅,现在才刚刚开始!