Hive架构原理以及部署教程

news2024/10/7 14:34:03

◆了解Hive架构原理

◆了解Hive和RDBMS的对比

Hive架构原理

Hive架构原理 - 知乎

Hive 是基于 Hadoop 的数据仓库工具,它提供了类 SQL 查询语言 HQL(Hive Query Language),可以将 SQL 语句转化为 MapReduce 任务进行数据处理。

Hive 的架构可以分为三层:

  1. 用户接口层:Hive 提供了 CLI(Command Line Interface)和 JDBC/ODBC 接口,用户可以通过这些接口向 Hive 发送 HQL 查询语句。
  2. 元数据层:Hive 的元数据存储在关系型数据库中,包括表的元数据、分区信息、表的属性等。Hive 通过 Hive Metastore 组件管理元数据,支持多种元数据存储方式,如 Derby、MySQL 等。
  3. 执行引擎层:Hive 执行引擎将 HQL 查询语句转化为 MapReduce 任务进行数据处理。在执行引擎层中,还包括了优化器和执行器两个组件。优化器会对 HQL 查询语句进行优化,提高查询效率;执行器负责执行 MapReduce 任务,并将结果返回给用户。

总体来说,Hive 的架构与传统的关系型数据库相似,但是底层的数据存储和处理方式不同,它是基于 Hadoop 生态系统的 MapReduce 模型实现的。

HIVE和rdbms(关系数据库)区别

hive的计算引擎是hadoop的mapreduce,存储是hadoop的hdfs文件系统适合做数据仓库

rdbms的引擎由数据库自己设计实现例如mysql的innoDB,存储用的是数据库服务器本地的文件系统

Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive是建立在Hadoop之上的数据仓库软件工具,它提供了一系列的工具,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Loading)操作。Hive可以直接访问存储在HDFS或者其他存储系统(如Hbase)中的数据,然后将这些数据组织成表的形式,在 其上执行ETL操作。 Hive的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
Hive的数据存储 Hive与传统数据库对比 - 腾讯云开发者社区-腾讯云
1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等)
2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
3、Hive中包含以下数据模型:DB、Table,External Table,Partition,Bucket。 db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹 table:在hdfs中表现所属db目录下一个文件夹 external external table:与table类似,不过其数据存放位置可以在任意指定路径 partition:在hdfs中表现为table目录下的子目录 bucket:在hdfs中表现为同一个表目录下根据hash散列之后的多个文件

一.Hive本地模式安装

Hive 本地模式安装,具体步骤如下:

1. 安装 MySQL

(1)解压安装包

1.1 解压安装包

  现在已经为大家下载好了 MySQL 5.7.25 的安装包,存放在 /root/software 目录下,首先进入此目录下,使用如下命令进行解压即可使用:

tar-xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar

  将其解压到当前目录下,即 /root/software 中。

1.2 安装 MySQL 组件

安装 MySQL 组件,顺序为:

common——》libs——》libs-compat——》client——》server

  使用 rpm -ivh 命令依次安装以下组件

(1)首先安装mysql-community-common (服务器和客户端库的公共文件),使用命令:

rpm-ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm

(2)其次安装mysql-community-libs(MySQL数据库客户端应用程序的共享库),使用命令:

rpm-ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm

(3)之后安装 mysql-community-libs-compat(MySQL 之前版本的共享兼容库),使用命令:

rpm-ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

(4)之后安装 mysql-community-client(MySQL客户端应用程序和工具),使用命令:

rpm-ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm

(5)最后安装 mysql-community-server(数据库服务器和相关工具),使用命令:

rpm-ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

1.3登录 MySQL

初始化 MySQL 的数据库

/usr/sbin/mysqld --initialize-insecure --user=mysql

启动 MySQL 服务

使用如下命令开启 MySQL 服务,让其在后台运行,说明:一定要加“&”,才能把脚本放到后台运行

/usr/sbin/mysqld --user=mysql &

登录 MySQL

使用root用户无密码登录 MySQL

mysql -uroot

重置 MySQL 密码(没用)

在 5.7 版本后,我们可以使用 alter user...identified by命令把root用户的密码修改为“123456”,具体命令如下所示

alter user 'root'@'localhost' identified by '123456';

