Hadoop学习(8)-- Apache Hive入门

Apache Hive概述

什么是Hive

  • Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。
  • Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行。

为什么使用Hive

  • 使用Hadoop MapReduce直接处理数据所面临的问题,人员学习成本太高 需要掌握java语言,MapReduce实现复杂查询逻辑开发难度太大。
  • 使用Hive处理数据的好处,操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手),避免直接写MapReduce,减少开发人员的学习成本,支持自定义函数,功能扩展很方便,背靠Hadoop,擅长存储分析海量数据集。

Hive和Hadoop关系

  • 从功能来说,数据仓库软件,至少需要具备两种能力:存储数据的能力、分析数据的能力
  • Apache Hive作为一款大数据时代的数据仓库软件,当然也具备上述两种能力。只不过Hive并不是自己实现了上述两种能力,而是借助Hadoop。Hive利用HDFS存储数据,利用MapReduce查询分析数据。
  • 这样突然发现Hive没啥用,不过是套壳Hadoop罢了。其实不然,Hive的最大的魅力在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析

场景设计:如何模拟实现Hive功能

映射信息记录

  • 映射在数学上称之为一种对应关系,比如y=x+1,对于每一个x的值都有与之对应的y的值。
  • 在hive中能够写sql处理的前提是针对表,而不是针对文件,因此需要将文件和表之间的对应关系描述记录清楚。
    映射信息专业的叫法称之为元数据信息(元数据是指用来描述数据的数据 metadata)。
    在这里插入图片描述

SQL语法解析、编译

  • 用户写完sql之后,hive需要针对sql进行语法校验,并且根据记录的元数据信息解读sql背后的含义,制定执行计划。
  • 并且把执行计划转换成MapReduce程序来具体执行,把执行的结果封装返回给用户。

对Hive的理解

  • Hive能将数据文件映射成为一张表,这个映射是指文件和表之间的对应关系
  • Hive软件本身到底主要承担的功能职责是SQL语法解析编译成为MapReduce

实现流程图

在这里插入图片描述

Apache Hive架构、组件

Hive架构图

在这里插入图片描述

Hive组件

用户接口

包括 CLIJDBC/ODBCWebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。
在这里插入图片描述

元数据存储

通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
在这里插入图片描述

Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器

完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。
在这里插入图片描述

执行引擎

Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark3种执行引擎。
在这里插入图片描述

优缺点

优点

  1. 学习成本低
  2. 海量数据分析:底层基于海量计算的MapReduce实现。
  3. 可扩展性:为超大数据集设计了计算扩展能力(MR作为计算引擎,HDFS作为存储系统).。
  4. 延展性:Hive支持用户自定义函数。
  5. 良好的容错性。 统一管理:提供了统一的元数据管理。

缺点

  1. Hive的HQL表达能力有限。
  2. 迭代计算无法表达。
  3. Hive的效率比较低。
  4. Hive自动生成MR作业,通常不够智能化。
  5. Hive调优比较困难,粒度比较困难。

Hive和关系型数据库的对比

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值