Hive基础

ops/2025/3/3 19:08:54/

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”(密码验证组件),用于检查密码强度并提升安全性,它只允许足够安全的密码。

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

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

假如你输入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.shexport 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


http://www.ppmy.cn/ops/162840.html

相关文章

8.Dashboard的导入导出

分享自己的Dashboard 1. 在Dashboard settings中选择 JSON Model 2. 导入 后续请参考第三篇导入光放Dashboard&#xff0c;相近

Redis的持久化-RDBAOF

文章目录 一、 RDB1. 触发机制2. 流程说明3. RDB 文件的处理4. RDB 的优缺点 二、AOF1. 使用 AOF2. 命令写⼊3. 文件同步4. 重写机制5 启动时数据恢复 一、 RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程&#xff0c;触发 RDB 持久化过程分为手动触发和自动触发。 …

CSS 系列之:基础知识

块级元素和内联元素 块级元素行内元素块级元素是指在页面上以块的形式显示的元素内联元素&#xff08;又称行内元素&#xff09;以行的形式显示它们会独占一行&#xff0c;并且默认情况下会占满其父元素的宽度不独占一行<div>、<p>、<h1>至<h6>、<…

【网络】TCP vs UDP详解( 含python代码实现)

【网络】TCP vs UDP详解 1. 基本概念2. 主要特性对比3. 工作原理TCP 的工作原理UDP 的工作原理 4. 优缺点对比5. 适用场景6. 代码示例TCP 服务器TCP 客户端UDP 服务器UDP 客户端 7. 总结 TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;…

系统架构设计师—计算机基础篇—计算机网络

文章目录 网络互联模型网络协议与标准应用层协议FTP协议TFTP协议 HTTP协议HTTPS协议 DHCP动态主机配置协议DNS协议迭代查询递归查询 传输层协议网络层协议IPV4协议IPV6协议IPV6数据报的目的地址IPV4到IPV6的过渡技术 网络设计分层设计接入层汇聚层核心层 网络布线综合布线系统工…

leetcode206-----反转链表

目录 一、题目介绍 二、解题思路 2.1 头插法【建议链表有虚拟头节点】 2.1.1 思路 2.1.2 代码 时间复杂度分析&#xff1a; 空间复杂度分析&#xff1a; 总结&#xff1a; 2.2 改变链表 next 指针的指向【不建议链表有虚拟头节点】 2.2.1 双指针法【不建议链表有虚拟…

Spring源码分析の配置类解析

文章目录 前言一、processConfigBeanDefinitions1.1、checkConfigurationClassCandidate1.2、parse1.2.1、处理配置类标记了Component 的情况1.2.2、处理 ComponentScan 注解 总结 前言 在Spring的注解模式中&#xff0c;通常在构造AnnotationConfigApplicationContext时需要传…

【LLM】DeepSeek开源技术汇总

note 一、FlashMLA&#xff1a;MLA解码内核 二、DeepEP&#xff1a;针对MoE和EP的通信库 三、DeepGEMM&#xff1a;FP8 通用矩阵乘法&#xff08;GEMM&#xff09;库 四、DualPipe、EPLB&#xff1a;双向管道并行算法 五、3FS&#xff1a;一种高性能分布式文件系统 文章目录 n…