修改完成,使用exit或者quit命令退出 MySQL,重新登录验证密码是否修改成功,具体命令如下所示:

mysql -uroot -p123456

增加远程登录权限

当我们的帐号不允许从远程登录,只能在localhost连接时。这个时候只要在 MySQL 服务器上,更改mysql 数据库里的 user 表里的 host 项,从localhost改成%即可实现用户远程登录。

(1)首先我们来查看 mysql 数据库下的 user表信息

use mysql; # 切换成mysql数据库
select user,host from user; # 查询用户信息

可以看到在user表中已创建的root用户。host字段表示登录的主机,其值可以用IP地址,也可用主机名。

(2)实现远程连接(授权法)

  将 host 字段的值改为%就表示在任何客户端机器上能以root用户登录到 MySQL 服务器,建议在开发时设为%。

# 设置远程登录权限 
mysql> updateuserset host='%'where host='localhost';
# 刷新配置信息
mysql> flushprivileges;

2. Hive 安装部署

你需要在安装 Hive 之前安装并配置好 Hadoop。如果您还没有安装 Hadoop,请先安装 Hadoop,然后再安装 Hive。

可以参考我以前的教程

https://blog.csdn.net/m0_69379600/category_12306373.html

(1)解压安装包

现在已经为大家下载好了 hive2.3.4 的安装包,存放在 /root/software 目录下,首先进入此目录下,使用如下命令进行解压即可使用:

tar -zxvf apache-hive-2.3.4-bin.tar.gz

将其解压到当前目录下,即 /root/software 中

(2)配置环境变量:/etc/profile 文件

1.首先打开 /etc/profile 文件:

vim /etc/profile

2.将以下内容添加到配置文件的底部,添加完成输入“:wq”保存退出:

# 配置Hive的安装目录
export HIVE_HOME=/root/software/apache-hive-2.3.4-bin
# 在原PATH的基础上加入Hive的bin目录,环境变量
export PATH=$PATH:$HIVE_HOME/bin

3.让配置文件立即生效,使用如下命令:

source /etc/profile

4.检测 Hive 环境变量是否设置成功,使用如下命令查看 Hive 版本:

hive --version

执行此命令后,若是出现 Hive 版本信息说明配置成功:

(3)修改配置文件hive-env.sh

Hive中,hive-env.sh是一个用于设置环境变量和其他配置选项的脚本文件

修改该文件可能是为了更改某些Hive的配置选项,例如JVM选项、Hadoop配置选项或其他选项,以确保Hive在特定环境下运行良好。可能需要修改该文件,以便Hive能够正确地连接到其他服务或资源,并且可以正常地读取和写入数据。

具体来说,修改配置文件hive-env.sh可能涉及编辑该文件并更改其中的一些变量值或添加新的变量。这些更改可能需要在启动Hive之前进行,以确保更改在Hive启动时生效。

具体步骤

切换到 ${HIVE_HOME}/conf 目录下,将 hive-env.sh.template 文件复制一份并重命名为 hive-env.sh:

cp hive-env.sh.template hive-env.sh

修改完成,使用 vi 编辑器进行编辑:

vim hive-env.sh

在文件中配置 HADOOP_HOMEHIVE_CONF_DIR 以及HIVE_AUX_JARS_PATH 参数:

# 配置Hadoop安装路径
HADOOP_HOME=/root/software/hadoop-2.7.7
# 配置Hive配置文件存放路径
export HIVE_CONF_DIR=/root/software/apache-hive-2.3.4-bin/conf
# 配置Hive运行资源库路径
export HIVE_AUX_JARS_PATH=/root/software/apache-hive-2.3.4-bin/lib

配置完成,输入“:wq”保存退出。

3. Hive元数据配置到MySQL

(1)驱动拷贝

将MySQL 驱动包 mysql-connector-java-5.1.47-bin.jar 拷贝到 ${HIVE_HOME}/lib 目录下。

将/root/software目录下的 MySQL 驱动包 mysql-connector-java-5.1.47-bin.jar 拷贝到 ${HIVE_HOME}/lib 目录下。

cd /root/software/
cp mysql-connector-java-5.1.47-bin.jar apache-hive-2.3.4-bin/lib/

