【数据仓库】Apache Hive初体验

news2024/9/20 10:52:21

为什么使用Hive?
使用Hadoop MapReduce直接处理数据所面临的问题:

人员学习成本太高需要掌握ava语言MapReduce实现,复杂查询逻辑开发难度太大!

1,使用Hive处理数据的好处操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)避免直接写MapReduce,减少开发人员的学习成本支持自定义函数,功能扩展很方便

2,背靠Hadoop,擅长存储分析海量数据集合。

 什么是Hive

hive介绍

Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。
Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行Hive由Facebook实现并开源。

架构图

 组件

用户接口

包括 CLI、JDBC/0DBC、WebGU。其中,CLI(command line interface)为shell命行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

元数据存储

通常是存储在关系数据库如 ysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器

完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS中,并在随后有执行引擎调用执行。

执行引擎

Hive本身并不直接处理数据文件。而是通过执行引警处理。当下Hive支持MapReduce、Tez、Spark3种执行引警

Data Mode1概念


数据模型:用来描述数据、组织数据和对数据进行操作,是对现实世界数据特征的描述Hive的数据模型类似于RDBMS库表结构,此外还有自己特有模型

Hive中的数据可以在粒度级别上分为三类

Table表
Partition 分区
Bucket 分桶
 

Databases 数据库

Hive作为一个数据仓库,在结构上积极向传统数据库看齐,也分数据库( Schema),每个数据库下面有各自的表组成。默认数据库default。
Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse。
因此,Hive中的数据库在HDFS上的存储路径为:
$fhive.metastore.warehouse.dir]/databasename.db
比如,名为itcast的数据库存储路径为:
/user/hive/warehouse/itcast.db

Tables 表

Hive表与关系数据库中的表相同。Hive中的表所对应的数据通常是存储在HDFS中,而表相关的元数据是存储在RDBMS中。
Hive中的表的数据在HDFS上的存储路径为:
$fhive.metastore.warehouse.dirl/databasename.db/tablename

Partitions 分区

1,Partition分区是hive的一种优化手段表。分区是指根据分区列(例如“日期day”)的值将表划分为不同分区。这样可以更快地对指定分区数据进行查询。
2,分区在存储层面上的表现是:table表目录下以子文件夹形式存在。
3,一个文件夹表示一个分区。子文件命名标准: 分区列分区值。
4,Hive还支持分区下继续创建分区,所谓的多重分区。关于分区表的使用和详细介绍,后面模块会单独展开。

Buckets 分桶

Bucket分桶表是hive的一种优化手段表。分桶是指根据表中字段( 例如“编号ID”)的值,经过hash计算规则将数据文件划分成指定的若干个小文件。
分桶规则:hashfunc(字段)% 个数,余数相同的分到同一个文件。

分桶的好处:

1,可以优化join查询和方便抽样查询
2,Bucket分桶表在HDFS中表现为同一个表目录下数据根据hash散列之后变成多个文件。关于桶表以及分桶操作,后面模块会单独展开详细讲解。 

Hive和Hadoop关系

从功能来说,数据仓库软件,至少需要具备下述两种能力:

1,存储数据的能力、分析数据的能力。

2,Hive利用HDFS存储数据,利用MapReduce查询分析数据。

Apache Hive作为一款大数据时代的数据仓库软件,当然也具备上述两种能力。只不过Hive并不是自己实现了上述两种能力,而是借助Hadoop。


3,Hive的最大的魅力在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析。

Hive不不是没啥用,不过是套壳Hadoop罢了,其实不然。

Hive和MySQL对比


1,Hive虽然具有RDBMS数据库的外表,包括数据模型、SQL语法都十分相似,但应用场景却完全不同。

2,Hlive只适合用来做海量数据的离线分析。Hive的定位是数据仓库,面向分析的OLAP系统。

3,Hive不是大型数据库,也不是要取代MySQL承担业务数据处理。

Hive元数据


