千家信息网

hive的基础理论

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,1. hive的介绍   什么是hive:Hive是基于hadoop的一个数据仓库工具,实质就是一款基于hdfs的MapReduce计算框架,对存储在HDFS中的数据进行分析和管理。   hive的工
千家信息网最后更新 2024年11月26日hive的基础理论

1. hive的介绍

   什么是hive:Hive是基于hadoop的一个数据仓库工具,实质就是一款基于hdfs的MapReduce计算框架,对存储在HDFS中的数据进行分析和管理。
   hive的工作方式:把存放在hive中的数据都抽象成一张二维表格,提供了一个类似于sql语句的操作方式,这些sql语句最终被hive的底层翻译成为MapReduce程序,最终在hadoop集群上运行,结果也会输出在hdfs之中。(必须是结构化的数据)。在存储的时候hive对数据不做校验,在读取的时候校验。
   hive的的优点:极大的简化了分布式的计算程序的编程。使不会分布式编程的,其他工作人员都可以进行海量数据的统计分析。
   hive的的缺点:不支持行级别的增删改操作、hive的查询延迟很严重、hive中不支持事务,主要用于做OLAP(联机分析处理)。
   hive的的适用场景:hive数据仓库中的数据,主要是存储,在进行ETL(数据清洗、抽取、转换、装载)操作之后的具有结构化的数据。但是数据的存储的格式没有特殊要求,可以使普通文件,也可以是溢写压缩文件等等。
   hive的的与关系型数据库的对比

2. hive的架构


hive的架构中有四个部分组成:
   用户接口
    - CLI(command line interface),shell终端命令行,采用交互式使用hive命令行与hive进行交互,最常用(学习、生成、调试)
    - Jdbc/odbc:是hive的基于jdbc操作提供的客户端,用户(开发、运维)通过这个链接hive server服务
    - Web UI:通过浏览器访问hive(基本不用)
   Thrift Server:Thrift是facebook开发的一个软件框架,可以用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。
   底层四大组件:底层的四大组件完成hql查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行计划的生成。生成的逻辑执行计划存储在hdfs中,并随后由MapReduce调用执行。
    - 解释器:解释器的作用是将hiveSQL语句转换成抽象语法数
    - 编译器:编译器是将语法树编译成为逻辑执行计划
    - 优化器:优化器是对逻辑执行计划进行优化
    - 执行器:执行时调用底层的运行框架执行逻辑执行计划
执行流程就是:hiveQL,通过命令或者客户端提交,经过compiler编译器,运用metastore中的元数据进行类型检测和语法分析,生成一个逻辑方案,然后通过的优化处理,产生一个maptask程序。
   元数据库 :就是存储在hive中的数据的描述信息,通常包括:表的名字、表的列和分区以及其属性、表的属性(内部表和外部表),表的数据所在目录。而hive有两种元数据的存储方案:
    - Metastore默认存储在自带的derby数据库中。缺点是:不适合多用户操作,并且数据存储目录不固定。数据库跟着hive的进入目录走,极度不方便管理。
    - Hive和mysql之间通过Metastore服务交互(本地或者远程)

3. hive的数据存储

  hive的存储特点
    - hive中所有的数据都存储在hdfs中,没有专门的数据存储格式,因为hive是读模式,可支持TezxtFile、SequenceFile(序列化)RCFile(行列结合)或者自定义格式等
    - 只需要在创建表的时候,告诉hive数据中的列分隔符和行分隔符,hive就可以解析数据,默认的列分隔符是:(Ctrl + a 不可见字符: \x01),行分隔符是:(\n 换行符)
  hive的存储结构: hive的存储结构:数据库、表、视图、分区和表数据等。数据库、表、视图、分区等等都对应hdfs上的一个目录,表数据对应hdfs对应目录下的文件。