(2)配置 Metastore到MySQL:hive-site.xml

在${HIVE_HOME}/conf目录下创建一个名为hive-site.xml的文件,并使用vi编辑器进行编辑:

touch hive-site.xml
vim hive-site.xml

根据官方文档配置参数(难点)

(AdminManual Metastore Administration - Apache Hive - Apache Software Foundation),拷贝数据到 hive-site.xml 文件中:

配置成自己的

<configuration>
<!-- 连接元数据库的链接信息 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<!-- 连接数据库驱动 -->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!-- 连接数据库用户名称 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!-- 连接数据库用户密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

(3)初始化元数据库

如果使用的是 2.x 版本的 Hive,那么就必须手动初始化元数据库。 使用 schematool -dbType <db type> -initSchema 命令进行初始化、

schematool -dbType mysql -initSchema

若是出现“schemaTool completed”则初始化成功

(4)Hive 连接

在任意目录下使用 Hive 的三种连接方式之一:CLI 启动 Hive。由于已经在环境变量中配置了 HIVE_HOME ,所以这里直接在命令行执行如下命令即可:

hive
或者
hive --service cli

效果如下图所示:

可以使用如下命令退出 Hive 客户端:

hive> exit;
或者
hive> quit;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考备战·希赛网每日一练】2023年5月2日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源&#xff1a;2023年05月02日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 三、知识查缺 复习 流水线技术。序列图&#xff08;顺序图&#xff09;用于展现系统中一个用例和多…

剪枝与重参第九课:DBB重参

目录 DBB重参前言1. DBB2. DBB的六种变换2.1 Transform I: a conv for conv-BN2.2 Transform II&#xff1a;a conv for branch addition2.3 Transform III&#xff1a;a conv for sequential convolutions2.4 Transform IV&#xff1a;a conv for depth concatenation2.5 Tran…

【SpringBoot】 整合RabbitMQ 消息单独以及批量的TTL

生产者端 目录结构 导入依赖 修改yml 业务逻辑 队列消息过期 消息单独过期 TTL&#xff08;Time To Live&#xff09;存活时间。表示当消息由生产端存入MQ当中的存活时间&#xff0c;当时间到达的时候还未被消息就会被自动清除。RabbitMQ可以对消息单独设置过期时间也可以对…

爬虫 - QS世界大学排名数据

爬虫 - QS世界大学排名数据 网站简介爬虫方法概述使用工具爬虫概述 第一部分导入需要用到的python包设置selenium控制浏览器打开网页控制鼠标操作定位节点 提取数据滚轮翻页构建循环自动爬取数据数据储存 第二部分导入需要用到的python包获取网页设置请求头读取链接获取网页信息…

TIM-定时器——STM32

TIM-定时器——STM32 TIM(Timer)定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff0c;而且还包…

K8S第二讲 Kubernetes集群简易版搭建步骤

Kubernetes集群搭建步骤 1&#xff1a;准备物理或虚拟机器 为Kubernetes集群准备物理或虚拟机器。至少需要一个控制节点&#xff08;Master Node&#xff09;和一个工作节点&#xff08;Worker Node&#xff09;&#xff0c;建议使用Linux操作系统。 2&#xff1a; 安装Dock…

1987-2021年全国各省进出口总额数据含进口总额和出口总额

1987-2021年全国各省进出口总额数据含进口和出口 1、时间&#xff1a;1987-2021年 2、范围&#xff1a;包括全国30个省不含西藏 3、指标&#xff1a;进出口总额、进口总额、出口总额 4、单位&#xff1a;万美元 5、来源&#xff1a;各省NJ、JIN rong统计NJ 6、缺失情况说…

递归算法及经典例题详解

大部分人在学习编程时接触的第一个算法应该就是递归了&#xff0c;递归的思想其实很好理解&#xff0c;就是将一个问题拆分为若干个与本身相似的子问题&#xff0c;通过不断调用自身来求解。 但很多新手在实际操作中却很难正确使用到递归&#xff0c;有时面对问题还会有种无从…

win7下java环境搭建以及jdk环境变量配置

