Hive基础

1.概述

Hive是一款apache旗下的基于MapReduce的分布式SQL计算工具,其功能是:

  • 将SQL语句翻译成MapReduce程序运行

Hive组件

  • 元数据管理(Matastore服务)
  • SQL解析器(Driver驱动程序)
  • 用户接口

2.Hive在VMware虚拟机中部署

hive是单机运行的,只需要部署在一台服务器即可,同时,它可以提交分布式运行的MapReduce程序运行

前提准备

一台虚拟机(基于Ubuntu)

环境:jdk,hadoop,hive

规划

|--------------------------|-----------|
| 服务 | 机器 |
| Hive本体 | 部署在hadoop |
| 元数据服务所需的关系型数据库(以MySQL为例) | 部署在hadoop |

Hive部署操作
1.更新软件包版本
sudo apt update
2.安装MySQL服务器
sudo apt install mysql-server
2.1启动并设置开机自启

通常在安装完后,MySQL 服务默认会自动启动,通过以下命令检查服务的运行状态:

sudo systemctl status mysql

如果服务正在运行:

2.2运行安全脚本

该脚本会帮助你进行一些基本的安全设置,如设置 root 密码、移除匿名用户、禁止 root 远程登录等。

sudo mysql_secure_installation

执行上面命令后你会弹出如下,

这是在 Linux 系统(从用户名和命令行环境推测)中配置 MySQL 安全性的过程。当前提示询问是否要设置 "VALIDATE PASSWORD COMPONENT"(密码验证组件),用于检查密码强度并提升安全性,它只允许足够安全的密码。

如果你希望强制使用强密码策略,增强数据库安全性,可以按下 yY 键,然后按回车键确认。

如果你不希望使用该组件,比如当前环境对密码强度要求不高,或者不想立即配置密码强度检查 ,可以按下除 yY 之外的任意键,然后按回车键跳过此设置。

假如你输入y后:

这里选择密码策略级别,输入 0(代表低级别策略)、1(代表中级别策略 )或 2(代表高级别策略)

这里以输入0为例,之后弹出:

这里选择是否删除匿名用户?

默认情况下,MySQL 安装有一个匿名用户允许任何人登录 MySQL 而无需拥有为他们创建的用户帐户。该账户无用户名和密码要求,可直接登陆,但权限低,通常只用只读权限,最好选择删除

输入 n 后:

这里选择是否禁止 root 远程登录?

最好选择n,选择完后:

这里选择是否删除test数据库,test数据库是MySQL默认用于测试的数据库,这里无所谓,都可以选。

之后:

这里选择是否现在重新加载特权表?

在修改权限后情况下,选择y,其他情况选择n,这里我选择n

到这一步,所有的设置完毕。

2.3验证安装
#启动MySQL验证是否安装成功
sudo mysql -u root -p

输入虚拟机用户密码及MySQL密码(MySQL密码随便输入即可登陆)

如果你需要一个强密码,则可以输入如下命令(这里以Ubuntu为例):

#MySQL 8.0 及以上版本
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

#MySQL 5.x 版本

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
FLUSH PRIVILEGES;


#在 MySQL 命令行中查看MySQL版本
SELECT VERSION();
#在 MySQL 命令行客户端中查看MySQL版本
\s  + 回车
#在系统命令行中查看MySQL版本
mysql --version
2.4配置远程访问(可选)

默认情况下,MySQL 只允许本地访问。如果需要从远程主机访问 MySQL 服务器,需要进行一些额外的配置。

#编辑 MySQL 配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

/*找到 bind-address 这一行,将其值从 127.0.0.1 修改为服务器的实际 IP 地址
或 0.0.0.0(表示允许所有 IP 访问),保存并退出*/

#重启 MySQL 服务
sudo systemctl restart mysql

#创建允许远程访问的用户:登录到 MySQL 服务器,执行以下 SQL 命令创建一个新用户并赋予远程访问权限
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

#将 newuser 替换为你想要创建的用户名,password 替换为用户密码
3.配置hadoop

由于Hive的运行依赖于Hadoop,需要配置Hadoop的代理用户。

配置如下内容在Hadoop的core-site.xml中,并分发到其他节点,之后重启HDFS集群

