设为首页 加入收藏

TOP

Hive学习笔记(一)——原理和体系架构
2019-05-14 00:46:40 】 浏览:101
Tags:Hive 学习 笔记 原理 体系 架构

目录

一 hive是什么?

二 为什么会出现hive?

三 hive 为什么适合数据仓库应用程序?

四 hive与传统关系型数据库的比较

五 hive的体系架构

hive体系架构的组成部分:

1 用户接口

2 跨语言服务 thrift server

3 Driver (底层)

4 元数据存储系统

六 hive的执行流程


一 hive是什么?

1:hive是构建在hdfs上的一个数据仓库(Data Warehouse)

2:hive是sql解析引擎,将sql语句转化为MR Job,然后在hadoop平台上运行

3:hive中的表是纯逻辑表,就只是表的定义,也就是表的元数据,本质上来说就是存储在hdfs上的目录/数据。数据和表的定义分离。

4:hive 本身不存储数据,他完全依赖于HDFS和MapReduce。

5:hive是读多少写多少的,不支持对数据的改写和删除。

6:hive中没有专门的数据格式,这个有用户指定,一般需要三个属性:

—— 行分割符:“\n”

——列分割符:"\t"

——读取文件数据的方法

二 为什么会出现hive?

关于这一点,在《hive编程指南》中有明确说明:用户如何从现有的一个数据基础架构转移到Hadoop上,而这个基础架构是基于关系型数据库和结构化查询语句的。对于大量的sql用户来说,这个问题又改如何解决呢?

此时就出现了hive,hive提供了一个被称为Hive查询语音的SQL方言,来查询和存储在Hadoop集群中的数据。这就会减低开发人员的学习成本,以一种熟悉的语言来操作和分析存储在hadoop上的数据。

三 hive 为什么适合数据仓库应用程序?

因为大多数数据仓库应用程序是使用基于SQL的关系型数据库实现的,所以hive降低了将这些程序应用移植到hadoop上的障碍。

四 hive与传统关系型数据库的比较

HQL SQL
数据存储 Hadoop,HBASE LocalFS
数据格式 用户自定义 系统决定
数据更新 不支持(覆盖) 支持
索引 有(0.8版本之后)
执行延迟
可扩展性

执行 MapReduce Excutor
数据规模 大(TB)
数据检查 读时模式 写时模式

五 hive的体系架构

hive的体系架构是遵从主从架构的设计模式。

hive体系架构的组成部分:

1 用户接口

用户接口包括三部分:

CLI(command line interface),交互式命令行,最常用的

JDBC/ODBC (Open Database Connectivity) 是hive基于开发人员通过连接zhi至hiveserver服务

Web UI 是通过浏览器访问hive服务

2 跨语言服务 thrift server

Thtift Server 是Facebook提供的一终软件框架,可以用来进行可扩展跨语言服务的框架,hive集成了该服务,能让不用的语言调用该服务。

3 Driver (底层)

Driver组件完成了对HiveQL语句的语法分析,编译,优化以及执行计划的生成,生成的逻辑执行计划存储在HDFS中,并随后由MapReduce调用执行。

hive 的核心驱动引擎主要由四部分组成:

1 解释器 是将HQL语句转换成抽象的语法树 (AST)

2 编译器 将语法树编译为逻辑执行计划

3 优化器 是对逻辑执行计划进行优化

4 执行器 调用底层的运行框架执行逻辑计划

4 元数据存储系统

元数据:是存储在hive中数据的描述信息,如 表名,字段,表的所属用户,存储目录等信息。

Metastore 默认存在自带的 Derby 数据库中。缺点就是不适合多用户操作,并且数据存储目录不固定。数据库跟着Hive走,极度不方便管理。

   解决方案:通常存我们自己创建的 MySQL 库(本地 或 远程)

   Hive 和 MySQL 之间通过 MetaStore 服务交互

六 hive的执行流程

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hive:Access denied for user .. 下一篇hive:Access denied for user ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目