很多人在搭建页游、手游时候经常遇到JAVA闪退,基本都是环境变量或者路径错误导致的。本章节主要讲解在win7系统环境下,java环境变量配置方法,java环境配置正确,才可以对apk程序进行反编译运行页游手游。其他操作系统环境变量大同小异参考下就会了。 安装教程: 1、直接运…

让语言学习更简单的 WordFlow

作为一个英语并不是那么特别好的计算机专业学生&#xff0c;长期积累英语的学习对个人发展还是有意义的。简单来说&#xff0c;我在语言上最大的两个问题&#xff0c;一个自己「不理解」&#xff0c;另一个是自己「不会表达」。 上述两个问题主要体现在口语层面&#xff0c;而…

1997-2021年全国30省技术市场成交额(亿元)

1997-2021年全国30省技术市场成交额 1、时间&#xff1a;1997-2021年 2、范围&#xff1a;30省不含西藏 3、来源&#xff1a;国家统计J 4、指标&#xff1a;技术市场成交额 5、缺失情况说明&#xff1a;无缺失 6、指标解释及用途&#xff1a; 技术市场成交额是一个客观、…

YOLOv5 训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 ● 难度&#xff1a;夯实基础⭐⭐ ● 语言&#xff1a;Python3、Pytorch3 ● 时间&#xff1a;5月1日-5月6日 &#x1f37a;要求&#xff1…

基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)

一、云LIS系统是将各种样本、免疫、临检、放免、及实验用的分析仪器&#xff0c;通过网络管理和传输实验分析过程中全部数据。对每一专业&#xff0c;实现检验申请、样本采集、样本核收、联机检验、质量控制、报告审核到报告发布的全环节的信息化管理平台。 二、基于B/S架构的云…

【SpringMVC】| SpringMVC注解式开发

目录 一&#xff1a;SpringMVC注解式开发 1. RequestMapping定义请求规则 2. 五种数据提交的方式 3. 请求参数中文乱码解决 4. action方法的返回值 5. SpringMVC的四种跳转方式 6. SpringMVC支持的默认参数类型 7. 日期处理 8. 标签的使用 9. 资源在WEB-INF目录下 一…

常见三种编码方式

常见三种编码方式 1. one-hot 编码2. 虚拟编码3. 效果编码 最近复习一些书&#xff0c;记录一下。在特征工程中&#xff0c;数据集经常会出现分类变量&#xff0c;这时候的分类变量可能是字符型&#xff0c;通常不能直接用于训练模型&#xff0c;这时需要对分类变量进行编码&am…

JavaWeb《CSS》

本笔记学习于Acwing平台 目录 1. 样式定义方式 2.1 行内样式表&#xff08;inline style sheet&#xff09; 2.2 内部样式表&#xff08;internal style sheet&#xff09; 2.3 外部样式表&#xff08;external style sheet&#xff09; 2. 选择器 2.1 标签选择器 2.2 …

ChatGPT服务器配置部署-chatGPT国内入口搭建

chatGPT国内入口 ChatGPT是由OpenAI公司开发的一种自然语言生成模型&#xff0c;国内入口一般是通过API接口或者SDK对接实现的。具体的对接方式可以参考以下步骤&#xff1a; 了解ChatGPT的API接口或者SDK: 首先需要了解ChatGPT提供的API接口或者SDK&#xff0c;包括使用方式、…

文件上传漏洞靶场

目录 第一关 源码 前端 后端 代码审计 前端 后端 绕过原理 抓包后未修改 抓包后修改且文件上传成功 第二关 源码 后端 代码审计 绕过原理 抓包后未修改 抓包后修改且文件上传成功 ​编辑 第三关 源码 后端 代码审计 绕过原理 第四关 源码 后端 代码审…

linux以太网(二)

内核版本&#xff1a;linux-3.14.16 基于imx6 一、文件fec_main.c分析 路径&#xff1a;drivers\net\ethernet\freescale\fec_main.c 1、platform总线 标准的平台总线使用方式 设备树匹配 设备树节点 2、平台总线probe 1&#xff09;分配net_device相关结构 分配 与平…

单源最短路问题

全部代码 全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork 单源最短路问题 先用spfa算法 不行再换其他的 spfa-超级万能 说不定比dijsktra还快 dis[] 代表第k到某一点的最短距离 queue 代表刚被更新的点 它有可能更…