Hive-百度百科

        hive基于Hadoop的一个数据仓库工具,将结构化的数据文件映射为一张数据库表,提供简单的sql查询功能,将sql语句转换为MapReduce任务进行运行,可通过类SQL语句HQL快速实现简单的MapReduce统计,十分适合数据仓库的统计分析;

      Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询;

 

特点:

● 支持索引,优化数据查询。

● 不同的存储类型,例如:TextFile,SequenceFile,RCFile 或者自定义格式;

  • 直接使用存储在Hadoop 文件系统中的数据,无专门存储格式,读模式

● 将元数据保存在关系数据库中,减少了在查询中语义检查的时间

● 内置用户函数UDF操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数。

 

内部架构

用户接口:

  • CLI启动会启动hive副本,shell终端命令行
  • client客户端,JDBC/ODBC用户连接至server,启动client模式时需指出hive serve所在节点,且在该节点启动Hive
  • WUI浏览器访问Hive,浏览器

跨语言服务

  • thrift server进行可扩展跨语言服务开发,不同语言调用hive接口

元数据存储

  • 元数据(表名字,列和分区及其属性,表的属性/所在目录等数据描述信息)存RDBMS中,默认存内嵌的Derby数据库中,只容许一个会话连接,适合简单测试
  • Metastore默认存在自带的Derby数据库中,缺点是不适合多用户操作,数据存储目录不固定

            解决:存自己的mysql库中(Hive内部对Mysql支持),Hive和mysql通过metastore交互

            

解释器,编译器,优化器,执行器

  • 解释器 : 将HiveSQL语句转换为抽象语法树
  • 编译器:语法树编译为逻辑执行计划
  • 优化器:对逻辑执行计划进行优化
  • 执行器:执行器的调用底层运行框架执行逻辑执行计划
  • 以上完成HQL查询语句从词法 语法分析、编译、优化及查询计划的生成
  • 生成查询计划存在HDFS中,随后由MapReduce调用执行

hadoop

 

数据组织

  • 存储结构包括库、表、视图、分区和表数据,表 分区等对应HDFS目录,表数据对应HDFS目录下文件
  • 建表时指定列分隔符(默认的是Ctrl + A,\x01 Hive)、行分隔符(换行符\n),便可解析数据

数据模型

  • database:为${hive.metastore.warehouse.dir}目录下一个文件夹
  • 表:概念上类似数据库的表,表在hive有对应的目录 存储 数据,HDFS表现database下的文件夹
  • 外部表:已经在HDFS的数据,可创建partition,和table在元数据的组织上相同,实际数据的存储较大差异

          数据存放位置可指定任意HDFS目录路径

  • 分区:对应数据库中partition列的密集索引,在hive中表中的partition对应表下的一个目录,all的partition数据都存储在目录中,table的子目录
  • 桶:对指定列计算hash,据hash值切分数据;为了并行每个bucket对应一个文件

         同一个表目录或者分区目录下根据某个字段的值进行 hash 散 列之后的多个文件

  • 视图:传统数据库类似,只读,基于表创建

 

数据存储

非常自由组织表,创建时指定列行的分隔符

table的创建和数据的加载(一个语句中完成)

    加载数据过程中实际数据被移动到数据仓库目录中,之后对数据访问直接在仓库中完成

    删除表时,表中的数据和元数据一并删除

外部表

    只有一个过程,加载数据和创建表同时完成,实际数据存在location后面指定的hdfs路径中,并不移动到仓库目录中,删除时仅删除元数据,表中数据不会正在删除

    外部表访问HDFS上初识数据,通过Hive转换数据并存内部表中;

    使用场景:针对一个数据集有多个不同的schema

 

如果数据all处理在hive中,倾向于选择内部表,如果Hive和其他工具要针对相同数据集处理,外部表适合

hive只对存在HDFS上的数据提供新的抽象,不管理其上的数据

 

执行流程

     通过HiveQL通命令行或客户端提交,经Compiler编译器,运用MetaStore元数据类型检测和语法分析,生成逻辑方案,优化处理,产生MapReduce任务。

     Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户;在加载数据过程中不会修改数据,只是将数据移动到HDFS 中Hive 设定的目录下,所有的数据都是在加载的时候确定的。

 

感谢百度https://baike.baidu.com/item/hive/67986?fr=aladdin#3

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值