如何在 Ubuntu (下载和设置指南)

⚡ 智能摘要

Apache Hive 安装在 Ubuntu 作为在已运行的 Hadoop 集群之上的一个轻量级数据仓库层,因此设置主要就是解压一个归档文件并将三个环境变量指向正确的目录。

  • 🧱 Hadoop优先: 每个 Hadoop 守护进程都必须已经运行,因为 Hive 将其表数据存储在 HDFS 上,并将其作业提交到集群。
  • ⬇️ 下载源: 二进制版本来自 Apache 镜像页面,3.x 系列将于 2024 年 10 月停止维护。
  • 📁 两个配置文件: HIVE_HOME 应该放在 bashrc 文件中,HADOOP_HOME 应该放在 Hive bin 目录下的 hive-config.sh 文件中。
  • 💾 HDFS文件夹: 在创建第一个表之前,仓库目录和临时目录必须存在于 HDFS 上,并且具有组写入权限。
  • 🧩 架构步骤: schematool 工具用于创建元数据存储表,而 Hive 3.x 及更高版本拒绝针对未初始化的模式启动。
  • 🔨 快速核实: 执行 create 语句并接着执行 describe 语句,可以证明 shell、元数据存储和 HDFS 都已正确连接在一起。

如何在……上安装 Hive Ubuntu

在安装 Apache Hive 之前,我们需要一个专用的 Hadoop的 安装、启动并运行所有 Hadoop 守护进程。

有关 Hadoop 的安装,请查看此内容。 链接.

所有 Hadoop 守护进程运行正常后,即可开始安装 Hive 部分。以下分四个阶段进行:

Apache Hive 安装过程

  1. 前提条件和版本兼容性
  2. 安装 Hive
  3. 元存储架构初始化
  4. Hive shell 命令

安装 Apache Hive 的先决条件 Ubuntu

Hive 不是一个独立的数据库。它是一个查询层,将 HiveQL 转换为在现有集群上运行的作业,因此几乎所有安装失败的情况都与此有关。 trac问题可能出在缺少必要的先决条件上,而不是 Hive 本身。下载任何内容之前,请确认以下事项:

  • 受支持的 JDK。 Hive 4.1.x 运行在 JDK 17 上,而 Hive 4.2.x 将最低版本要求提高到 JDK 21。请使用以下命令检查版本: java -version 并确保已导出 JAVA_HOME。
  • 正在运行的Hadoop集群。 NameNode 和 DataNode 都必须处于活动状态。运行 JPS 并确认 NameNode、DataNode、ResourceManager 和 NodeManager 都出现在列表中。
  • 对HDFS的写入权限。 启动 Hive 的帐户需要拥有在以下目录下创建目录的权限 高密度文件系统.
  • 版本匹配。 Hive 4.2.0 是基于 Hadoop 3.4.1 和 Tez 0.10.5 构建的。Hive 3.x 系列已于 2024 年 10 月停止维护,因此全新安装应以 4.x 系列为目标。
  • 免费资源。 单节点学习设置大约需要 4 GB 内存和 20 GB 可用磁盘空间。

完成这些步骤后,下面的下载和解压过程将顺利进行。

如何在 Ubuntu

以下是安装 Hive 的分步过程 Ubuntu:

步骤 1)下载并安装 Hive Ubuntu

要下载 Hive 稳定版安装程序,请参阅 Apache (阿帕奇) URL 如下所述。

https://www.apache.org/dyn/closer.cgi/hive/ — 前往 URL 然后选择 Apache 镜像下载链接。 Apache Hive 下载页面 列出哪些版本与哪些 Hadoop 版本匹配。

镜像页面打开后会显示可用的 Hive 版本目录列表,如下所示。

Apache镜像页面列出了可用的Apache Hive版本目录

选择最新版本的 Hive 安装包。(我目前的版本是 Hive 3.1.2。)发布文件夹中并排列出了二进制文件和源代码归档文件。

Hive 发布文件夹,其中包含二进制文件和源代码分发包。

点击 bin 文件,下载就会开始。

浏览器提示下载 apache-hive bin tar.gz 分发文件

步骤 2)例如tract tar 文件

转到下载的 tar 文件所在位置,然后执行 extrac使用以下命令解压 tar 文件以安装 Hive Ubuntu 在你的系统上。

tar -xvf  apache-hive-3.1.2-bin.tar.gz

