【Hive学习笔记】1

【Hive学习笔记】1,第1张

【Hive学习笔记】1

文章目录
  • 一、Hive是什么?
  • 二、为什么使用Hive
  • 三、Hive 架构、组件
  • 四、Hive数据模型
    • 1、数据模型概念
    • 2、数据库
    • 3、Tables表
    • 4、Partitions分区
    • 5、Buckets分桶
  • 五、Hive是要取代MySQL吗?


一、Hive是什么?

Hive:由Facebook开源用于解决海量结构化日志的数据统计;
Hive:是基于Hadoop的一个数据仓库工具,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表(映射是指文件和表之间的对应关系),基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hladoop文件中的大型数据集.

Hive本质:是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行。Hive利用HDFS存储数据,利用MapReduce查询分析数据。

二、为什么使用Hive

(1)使用Hadoop MapReduce直接处理数据所面临的问题:

  • 学习成本高,需要掌握java语言;
  • MapReduce实现复杂查询逻辑开发难度太大

(2)使用Hive处理数据的好处:

  • *** 作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
  • 避免直接写MapReduce,减少开发人员的学习成本;
  • 支持自定义函数,功能扩展很方便;
  • 基于Hadoop,擅长存储分析海量数据集
三、Hive 架构、组件

Hive的架构



组件:
(1)用户接口:包括CLI、JDBC/ODBC,WebGUI。其中:

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

(2)元数据存储:通常是存储在关系数据库如mysql/derby中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器
完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDPS中,并在随后有执行引擎调用执行。

(4)执行引擎:Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce,Tez,Spark3种执行引擎。

四、Hive数据模型 1、数据模型概念

(1)数据模型:用来描述数据、组织数据和对数据进行 *** 作,是对现实世界数据特征的描述。
(2)Hive的数据模型类似于RDBMS库表结构,此外还有自己特有模型。
(3)Hive中的数据可以在粒度级别上分为三类:

  • Table 表
  • Partition分区
  • Bucket分桶
2、数据库

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

3、Tables表

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

4、Partitions分区

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

5、Buckets分桶

(1)Bucket分桶表是hive的一种优化手段表。分桶是指根据表中字段(例如编号IP")的值,经过hash计算规则将数据文件划分成指定的若干个小文件。
(2)分桶规则:hashfunc 字段)%桶个数,余数相同的分到同一个文件。
(3)分桶的好处是可以优化join查询和方便抽样查询。
(4)Bucket分桶表在HDFS中表现为同一个表目录下数据根据hash散列之后变成多个文件。

五、Hive是要取代MySQL吗?

Hive和MySQL对比:
(1)Hive虽然具有RDBMS数据库的外表,包括数据模型、SQL语法都十分相似,但应用场景却完全不同;
(2)live只适合用来做海量数据的离线分析。Hive的定位是数据仓库,面向分析的OLAP系统;
(3)因此时刻告诉自己,Hive不是大型数据库,也不是要取代MySQL承担业务数据处理。

HiveMySQL定位数据仓库数据库应用场景离线数据分析业务数据事务处理查询语句HQLSQL数据存储HDFSLocal FS执行引擎MR、Tez、 SparkExcutor执行延迟高低处理数据规模大小常见 *** 作导入数据、查询增删改查

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5665250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存