Hive基础知识

1、产生背景                                                                                   sql

1.MapReudce编程繁琐,须要编写大量的代码数据库

2.HDFS中存放的都是文件,在HDFS中没有Scheme的概念,没法用SQL进行快速的查询。编程

2、Hive的概念                                                                               服务器

Hive是基于Hadoop的一个数据仓库工具能够将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能能够将SQL语句转换为MapReduce任务进行运行。它使用一种使用相似于SQL的查询语句直接做用在分布式存储文件系统之上的数据仓库工具,用于解决海量结构化的日志数据统计问题。架构

Hive的数据存储在HDFS中,Hive的底层的计算是经过MR、Spark(Hive On Spark)Tez来实现的。HQL语句经过Hive引擎被转化成map做业并提交到集群去运行,所以Hive的查询具备高延时性。分布式

特别指出,Hive和SQL语言同样支持删查增改,但对于分布式文件系统中的大规模数据来讲,Hive主要用于查询。那么Hive和关系型数据库有什么关联呢?没有任何关联,只是HQL和SQL类似而已。工具

Hive和关系型数据库比较:oop

  • Hive侧重于分析,而不是实时在线交易
  • Hive也支持事务,可是用的很是少
  • Hive不能随意地insert和update
  • Hive能够利用MR、Spark、Tez进行分布式处理,而传统关系型数据库不能够
  • Hive能够拓展到上百个服务器,而关系型数据库最多只能扩展到几十个服务器

3、Hive的架构                                                                                post

1.用户接口spa

命令行Cli接口、Web接口(WUI)、远程服务接口(Client)

2.元数据(Meta)存储

Hive的元数据能够存放在Derby、MySQL、Oracle、postgres等关系型数据库库中,在实际开发中一般使用MySQL。Derby是一种单Session数据库,不支持两台机器同时对一个数据仓库进行访问,不适用于生产环境。

Hive的元数据存放在关系型数据库中,如MySQL中,下图就是存储在Hive安装目录的与元数据相关的sql文件:

Meta ==> HA Database : MySQL主备 vip 。Hive、Spark SQL、impala等SQL on Hadoop使用同一套元数据。

为何须要元数据?由于HDFS里的数据是以文件的形式存在的,没法使用SQL进行快速查询,而元数据的做用就是给HDFS中的文件做用上Scheme信息。

3、外部表和内部表的区别                                                              

内部表:存储目录默认是/user/hive/warehouse,其存储目录能够经过修改hive-site.xml文件的hive.metastore.dir参数进行配置。

相关文章
相关标签/搜索