终端会将每个文件解压到新的 Hive 目录中并显示出来。

当 Hive tar 归档文件正在执行时,终端输出如下:trac特德 Ubuntu

步骤 3)在 Apache Hive 中放置不同的配置属性

在此步骤中,我们将做两件事:

  1. 在 bashrc 文件中放置 Hive 主目录路径
  2. 在 hive-config.sh 中设置 Hadoop 主目录路径。

1) 在 ~/.bashrc 文件中指定 Hive 路径

使用以下命令打开文件进行编辑。

用于打开 bashrc 文件以编辑 Hive 环境变量的命令

  • 打开如上图所示的 bashrc 文件
  • 在 bashrc 文件中指定 Hive 主目录路径,即 HIVE_HOME 路径,并按如下所示导出它。

在 bashrc 文件末尾添加了 HIVE_HOME 和 PATH 导出行

Code 要添加到 bashrc 文件中:

export HIVE_HOME="/home/guru99hive/apache-hive-1.2.0-bin"
export PATH=$PATH:$HIVE_HOME/bin

重新加载文件 源〜/ .bashrc 因此,新路径将在当前终端会话中生效。

2) 在 hive-config.sh 中导出 Hadoop 路径

为了与Hadoop生态系统通信,我们在Hive配置文件中定义Hadoop主目录路径。打开hive-config.sh文件,如下所示。

用于从 Hive bin 目录打开 hive-config.sh 的命令

在 hive-config.sh 文件中指定 HADOOP_HOME 路径,如下所示。

在 hive-config.sh 文件中声明的 HADOOP_HOME 路径

步骤4)在Hadoop中创建Hive目录

为了与Hadoop通信,我们需要在Hadoop中创建目录,如下所示。Hive将托管表数据写入仓库目录,并将暂存输出写入临时目录。

创建 Hive tmp 和 warehouse 目录的 HDFS 命令

授予 root 用户在 Hadoop 中创建 Hive 文件夹的权限。如果没有抛出任何错误消息,则表示 Hadoop 已成功授予 Hive 文件夹权限。

终端显示已授予 HDFS 上 Hive 文件夹的组写入权限。

步骤 5)进入 Hive shell

输入以下内容即可进入蜂巢外壳: /hive 复制代码 命令如下所示。

从 Hive bin 目录打开 Hive shell 提示符 Ubuntu

如何初始化 Hive Metastore Schema

Hive 将所有表名、列名和数据类型保存在一个名为 metastore 的关系型存储中。全新安装时,该存储为空;从 Hive 3.x 版本开始,shell 必须创建模式表才能启动。Hive bin 目录中自带的 schematool 工具用于创建这些模式表。

对于单用户学习环境,捆绑的 Derby 数据库就足够了:

$HIVE_HOME/bin/schematool -dbType derby -initSchema

该命令会打印它创建的模式版本,并以……结尾。 schemaTool 已完成Derby 会将文件写入运行命令的目录,因此之后务必从同一目录启动 Hive。

Derby 一次只能接受一个活动会话,因此不适合共享集群。Point Hive 位于 MySQL 而是将连接属性添加到 hive-site.xml 文件中,然后使用不同的数据库类型重新运行该工具:

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

完整的房产清单和司机安排都在操作指南中有详细介绍。 使用以下命令配置 Hive 元数据存储 MySQL还有两面旗帜值得铭记:

  • -信息 报告当前元数据存储中记录的模式版本,而不做任何更改。
  • -升级架构 将现有元数据存储迁移到新安装的 Hive 版本的 schema 版本。

模式设置完毕后,shell 就可以接受它的第一个 HiveQL 语句了。

Hive shell 命令

接下来,我们将使用 Hive shell 命令“create”创建一个示例表,并指定列名。

以下是使用 Hive 创建数据库的示例代码。下面的屏幕截图依次显示了 CREATE 语句和 DESCIENCE 输出。

创建表和描述产品命令的 Hive shell 输出

从上面的截图中我们可以看到以下内容:

1)在 Hive 中创建带有列名的示例表

  • 此处的表名称为“product”,具有三个列名称 产品、产品名称和价格
  • 这三列的名称分别用它们各自的数据类型表示。
  • 所有字段均以逗号“,”结尾。

