天天看点

HDFS与Hive、HBase之间到底是什么关系

一、概念

HDFS

The Hadoop Distribute File System 分布式文件系统 是一个被设计在运行商用硬件的一个分布式文件系统。它与现有的分布式文件系统有许多相似之处,但是与其他分布式文件系统区别是显著的。HDFS具有高度容错性,设计用于部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适合具有大数据集的应用程序。HDFS放宽了一些POSIX要求,以实现对文件系统的流式访问。

Hive

Hive是一个基于Apache Hadoop的数据仓库基础设施。Hadoop为在商用硬件上的数据存储和处理提供了大规模的扩展和高容错能力。

Hive的设计是为了方便数据汇总、特定查询和分析大量数据。它提供SQL语句能让用户更容易地做特定查询,汇总和数据分析。同时,Hive的SQL给用户很多地方去集成他们自己自定义的功能做自定义分析,例如用户定义函数UDFs(User Defined Functions).

Hive不是为了联机事物处理而设计的,最适合是用于处理传统数据仓库任务。

HBase

HBase是一个Hadoop database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

当你需要随机,实时读写访问大数据时,请使用Apache HBase。这个工程的目的是在商用硬件集群上托管一个非常大的tables(数十亿行数百万列)。

HBase是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。

HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

二、三者之间的关系:

HDFS是Hadoop的一个模块,主要负责数据存储,而Hadoop另一个模式是MapReduce,用于离线数据计算。

Hive依赖于Hadoop,实际存储是依赖于Hadoop的HDFS模块,计算依赖于Hadoop的Mapreduce模块。

HBase则只是依赖于Hadoop的HDFS模块,是基于Hdfs实现对分布式数据文件的管理,但是跟Mapreduce没有关系,HBase的优势在于实时计算,通过API直接访问HBase,实现实时计算,由于使用的是nosql模式(列式结构),从而提高了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。

Hive的数据源既可以来自HDFS,也可以来自于HBase。

继续阅读