hive系列之懵懂


大数据时代的技术hive:hive介绍



 首先咱们要知道hive究竟是作什么的。下面这几段文字很好的描述了hive的特性: html


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

  2.Hive是创建在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,能够用来进行数据提取转化加载(ETL),这是一种能够存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它容许熟悉 SQL 的用户查询数据。同时,这个语言也容许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 没法完成的复杂的分析工做。 web


 hive和关系数据库不一样:  sql


  1. hive和关系数据库存储文件的系统不一样,hive使用的是hadoop的HDFS(hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;
  2. hive使用的计算模型是mapreduce,而关系数据库则是本身设计的计算模型;
  3. 关系数据库都是为实时查询的业务进行设计的,而hive则是为海量数据作数据挖掘设计的,实时性不好;实时性的区别致使hive的应用场景和关系数据库有很大的不一样;
  4. Hive很容易扩展本身的存储能力和计算能力,这个是继承hadoop的,而关系数据库在这个方面要比数据库差不少。
  5.   HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成  全部的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任务,如:select * from table)  Hadoop和Hive都是用UTF-8编码的 数据库


hive技术框架:



 由上图可知,hadoop和mapreduce是hive架构的根基。Hive架构包括以下组件: 编程

CLI(command line interface)、 安全

JDBC/ODBC、Thrift Server、WEB GUI、 服务器

metastore和Driver(Complier、Optimizer和Executor), 架构

这些组件我能够分为两大类:服务端组件和客户端组件。 app

   首先讲讲服务端组件:

  Driver组件

该组件包括Complier、Optimizer和Executor,它的做用是将咱们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,而后调用底层的mapreduce计算框架。

  Metastore组件

元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,所以hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性,这个方面的知识,我会在后面的metastore小节里作详细的讲解。

  Thrift服务

thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不一样的编程语言调用hive的接口。


  1. 客户端组件:


  CLI

command line interface,命令行接口。

  Thrift客户端

上面的架构图里没有写上Thrift客户端,可是hive架构的许多客户端接口是创建在thrift客户端之上,包括JDBC和ODBC接口。

  WEBGUI

hive客户端提供了一种经过网页的方式访问hive所提供的服务。这个接口对应hive的hwi组件(hive web interface),使用前要启动hwi服务。

  下面我着重讲讲metastore组件,具体以下:

  Hive的metastore组件是hive元数据集中存放地。Metastore组件包括两个部分:metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如hive默认的嵌入式磁盘数据库derby,还有mysql数据库。Metastore服务是创建在后台数据存储介质之上,而且能够和hive服务进行交互的服务组件,默认状况下,metastore服务和hive服务是安装在一块儿的,运行在同一个进程当中。我也能够把metastore服务从hive服务里剥离出来,metastore独立安装在一个集群里,hive远程调用metastore服务,这样咱们能够把元数据这一层放到防火墙以后,客户端访问hive服务,就能够链接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的metastore服务,可让metastore服务和hive服务运行在不一样的进程里,这样也保证了hive的稳定性,提高了hive服务的效率。


hive流程

上面的图能够详细介绍相关的流程图 。 


Hadoop & HDFS & Hive & HBase关系

相关文章
相关标签/搜索