2) 显示 Hive 表信息

  • 使用“describe”命令,我们可以查看Hive中存在的表信息。
  • 这里显示的是表架构中列的名称及其对应的数据类型。
  • 最后,它会显示执行此命令所花费的时间以及提取的行数。

创建数据库的示例代码 蜂房 (供自行检查)

1) 创建表 product(product int, pname string, price float)

Row format delimited
Fields terminated by ',';

2)描述产品;

一旦表响应描述请求,shell、元数据存储和HDFS就全部连接在一起了。从这里开始,同一个会话接受更广泛的请求。 创建、修改和删除表 声明和 按以下方式排序、分组和聚类 查询。

常见的蜂巢安装错误 Ubuntu 以及如何修复它们

大多数首次运行失败都源于 Hive 的外部环境,而非 Hive 本身。下表列出了出现频率最高的错误信息及其原因以及清除这些错误信息的命令。

屏幕上的信息 可能的原因 固定
hive:命令未找到 HIVE_HOME/bin 不在 PATH 环境变量中。 重新检查 bashrc 中的导出行,然后运行 源〜/ .bashrc
元数据存储中未找到版本信息 元数据存储模式从未初始化。 针对选定的数据库类型运行 schematool 并添加 -initSchema 参数。
调用 localhost:9000 时出现连接异常,失败 HDFS 未运行 启动 Hadoop 守护进程并确认 NameNode 和 DataNode 出现在列表中 JPS
名称节点处于安全模式 NameNode 仍处于启动安全模式。 退出安全模式 hdfs dfsadmin -safemode leave
权限被拒绝:无法对 /user/hive/warehouse 进行写入访问 仓库目录缺少组写入权限 重新申请 hdfs dfs -chmod g+w 在仓库和临时目录中
Preconditions.checkArgument 出现 NoSuchMethodError Hive 和 Hadoop 提供的 Guava jar 版本不同。 删除 Hive lib 目录中旧的 Guava jar 文件,并将 Hadoop jar 文件复制到其原位置。

快速区分 Hive 问题和 Hadoop 问题的方法是运行以下命令 JPS 首先,如果守护进程缺失,则集群出现故障;如果守护进程存在但 shell 仍然失败,则故障出在 Hive 配置或元数据存储模式中。一旦 shell 稳定下来, HiveQL 操作符和内置函数 参考文献是自然而然的下一步。

常见问题

托管表允许 Hive 同时拥有元数据和文件,因此请删除ping 它会删除仓库目录中的数据。外部表仅记录元数据,并删除它们。ping 它不会触及底层文件。

Hive可以在任何可以运行JVM和Hadoop的地方运行,但其shell脚本假定为Unix系统架构。 Windows 大多数团队使用 WSL2 或 Docker 镜像; macOS 导出 JAVA_HOME 和 HADOOP_HOME 后,同一个 tar 归档文件就可以正常工作了。

Beeline 是一个 JDBC 客户端,它直接连接到 HiveServer2,而不是在 shell 进程中加载​​ Hive。它支持并发用户和身份验证,并且旧版的 Hive CLI 已被弃用,因此新安装的 Hive 应该统一使用 Beeline。

现代搜索引擎会将历史查询统计信息输入到学习到的成本模型中,从而预测扫描大小、分区修剪和连接顺序。云供应商也会提供相同的信号,作为文件压缩、分区布局和容器大小的自动建议。

Copilot 可以快速生成 bashrc 导出配置、hive-site.xml 代码块和 schematool 调用,代理运行器可以在沙箱环境中执行这些配置。请将输出视为初稿:版本号、端口和目录路径仍需根据您自己的集群进行验证。

对于学习而言,大约 4 GB 的内存和 20 GB 的可用磁盘空间就足够了,因为 Hive 本身就是一个瘦客户端。生产节点的规模取决于 Hadoop 集群和元数据存储数据库,而不是 Hive 本身。

将新版本解压到旧版本旁边,重新指向 HIVE_HOME,然后运行 ​​schematool 并加上 -upgradeSchema 参数,使元数据存储匹配。移除操作只需删除 Hive 目录并剥离相关文件即可。ping bashrc 中的导出行;HDFS 仓库数据得以保留。

不。MapReduce 已不再作为 Hive 执行引擎使用,Hive 4.x 默认运行在 Apache Tez 上。 映射简化 该模型仍然值得理解,因为 Tez 遵循同样的定向工作模式。

总结一下这篇文章: