首页 > 其他分享 >今日总结

今日总结

时间:2023-09-27 17:12:34浏览次数:26  
标签:总结 分区 接口 Server Hive 今日 数据 数据库

今天进行了hive的学习

 

1、Hive的架构原理
Hive架构中主要包括客户端(Client)、Hive Server、元数据存储(MetaStore)、驱动器(Driver)。

 

1) Hive架构
Hive有多种接口供客户端使用,其中包括Thrift(Apache的一种软件框架,用于可扩展的跨语言服务开发)接口、数据库接口、命令行接口和Web接口。

数据库接口包括ODBC(Open Database Connectivity,开放数据库连接)和JDBC(Java DataBase Connectivity,Java数据库连接)。

客户端通过Thrift接口及数据库接口访问Hive时,用户需连接到Hive Server,通过Hive Server与Driver通信。命令行接口CLI是和Hive交互的最简单方式,可以直接调用Driver进行工作。CLI只能支持单用户,可用于管理员工作,但不适用于高并发的生产环境。用户也可使用Web接口通过浏览器直接访问Driver并调用其进行工作。

Hive Server作为JDBC和ODBC的服务端,提供Thrift接口,可以将Hive和其他应用程序集成起来。Hive Server基于Thrift软件开发,又被称为Thrift Server。Hive Server有两个版本,包括HiveServer和HiveServer2。HiveServer2本身自带了一个命令行工具BeeLine,方便用户对HiveServer2进行管理。

MetaStore存储Hive的元数据,Hive的元数据包括表的名字、表的属性、表的列和分区及其属性、表的数据所在目录等。元数据被存储在单独的关系数据库中,常用的数据库有MySQL和Apache Derby(Java数据库)。MetaStore提供Thrift界面供用户查询和管理元数据。

Driver接收客户端发来的请求,管理HiveQL命令执行的生命周期,并贯穿Hive任务整个执行期间。Driver中有编译器(Compiler)、优化器(Optimizer)和执行器(Executor)三个角色。Compiler编译HiveQL并将其转化为一系列相互依赖的Map/Reduce任务。Optimizer分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和MapReduce任务进行优化。Executor按照任务的依赖关系分别执行Map/Reduce任务。

2)HCatalog
HCatalog用于Hadoop的表和元数据管理,使用户可以使用不同的数据处理工具(如Pig、MapReduce等)更轻松地读取和写入元数据。HCatalog基于Hive的MetaStore为数据处理工具提供服务。

下图中,HCatalog通过Hive提供的HiveMetaStoreClient对象来间接访问MetaStore,对外提供HCatLoader、HCatInputFormat来读取数据;提供HCatStorer、HCatOutputFormat来写入数据。

 

3)WebHCat
WebHCat是HCatalog的REST(Representational State Transfer,表现状态传输)接口,可以使用户能够通过安全的HTTPS协议执行操作。如图6-3所示,用户可以通过WebHCat访问Hadoop MapReduce(或YARN)、Pig(Apache的大型数据集分析平台)、Hive和HCatalog DDL(Data Definition Language,数据库模式定义语言)。WebHCat所使用的数据和代码在HDFS中维护,执行操作时需从HDFS读取。HCatalog DLL命令在接收请求时直接执行;MapReduce、Pig和Hive作业则由WebHCat服务器排队执行,可以根据需要监控或停止。

2、Hive的数据存储模型
Hive主要包括三类数据模型:表(Table)、分区(Partition)和桶(Bucket)。

Hive中的表类似于关系数据库中的表。表可以进行过滤、投影、连接和联合等操作。表的数据一般存储在HDFS的目录中,Hive的表实质上对应Hadoop文件系统上的一个目录。Hive将表的元数据存储在关系型数据库中,实现了元数据与数据的分离存储。

Hive根据分区列(Partition Column)的值将表以分区的形式进行划分,例如具有“日期”分区列的表可以根据日期划分为多个分区。表中的一个分区对应表所在目录下的一个子目录。

1)Hive的分区和分桶
Hive将数据组织成数据库表的形式供用户进行较高效的查询分析。Hive处理的数据集一般较大,为了提高查询的效率,Hive会在表的基础上进一步对数据的划分进行细化。

当表数据量较大时,Hive通过列值(如日期、地区等)对表进行分区处理(Partition),便于局部数据的查询操作。每个分区是一个目录,将相同属性的数据放在同个目录下,可提高查询效率。分区数量不固定,分区下可再有分区或者进一步细化为桶。

Hive可将表或分区进一步组织成桶,桶是比分区粒度更细的数据划分方式。每个桶是一个文件,用户可指定划分桶的个数。在分桶的过程中,Hive针对某一列进行哈希计算,根据哈希值将这一列中的数据划分到不同的桶中。分桶为表提供了额外的结构,Hive在处理某些查询(如join、表的合并)时利用这个结构可以提高效率,使数据抽样更高效。

2)Hive的托管表和外部表
Hive中的表分为两种,分别为托管表和外部表,托管表又称为内部表。Hive默认创建托管表,托管表由Hive来管理数据,意味着Hive会将数据移动到数据仓库的目录中。若创建外部表,Hive仅记录数据所在路径,不将其移动到数据仓库目录中。在读取外部表时,Hive会在数据仓库之外读取数据。在做删除表的操作时,托管表的元数据和数据会被一起删除,而外部表仅删除元数据,处于数据仓库外部的数据则被保留。外部表相对于托管表要更为安全,也利于数据的共享。

选择使用外部表还是托管表组织数据取决于用户对数据的处理方式,如果一个数据集的数据处理操作都由Hive完成,则使用托管表;当需要使用桶时,则必须使用托管表。如果需要用Hive和其他工具一起处理同一个数据集,或者需要将同一个数据集组织成不同的表,则使用外部表。
————————————————
版权声明:本文为CSDN博主「IT路上的军哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JunLeon/article/details/121606429

标签:总结,分区,接口,Server,Hive,今日,数据,数据库
From: https://www.cnblogs.com/zhaoyueheng/p/17733142.html

相关文章

  • 三十而立,心怀斗志,我仍是少年——小康师兄的2021年度总结
    文章目录一、前言二、工作总结2.1团队的主动前行2.2软件的稳定运行2.3招聘的那些事三、博客总结3.1转变的开始3.2博客成绩单3.3付费专栏数据统计四、生活总结(多图)4.1五缘湾婚礼4.2一个小手术4.3开开心心搬新家4.4快快乐乐过大年4.5其他六、Flag复盘七、立个Flag八、后......
  • 披荆斩棘,砥砺前行,我是新手奶爸,我仍笑如少年——小康师兄的2022年度总结
    文章目录一、前言二、工作总结2.1向下管理2.2向上管理2.3无可奈何的事情三、生活总结3.1此生必驾3183.2小虎妞3.3乳腺炎不容忽视3.4工作和生活的平衡四、博客总结4.1年度回忆录4.2付费专栏4.3博客成绩五、其他5.1定制有边界,方案无边界5.2有趣的项目六、Flag和OKR6.12......
  • 前端之Promise简单谈一下总结
    首先我们知道当处理前端多个异步请求时,如果想要有顺序的调用若干个异步请求,传统写法就会造成回调地狱,比如我 因此伟大的Promise诞生 基本写法如上所示,首先是定义一个promise对象,这时状态为Pending,当执行resolve函数之后状态为resloverd,调用reject函数,状态为reject那么then......
  • 第四周课堂总结
    本次Linux课堂上主要是学习了各种处理文件的基本命令,接下来我就总结我在课堂上学习的各种操作命令。1.创建文件通过touch命令可以创建一个空白文件,也可以设置文件,属性。 2.查看文件(1)cat文件使用cat命令可以查看内容较少的文件。  (2)more命令more命令以逐页的方式显......
  • 哈希表力扣题总结
    经验1unordered_map/map容器:两数和:https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&envId=top-100-liked字符串异位词https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&envId=top-100-liked当寻找数组中有一定关......
  • 面向对象编程的六大原则个人总结(附代码)
    面向对象编程的六大原则个人总结(附代码)目录面向对象编程的六大原则个人总结(附代码)一、什么是单一职责原则?核心思想好处代码示例总结二、什么是里式替换原则?规则代码示例总结三、什么是迪米特法则?核心思想规则代码示例总结四、什么是开闭原则?理解代码示例总结五、什么是依赖倒......
  • 9月26日总结
    一.今天做了什么今天上午学习了数据结构和马克思主义原理,下午进行了团日活动,之后和朋友出去看电影了,看了《敢死队4》,盆友迟到了半个小时,感觉亏了,但是看完后又感觉没亏,因为少看了点史。这片真的太烂了。。。。二.遇到的问题,如何解决无三.明天准备做什么背20个单词......
  • 每日总结20230926
    代码时间(包括上课)5h代码量(行):100行博客数量(篇):1篇相关事项:1、今天上午上的是软件设计模式和人机交互技术,全部都是新课。2、今天软件设计模式讲的是外观模式和装饰模式,装饰模式不满足开闭原则,外观模式相对简单。3、人机交互技术讲的是代码块应该比较灵活、与用户进行有效的沟通......
  • 每日总结9.26
    今天上午我先上了一节算法与数据结构的课程。这门课程主要讲解了各种算法和数据结构的基本原理和应用。我们学习了不同的排序算法,如冒泡排序、插入排序和快速排序等,以及栈、队列和链表等数据结构。老师通过生动的例子和实际的应用场景,让我们更好地理解和掌握这些概念。这门课程对......
  • 今日妙妙事
    今天Ryder00过生日。   我似乎刚刚还刚刚看完实教司令塔篇,突然发现自己置身在拥挤的小教室里面,周围是兴奋的同学,手中突然出现了碳酸饮料和膨化食品,突然灯灭了又亮又灭又亮,突然左手托着纸盘装的蛋糕,突然又下楼又上楼,突然随着人群走出小教室。  好像在做梦,但是我手中确确......