元数据(Metadata),又称中介数据、中继数据,为描述数据的数据( data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

Hive Metadata


1,Hive Metadata即Hive的元数据
2,包含用Hive创建的database、 table、表的位置、类型、属性,字段顺序类型等元信息。

3,元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。

Hive Metastore


1,Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。
2,有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore服务即可。某种程度上也保证了hive元数据的安全

Metastore配置方式


概述
metastore服务配置有3种模式:内嵌模式本地模式、远程模式区分

3种配置方式的关键是弄清楚两个问题:

1,Metastore服务是否需要单独配置、单独启动?

2,Metadata是存储在内置的derby中,还是第三方RDBMS,比如MySQL

本文中使用企业推荐模式--远程模式部署 

内嵌模式


1,内嵌模式(Embedded Metastore)是metastore,默认部署模式。
此种模式下,元数据存储在内置的Derby数据库,并且Derby数据库和metastore服务都嵌入在主HiveServer进程中当启动HiveServer进程时,Derby和metastore都会启动。不需要额外起Metastore服务。但是一次只能支持一个活动用户,适用于测试体验,不适用于生产环境。

 

 本地模式


本地模式(Local Metastore)下,Metastore服务与主HiveServer进程在同一进程中运行,但是存储元数据的数据库在单独的进程中运行,并且可以在单独的主机上。metastore服务将通过JDBC与metastore数据库进行通信本地模式采用外部数据库来存储元数据,推荐使用MySQL。
hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式
缺点:每启动一次hive服务,都内置启动了一个metastore。

 

远程模式


1,远程模式(Remote Metastore)下,Metastore服务在其自己的单独JVM上运行,而不在HiveServer的JVM中运行。如果其他进程希望与Metastore服务器通信,则可以使用Thrift Network API进行通信。
2,远程模式下,需要配置hive.metastore.uris 参数来指定metastore服务运行的机器ip和端口,并且需要单独手动启动metastore服务。元数据也采用外部数据库来存储元数据,推荐使用MySQL。

 

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

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

相关文章

MUR2080CT- ASEMI二极管的特性和应用

编辑-Z 本文将详细介绍MUR2080CT二极管的特性和应用。首先,将介绍MUR2080CT二极管的基本结构和工作原理。然后,将探讨MUR2080CT二极管的特性,包括正向电压降、反向漏电流和反向恢复时间等。接下来,将介绍MUR2080CT二极管在电源、…

linux环境安装mysql数据库

一:查看是否自带mariadb数据库 命令:rpm -qa | grep mariadb 如果自带数据库则卸载掉重新安装 命令:yum remove mariadb-connector-c-3.1.11-2.el8_3.x86_64 二:将压缩文件上传到/user/local/mysql文件夹 或者直接下载 命令&a…

18款iPad绘画软件推荐!iPad必备生产力工具

每当提起iPad,少不了会听到坊间流传已久的那句话,「买前生产力,买后爱奇艺」,确实有不少奔着生产力入手iPad的人,最终让iPad沦为煲剧神器或泡面盖,但我们没必要因噎废食,因为总有人能克服iPad上…

互联网医院系统源码实现:打造现代化医疗服务平台

摘要 本文将介绍一个基于Python的简化版互联网医院系统的源码实现,主要包含用户注册与登录、医生信息管理、在线预约挂号、在线问诊与咨询、电子病历管理、在线支付与结算等功能。该源码实现仅为示例,实际开发中需要考虑更多的业务逻辑和安全性。 1. …

摄像头m2dock(MAIX-II DOCK)

官方文档地址 https://wiki.sipeed.com/soft/maixpy3/zh/index.html 一、软件准备 1 烧录镜像软件 2 镜像 当前最近版本镜像文件 3 SDFormatter 4 Maixpy IDE 二、SD卡准备 1 格式化SD卡(用SDFormatter) 2 烧录 3 弹出,插入开发板中 出现…

会议OA项目之待开历史所有会议(使用一个dao方法完成三种会议状态的查询)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.主要功能点介绍 二.效果演示 三.前端…

多线程(JavaEE初阶系列5)

目录 前言: 1.什么是定时器 2.标准库中的定时器及使用 3.实现定时器 结束语: 前言: 在上一节中小编给大家介绍了多线程中的两个设计模式,单例模式和阻塞式队列模式,在单例模式中又有两种实现方式一种是懒汉模式&a…

小白如何在简单的分布式锁里反复踩坑

背景 为什么要做分布式锁? Java开发就逃不过多线程问题,而对于单个实例,我们可以使用synchronized锁作为基本的线程锁,解决多线程问题,但对于实际项目中集群部署,分布式系统(不同的客户端&…

HTML再出发

HTML再出发 注意事项VScode相关排版标签语义化块级元素和行内元素文本标签img标签图片格式超链接 注意事项 VScode相关 vscode必须打开一个文件夹才能使用liveServer,只打开一个文件无法使用liveServer功能。网页编写不标准,缺少head,body等…

java springBoot 整合日志

1.在Spring Boot项目的resources目录下创建一个新的logback.xml文件。 2.logback.xml中&#xff0c;配置 代码 <?xml version"1.0" encoding"UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL…

SpringBoot复习:(4)打成的jar包是如何启动的?

jar包通过MANIFEST的Main-Class指定了主类JarLauncher, JarLauncher的main方法代码如下&#xff1a; 其中调用的launch的代码如下&#xff1a; 首先&#xff0c;创建了一个自定义的ClassLoader,代码如下&#xff1a; 其中调用的重载的createClassLoader代码如下&#xff1…

BloomFilter

概念和由来 布隆过滤器&#xff08;英语&#xff1a;Bloom Filter&#xff09;是 1970 年由布隆提出的。它实际上是一个很长的二进制数组(00000000)一系列随机hash算法映射函数&#xff0c;主要用于判断一个元素是否在集合中。 布隆过滤器适用于对存储空间要求较高&#xff0c…

[深度学习实战]基于PyTorch的深度学习实战(下)[Mnist手写数字图像识别]

目录 一、前言二、Mnist手写数字图像识别2.1 加载数据2.1.1 下载地址2.1.2 用 numpy 读取 mnist.npz 2.2 定义卷积模型2.3 开始训练2.4 完整代码2.5 验证结果2.6 修改参数 三、后记 PyTorch——开源的Python机器学习库 一、前言 首先感谢所有点开本文的朋友们&#xff01;基于P…

js正则表达式方法学习

js正则表达式学习 1.能干嘛2.创建正则表达式3.关于正则表达式的方法3.1 正则的方法3.1.1 test3.1.2 compile3.1.3 exec捕获组对象具名捕获组对象非捕获组对象 3.2 String类型的对象的正则相关的方法3.2.1 search()3.2.2 replace()3.2.3 split()3.2.4 match()3.2.5 matchAll() 1…

目标检测识别——大恒(DaHeng)相机操作与控制编程

文章目录 引言正文相关开发库的介绍编程准备配置引用头文件GalaxyIncludes.h配置lib文件 具体编程过程初始化和反初始化枚举设备开关设备 属性控制属性控制器种类 图像采集控制和图像处理采单帧回调采集 总结 引言 在做老师的横向项目时&#xff0c;需要用大恒相机&#xff0c…

MQTT 5.0 Reason Code 介绍与使用速查表

Reason Code Reason Code 在 MQTT 中的主要作用是为客户端和服务端提供更详细的反馈。比如我们可以在 CONNACK 报文中将用户名或密码错误对应的 Reason Code 反馈给客户端&#xff0c;这样客户端就能够知道自己无法连接的原因。 MQTT 3.1.1 中的 Reason Code 虽然 MQTT 3.1.…

超实用的品牌软文推广方案分享,纯干货

品牌软文推广对于企业来说是一项关键且重要的战略&#xff0c;如何通过软文推广提高品牌的知名度、美誉度和影响力&#xff0c;成为了许多企业关注的问题。本文伯乐网络传媒将从多个角度深度探讨品牌软文推广方案&#xff0c;为企业提供一些有价值的参考。 一、确定品牌软文推广…

idea 关闭页面右侧预览框/预览条

idea 关闭页面右侧预览框 如图&#xff0c;预览框存在想去除 找了好多方法&#xff0c;什么去掉“setting->appearance里的show editor preview tooltips”的对钩&#xff1b;又或者在该预览区的滚动条上右键&#xff0c;“取消勾选show code lens on scrollbar hover”。都…

等价背包--装箱问题

1024. 装箱问题 - AcWing题库 直接将消耗的体积变成价值即可&#xff0c;最后利用总的体积减去价值即是剩余的空间 #include<bits/stdc.h> using namespace std; int a[1000010]; int f[1000010]; int main() {int n,v;cin>>v;cin>>n;for(int i1;i<n;i){c…

适合创业者的办公空间

近年来&#xff0c;我们注意到一个趋势正在全球范围内逐渐崛起&#xff1a;越来越多的创业者选择租赁共享办公室而不是传统的独立办公室。这不仅反映了创业生态的繁荣&#xff0c;也体现了了一种更加灵活、高效的工作方式。 首先&#xff0c;共享办公室提供了成本效益。对于初…