这是一个幼稚的问题,但是我是NoSQL范式的新手,对此了解不多。因此,如果有人可以帮助我清楚地了解HBase和Hadoop之间的区别,或者提供一些可以帮助我了解区别的指针。
到目前为止,我进行了一些研究和认证。据我了解,Hadoop提供了与HDFS中的原始数据块(文件)一起使用的框架,而HBase是Hadoop之上的数据库引擎,它基本上与结构化数据而非原始数据块一起工作。就像SQL一样,Hbase在HDFS上提供逻辑层。这是正确的吗?
请随时纠正我。
谢谢。
这是一个幼稚的问题,但是我是NoSQL范式的新手,对此了解不多。因此,如果有人可以帮助我清楚地了解HBase和Hadoop之间的区别,或者提供一些可以帮助我了解区别的指针。
到目前为止,我进行了一些研究和认证。据我了解,Hadoop提供了与HDFS中的原始数据块(文件)一起使用的框架,而HBase是Hadoop之上的数据库引擎,它基本上与结构化数据而非原始数据块一起工作。就像SQL一样,Hbase在HDFS上提供逻辑层。这是正确的吗?
请随时纠正我。
谢谢。
Answers:
Hadoop基本上是3件事,一个是FS(Hadoop分布式文件系统),一个计算框架(MapReduce)和一个管理网桥(另一个资源协商者)。HDFS允许您以分布式(提供更快的读/写访问)和冗余(提供更好的可用性)的方式存储大量数据。而且MapReduce允许您以分布式和并行的方式处理这些庞大的数据。但是MapReduce不仅限于HDFS。作为FS,HDFS缺乏随机读取/写入功能。这对于顺序数据访问很有用。这就是HBase发挥作用的地方。这是一个NoSQL数据库,它在Hadoop集群上运行,并为您提供对数据的随机实时读写访问。
您可以在Hadoop和HBase中存储结构化和非结构化数据。两者都为您提供了多种访问数据的机制,例如Shell和其他API。而且,HBase以列方式将数据存储为键/值对,而HDFS将数据存储为平面文件。这两个系统的一些显着特征是:
Hadoop的
HBase的
Hadoop最适合用于离线批处理,而HBase在您有实时需求时使用。
类似的比较将在MySQL和Ext4之间进行。
Apache Hadoop项目包括四个关键模块
HBase是可扩展的分布式数据库,支持大型表的结构化数据存储。正如Bigtable
利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。
何时使用HBase:
但是HBase有一些限制
摘要:
当您按键加载数据,按键(或范围)搜索数据,按键提供数据,按键查询数据或按行存储与模式不完全匹配的数据时,请考虑使用HBase。
Hadoop使用分布式文件系统即HDFS来存储大数据。但是,HDFS和HDFS存在一定的局限性为了克服这些局限性,诸如HBase,Cassandra和Mongodb的NoSQL数据库应运而生。
Hadoop只能执行批处理,并且只能按顺序访问数据。这意味着即使是最简单的工作也必须搜索整个数据集。处理后的庞大数据集会产生另一个庞大的数据集,该数据集也应按顺序进行处理。此时,需要一种新的解决方案来在单个时间单位内访问任何数据点(随机访问)。
像所有其他文件系统一样,HDFS为我们提供存储,但是以容错的方式提供高吞吐量和较低的数据丢失风险(由于复制)。但是,作为文件系统,HDFS缺乏随机的读写访问权限。这就是HBase发挥作用的地方。它是一个分布式的,可扩展的大数据存储,以Google的BigTable为模型。Cassandra有点类似于hbase。
注意:
检查具有HBase和Hadoop HDFS的群集中的HDFS恶魔(以绿色突出显示),如DataNode(并置区域服务器)和NameNode
HDFS是一个分布式文件系统,非常适合存储大文件。不能在文件中提供快速的个人记录查找。
HBase的另一方面,建立在HDFS之上,并为大型表提供快速记录查找(和更新)。有时这可能是概念上的混乱点。HBase在内部将数据放入HDFS上存在的索引“ StoreFiles”中,以进行高速查找。
看起来如何?
好吧,在基础架构级别,集群中的每台从属服务器都有以下恶魔
查找的速度如何?
HBase使用以下数据模型在作为基础存储的HDFS(有时还包括其他分布式文件系统)上实现快速查找
表
行
柱
列族
列限定词
细胞
时间戳记
客户端读取请求流:
上图中的元表是什么?
在获得所有信息之后,HBase的读取流程是用于查找触碰这些实体的
- 首先,扫描程序在“ 块”缓存(即读取缓存)中查找“行”单元。最近读取的键值存储在此处,并且在需要内存时驱逐“最近最少使用”。
- 接下来,扫描仪会在MemStore中查找包含内存的写入缓存,其中包含最新的写入。
- 如果扫描程序未在MemStore和块缓存中找到所有行单元,则HBase将使用块缓存索引和Bloom筛选器将HFiles加载到可能包含目标行单元的内存中。
来源和更多信息:
参考:http : //www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop
Hadoop是几个子系统的统称:1)HDFS。一种分布式文件系统,可在一组计算机之间分布数据,并负责冗余等2)Map Reduce。HDFS之上的作业管理系统-用于管理处理存储在HDFS上的数据的map-reduce(和其他类型)作业。
基本上,这意味着它是一个离线系统-您将数据存储在HDFS上,并且可以通过运行作业进行处理。
另一方面,HBase位于基于列的数据库中。它使用HDFS作为存储-负责备份\ redundency \ etc,但是它是“在线存储”-意味着您可以查询特定的行\行等,并获得立即值。
HDFS是基于Java的分布式文件系统,可让您跨Hadoop群集中的多个节点存储大数据。而HBase是NoSQL数据库(类似于NTFS和MySQL)。
由于HDFS和HBase都在分布式环境中存储各种数据,例如结构化,半结构化和非结构化的数据。
HDFS和HBase之间的区别
HDFS将大型数据集存储在分布式环境中,并利用对该数据的批处理。
HBase以面向列的方式存储数据,其中每一列都存储在一起,因此,利用实时处理可以更快地读取数据。