Hive学习

一.Hive概述

Apache Hive是一款分布式SQL计算的工具,主要功能是将SQL语句翻译成MapReduce程序运行

  • 传统MapReduce开发:写MR代码->得到结果
  • 使用Hive开发:写SQL->得到结果
  • 底层都是MR在运行,但是使用层面上更加简单

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

  • 人员学习成本太高 需要掌握Java,Python等编程语言
  • MapReduce实现复杂查询逻辑开发难度太大

使用Hive处理数据的好处

  • 操作接口采用类SQL语法,提供快速开发的能力(简单,容易上手)
  • 底层执行MapReduce,可以完成分布式海量数据的SQL处理

二.Hive基础架构

Hive架构图

1. 用户接口
CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive)、WEBUI(浏览器访问 hive)

其中, CLI 即 Shell 终端命令行,它是最常用的方式。

JDBC / ODBC 是 Hive 的 Java 实现,与使用传统数据库 JDBC 的方式类似, WebUI 指的是通过测览器访问 Hive 。

2. 跨语言服务( Thrift Server )
Thrift 是 Facebook 开发的一个软件框架,可以用来进行可扩展且跨语言的服务。

Hive 集成了该服务,能让不同的编程语言调用 Hive 的接口。

3. 底层的驱动引擎(Driver)
主要包含:

  • 解析器( SQL Parser ):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第 三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL 语义是否有误。
  • 编译器( Compiler ):将 AST 编译生成逻辑执行计划。
  • 优化器( Optimizer ):对逻辑执行计划进行优化。
  • 执行器( Executor ):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来 说,就是 MR/Spark。

它们用于完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。

Hive 的底层计算引擎可选为:MapReduce,Spark,Tez

4. 元数据存储系统( Metastore )

 Metastore:即元数据存储服务,作用是:可无端链接metastore服务,metastore再去链接MySQL等数据库来存取元数据。
Hive 中的元数据通常包含表名、列、分区及其相关属性,表数据所在目录的位置信息, Metastore 默认存在自带的 Derby 数据库中。

Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver, 结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执行,最后,将 执行返回的结果输出到用户交互接口。

三.Hive部署

Hive元数据存储的三种模式

  •  内嵌模式,使用内嵌的Derby数据库存储元数据,是Hive最简单的部署方式。嵌入模式下的Hive不支持多会话连接,不适合生产环境,只适合测试环境。
  • 本地模式,使用本地独立数据库存储元数据,这里的独立数据库通常使用MySQL数据库。本地模式部署的Hive支持元数据共享,并且支持多会话连接。
  • 远程模式(推荐),远程模式与本地模式一样,同样是使用独立数据库存储元数据。不同的是,远程模式使用的是远端的独立数据库,而本地模式使用的是本地独立数据库。远程模式主要应用于Hive客户端较多的情况。

四.Hive初体验

五.Hive客户端

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值