#在生产环境中,建议明确指定允许的主机和用户组,以增强系统的安全性。
#这里为了避免权限问题,我们配置值为 *
<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
  <description>
    此配置项指定了允许以 'hadoop' 用户作为代理用户发起请求的主机列表。
    值为 '*' 表示允许所有主机通过 'hadoop' 用户进行代理操作;
    若指定特定主机,可将 '*' 替换为主机名或 IP 地址,多个主机用逗号分隔。
  </description>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
  <value>*</value>
  <description>
    该配置项确定了允许以 'hadoop' 用户作为代理用户发起请求的用户组列表。
    值为 '*' 表示允许所有用户组通过 'hadoop' 用户进行代理操作;
    若指定特定用户组,可将 '*' 替换为用户组名称,多个用户组用逗号分隔。
  </description>
</property>
4.下载并解压Hive

官网下载apache-hive-4.0.0-bin.tar.gz:Index of /dist/hive

#解压到你自己想解压的指定目录

tar -zxvf  <Hive解压包路径>  -C   <解压到哪的路径> 

tar -zxvf apache-hive-4.0.0-bin.tar.gz -C  /home/hadoop/export/server/
5.配置Hive环境变量

编辑 ~/.bashrc 或 /etc/profile文件,添加以下内容:

#首先,使用vim编辑器进入文件
vim ~/.bashrc  或  vim /etc/profile


#Hive环境变量,具体以你hive文件夹目录修改路径
export HIVE_HOME=/home/hadoop/export/server/apache-hive-4.0.0-bin/
export PATH=$PATH:$HIVE_HOME/bin

保存退出后输入 source ~/.bashrc 或 source /etc/profile 使环境变量立即生效

6.配置hive-env.sh文件

在Hive的conf目录,重命名hive-env.sh文件,并输入相关配置:

#重命名模板文件hive-env.sh.template
mv hive-env.sh.template hive-env.sh



export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib

7.配置元数据库

登陆MySQL,创建元数据库及用户:

#创建Hive元数据库
CREATE DATABASE hive_metastore;
 
#创建Hive元数据库用户并授权
CREATE USER 'hive'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive'@'localhost';
FLUSH PRIVILEGES;

8.配置hive使用MySQL作为元数据库:

MySQL_JDBC驱动下载官网:https://dev.mysql.com/downloads/connector/j/

也可以到Maven中央仓库下载:Central Repository: mysql/mysql-connector-java

Hive3.x及以上版本,使用MySQL驱动8.0及以上

Hive早期版本,使用5.1x系列

下载完后,将MySQL_JDBC驱动jar包复制或移动到 $HIVE_HOME/lib 目录

mv  mysql-connector-java-8.0.11.jar  /home/hadoop/export/server/apache-hive-4.0.0-bin/lib

编辑hive-site.xml文件:

在Hive的conf目录,创建hive-site.xml文件,并输入相关配置:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hivemetastore?createDatabaseIfNotExist=true</value>
    <description>
    指定 MySQL 数据库的连接地址,hivemetastore 是数据库名,如果不存在会自动创建
    </description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>指定 MySQL 的 JDBC 驱动类名</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>your_username</value>
    <description>用户名</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>your_password</value>
    <description>密码</description>
</property>

9.初始化元数据库

schematool -dbType mysql -initSchema

10.启动Hive

# 1.启动Hadoop集群
start-all.sh

# 2.启动Hive Metastore服务(可选,用于远程连接)
hive --service metastore &

# 3.启动Hive Shell
hive

11.验证配置

#在Hive Shell命令行中执行sql语句
show databases;
show tables;


#退出
!exit
相关推荐
小技工丨5 小时前
Hive-08之数据仓库之建模、分析
数据仓库·hive·hadoop
Arbori_262156 小时前
hive 面试题
大数据·数据仓库·hive·hadoop
sunxunyong9 小时前
.hive-staging_hive临时文件处理
数据仓库·hive·hadoop
Mcband16 小时前
ETL-kettle数据转换使用详解
数据仓库·etl
web_1323342143617 小时前
深入解析HDFS:定义、架构、原理、应用场景及常用命令
hadoop·hdfs·架构
小技工丨19 小时前
Hive-05之查询 分组、排序、case when、 什么情况下Hive可以避免进行MapReduce
数据仓库·hive·hadoop
三生暮雨渡瀟瀟21 小时前
Hive之正则表达式
hive·正则表达式
B站计算机毕业设计超人1 天前
计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型音乐推荐系统 音乐数据分析 音乐可视化 音乐爬虫 知识图谱 大数据毕业设计
大数据·hadoop·spark·网络爬虫·知识图谱·课程设计·推荐算法
小技工丨1 天前
Hive-06之函数 聚合Cube、Rollup、窗口函数
数据仓库·hive·hadoop