例:

Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/student.txtHdfs://Hadoop01/user/hive/warehouse:表示hive的数据仓库Hdfs://Hadoop01/user/hive/warehouse/myhive.db: hive的一个数据库Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student hive中的一个表Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/student.txt 数据文件

注意:当我们在创建表的时候,首先会在hdfs上的相应的目录下生成一个文件,同时在hive的元数据库中会为这个新建的表生成一条记录。
   hive具体的存储结构
     - 数据仓库:在 HDFS 中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
     -:hive的表分为内部表、外部表、分区表、分桶表,表在hdfs中的表现形式也是目录,但是不同的表之间的表现形式不同
     - 视图:物化,hive是不会进行物化,相当于给一个sql语句建立了一个快捷方式,保存的是一个视图中的sql语句。只读,基于基表创建。
     - 数据文件 :表中的真实数据

4. hive的特特特别重要的要点

1)hive中内部表和外部表的区别

内部表:又叫管理表,表的创建,和删除都由hive自己决定。
外部表:表结构上同内部表,但是存储的数据时自己定义的,外部表在删除的时候只删除元数据,原始数据时不能删除的。
 内部表和外部表的区别主要体现在两个方面:
   - 删除:删除内部表,删除元数据和数据;删除外部表,删除元数据,保留数据。
   - 使用:如果数据的所有处理都在 Hive 中进行,那么倾向于 选择内部表,但是如果 Hive 和其他工具要针对相同的数据集进行处理,外部表更合适。使用外部表访问存储在hdfs上的数据,然后通过hive转化数据并存储到内部表中。

2)hive中分桶表和分区表的区别

分区表: 原来的一个大表存储的时候分成不同的数据目录进行存储。
  如果说是单分区表,那么在表的目录下就只有一级子目录,如果说是多分区表,那么在表的目录下有多少分区就有多少级子目录。不管是单分区表,还是多分区表,在表的目录下,和非最终分区目录下是不能之间存储数据文件的。
例:

单分区表:Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/p0多分区表:Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/p0Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/p1Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/p2Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/p1/p11

分桶表: 原理和hashpartitioner 一样,将hive中的一张表的数据进行归纳分类的时候,归纳分类规则就是hashpartitioner。(需要指定分桶字段,指定分成多少桶)
 bucket:在hdfs中表现为同一个表目录或者分区目录下根据某个字段的值进行Hash散列之后的多个文件,分桶的表现形式就是一个单独的文件.
例:

Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/age>15Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/age>20Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/age>30

分区表和分桶的区别除了存储的格式不同外,最主要的是作用:
  - 分区表:细化数据管理,缩小mapreduce程序 需要扫描的数据量。
  - 分桶表:提高join查询的效率,在一份数据会被经常用来做连接查询的时候建立分桶,分桶字段就是连接字段;提高采样的效率。

数据 存储 目录 分区表 文件 数据库 时候 生成 就是 结构 语句 逻辑 分析 不同 编译 仓库 分隔符 字段 底层 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发毕业设计多少钱 单招计算机网络技术面试范文 杭州三商网络技术有限公司 杭州久久网络技术有限公司 浙江服务器管理软件虚拟主机 无线网络技术教程电子书资源 ps5玩2k21总是连接不上服务器 网络安全教育新闻稿结尾 信息网络技术书籍 旅游路线软件开发 网络安全需要具备哪几个岗位 成都黑金网络技术有限公司 空调无法连接云端服务器 备份数据库提示拒绝访问 奇秀协议挂机软件开发 网络安全宣先 开源手游服务器引擎 张家港装修网络安全 使用数据库建一个图书表 武城服务器是那个地方的 宿州北斗互联网科技有限公司 北京网络技术服务活动简介 往来无白丁(打一网络安全术语) 两台服务器虚拟成一台 软件开发不想外露 十条关于网络安全 小米手机底层软件开发 网络安全建设三年规划 北京常用软件开发收购价格 戴尔服务器授权北京经销商
0