设为首页 加入收藏

TOP

hive(一)介绍
2019-03-27 01:04:41 】 浏览:239
Tags:hive 介绍

一、Hive介绍

维基百科:https://cwiki.apache.org/confluence/display/Hive

1、简介

Apache Hive是一个建立在Hadoop架构之上的数据仓库。它能够提供数据的精炼,查询和分析。Apache Hive起初由Facebook开发,目前也有其他公司使用和开发Apache Hive,例如Netflix等。亚马逊公司也开发了一个定制版本的Apache Hive,亚马逊网络服务包中的Amazon Elastic MapReduce包含了该定制版本。

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析

2、特点

本质是:将HQL转化成MapReduce程序

1)Hive处理的数据存储在HDFS

2)Hive分析数据底层的实现是MapReduce

3)执行程序运行在YARN上

3、优缺点

优点

1操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)

2)Hive的执行延迟比较高,因此hive常用数据分析对实时性要求不高的场合;

3)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

(4)简单容易上手:提供了类SQL查询语言HQL

一般情况下不需要重启服务Hive可以自由的扩展集群的规模。

(5)延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

6)避免了去写MapReduce减少开发人员的学习成本。

7)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

(8)可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)

(9)提供统一的元数据管理

(10)容错:良好的容错性,节点出现问题SQL仍可完成执行

缺点

(1)hiveHQL表达能力有限

1)迭代式算法无法表达,比如pagerank

2)数据挖掘方面,比如kmeans

(2)hive的效率比较低

1)hive自动生成的mapreduce作业,通常情况下不够智能化

2)hive调优比较困难,粒度较粗

3)hive可控性差

二、架构

架构图

1、用户接口: shell/CLI, jdbc/odbc, webui Command Line Interface

  CLI,Shell 终端命令行(Command Line Interface),采用交互形式使用 Hive 命令行与 Hive 进行交互,最常用(学习,调试,生产)

  JDBC/ODBC,是 Hive 的基于 JDBC 操作提供的客户端,用户(开发员,运维人员)通过 这连接至 Hive server 服务

  Web UI,通过浏览器访问 Hive

2、跨语言服务 : thrift server 提供了一种能力,让用户可以使用多种不同的语言来操纵hive

  Thrift 是 Facebook 开发的一个软件框架,可以用来进行可扩展且跨语言的服务的开发, Hive 集成了该服务,能让不同的编程语言调用 Hive 的接口

3、底层的Driver: 驱动器Driver,编译器Compiler,优化器Optimizer,执行器Executor

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

  Hive 的核心是驱动引擎, 驱动引擎由四部分组成:

    (1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)

    (2) 编译器:编译器是将语法树编译为逻辑执行计划

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

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

4、元数据存储系统 : RDBMS MySQL

  元数据,通俗的讲,就是存储在 Hive 中的数据的描述信息。

  Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录

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

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

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

三、执行流程

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hive专题一 ---- Hive的基本概念-.. 下一篇HIVE metastore Duplicate key na..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目