目录
一.HDFS、HBase、Hive的区别
二.大数据相关软件
三. Hive 的优缺点
1)优点
2)缺点
四. Hive 和数据库比较
1)查询语言
2)数据更新
3)执行延迟
4)数据规模
五.hive架构流程
六.MetaStore元数据管理三种模式
一.HDFS、HBase、Hive的区别
1、HDFS(分布式文件系统):
- 是Hadoop两大核心组成部分之一,提供在廉价服务器集群中进行大规模分布式文件存储的能力。
- 具有很好的容错能力,并且兼容廉价的硬件设备,因此可以较低成本利用现有机器实现大流量和大数据量的读写
2、HBase(分布式数据库):
- 是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据
- 支持超大规模数据存储,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表
3、Hive(数据仓库):
- 基于Hadoop的数据仓库工具,可以用于对存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。
- hive是基于hadoop的数据仓库工具,可以对于存储在hadoop文件中的数据集进行数据整理,特殊查询和分析处理
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。
二.大数据相关软件
HDFS:负责最终数据的存储 YARN:主要提供资源的分配
Hive:用于编写SQL进行数据分析 oozie:用来做自动化定时调度
Sqoop:用于数据的导入导出 HUE:提升操作Hadoop的用户体验,基于HUE操作HDFS、Hive......
三. Hive 的优缺点
1)优点
- 操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)。
- 避免了去写 MapReduce,减少开发人员的学习成本。
- Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。
- Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。
- Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
2)缺点
-
Hive 的 HQL 表达能力有限
- 迭代式算法无法表达
- 数据挖掘方面不擅长,由于 MapReduce 数据处理流程的限制,效率更高的算法却无法实现。
-
Hive 的效率比较低
- Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
- Hive 调优比较困难,粒度较粗
四. Hive 和数据库比较
由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。 本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。
1)查询语言
由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。
2)数据更新
由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不建议对数据的改写,所有的数据都是在加载的时候确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO … VALUES 添加数据,使用 UPDATE … SET 修 改数据。
3)执行延迟
Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架。由于 MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。 当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。
4)数据规模
由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。
五.hive架构流程
六.MetaStore元数据管理三种模式
metastore服务配置有3种模式: 内嵌模式、本地模式、远程模式
内嵌模式:
优点: 配置简单 hive命令直接可以使用
缺点: 不适用于生产环境,derby和Metastore服务都嵌入在主Hive Server进程中,一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源),且元数据不能共享
本地模式:
优点:可以单独使用外部的数据库(mysql),元数据共享
缺点:相对浪费资源,metastore嵌入到了hive进程中,每启动一次hive服务,都内置启动了一个metastore。
远程模式:
优点:可以单独使用外部库(mysql),可以共享元数据,本地可以连接metastore服务也可以连接hiveserver2服务,增加了扩展性(其他依赖hive的软件都可以通过Metastore访问hive)
缺点:需要注意的是如果想要启动hiveserver2服务需要先启动metastore服务