Hive概述

2022-02-24  本文已影响0人  reco171

  Hive是一款基于Hadoop的数据仓库,用于统计海量结构化数据。Hive能够将HQL语句转换成MapReduce程序的一个工具,非java开发人员只需要写HQL语句,就能够对hdfs上的数据做 MapReduce 操作。Hive的元数据依赖于关系型数据库,其真实数据是存在于Hadoop之上的HDFS。
1.Hive服务端组件
Hive服务端组件主要包括Metastore and Diver组件及thrift服务。
(1)Driver组件:包括编译器、优化器、执行器,作用是将我们写的HQL进行解析、编译优化、生成执行计划,然后调用底层的marreduce计算框架。
(2)metastore组件
  metadata即元数据。元数据包含用Hive创建的database、tabel等的元信息。元数据存储在关系型数据库中。如Derby、MySQL等。
Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。
有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

  1. Hive作业处理流程
      从客户端编辑 sql 语句提交到服务端,通过解释器,编译器,优化器生成执行计划,然后提交到 Hadoop 集群运行。
      其中计划执行的最小单元是一个个 operator,每个operator代表一个操作或者一个MR作业。
  2. 分区分桶
    (1)分区
    分区键:每个表可以有一个或多个用于决定数据如何存储的分区键。分区(除存储单元之外)也允许用户有效地识别满足指定条件的行;例如,STRING类型的date_partition和STRING的country_partition。这些分区键的每个惟一的值定义了表的一个分区。例如,所有的“2009-12-23”日期的“US”国家数据,是表page_views的一个分区。
    (2)分桶
    对于hive中每一个表、分区都可以进一步进行分桶。分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。桶可以被用于有效地抽样数据。例如,表page_views可能通过userid分成桶,userid是表page_view的一个列。
    参考:
    Hive知识归纳——详解 hive 各个知识点
    大数据时代的技术hive:hive介绍
    Hive 教程(官方Tutorial)
上一篇 下一篇

猜你喜欢

热点阅读