这是一个天真的问题,但我是NoSQL范例的新手并且对此并不了解。所以如果有人可以帮我清楚地理解HBase和Hadoop之间的区别,或者给出一些可能有助于我理解差异的指示。
直到现在,我做了一些研究和acc。根据我的理解,Hadoop提供框架来处理HDFS中的原始数据块(文件),而HBase是Hadoop之上的数据库引擎,它基本上适用于结构化数据而不是原始数据块。与SQL一样,Hbase在HDFS上提供逻辑层。这是对的吗?
请随时纠正我。
感谢。
答案 0 :(得分:240)
Hadoop基本上是3件事,FS(Hadoop分布式文件系统),计算框架(MapReduce)和管理桥(Yet Another Resource Negotiator)。 HDFS允许您在分布式(提供更快的读/写访问)和冗余(提供更好的可用性)方式中存储大量数据。 MapReduce允许您以分布式和并行方式处理这些巨大的数据。但MapReduce并不仅限于HDFS。作为FS,HDFS缺乏随机读/写功能。它适用于顺序数据访问。这就是HBase出现的地方。它是一个NoSQL数据库,可以在您的Hadoop集群上运行,并为您提供对数据的随机实时读/写访问。
您可以在Hadoop和HBase中存储结构化和非结构化数据。它们都为您提供了多种访问数据的机制,例如shell和其他API。 并且,HBase以列式方式将数据存储为键/值对,而HDFS将数据存储为平面文件。这两个系统的一些显着特征是:
<强> Hadoop的强>
<强> HBase的强>
Hadoop最适合离线批量处理,当您有实时需求时使用HBase。
在MySQL和Ext4之间进行类似的比较。
答案 1 :(得分:21)
Apache Hadoop 项目包括四个关键模块
HBase 是一个可扩展的分布式数据库,支持大型表的结构化数据存储。就像Bigtable
利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供类似Bigtable的功能。
何时使用HBase:
但HBase有一些限制
<强>要点:强>
当您按键加载数据,按键(或范围)搜索数据,按键提供数据,按键查询数据或按行存储不符合模式的数据时,请考虑HBase。
从cloudera博客查看HBase的“不做”和“不要”。
答案 2 :(得分:4)
Hadoop使用分布式文件系统,即HDFS存储bigdata。但是HDFS存在一定的局限性并且为了克服这些限制,HBase,Cassandra和Mongodb等NoSQL数据库应运而生。
Hadoop只能执行批处理,并且只能以顺序方式访问数据。这意味着即使是最简单的工作,也必须搜索整个数据集。处理时的巨大数据集会产生另一个巨大的数据集,这些数据集也应该按顺序处理。此时,需要一个新的解决方案来在一个单位时间内访问任何数据点(随机访问)。
与所有其他FileSystems一样,HDFS为我们提供存储,但是以容错的方式提供高吞吐量和较低的数据丢失风险(因为复制)。但是,作为文件系统,HDFS缺乏随机读写访问。这是HBase进入画面的地方。它是一个分布式,可扩展的大数据存储,以Google的BigTable为蓝本。 Cassandra有点类似于hbase。
答案 3 :(得分:3)
注意:
检查具有HBase和Hadoop HDFS的集群中的 DataNode(并置区域服务器)和NameNode等HDFS恶魔(以绿色突出显示)
HDFS 是一个分布式文件系统,非常适合存储大文件。不能在文件中提供快速的个人记录查找。
另一方面,HBase 建立在HDFS之上,并为大型表提供快速的记录查找(和更新)。有时这可能是概念上的混乱点。 HBase在内部将数据放入HDFS上存在的索引“ StoreFiles”中,以进行高速查找。
看起来如何?
好吧,在基础架构级别,集群中的每台从属服务器都有以下恶魔
查找速度如何?
HBase使用以下数据模型在作为基础存储的HDFS(有时还包括其他分布式文件系统)上实现了快速查找
表
行
列
列族
列限定符
单元格
时间戳
客户端读取请求流程:
上图中的元表是什么?
获得所有信息之后,HBase的读取流程就是对这些实体的查找接触
- 首先,扫描程序在 Block cache (读取缓存)中查找Row单元。最近读取的键值存储在此处,当需要内存时,会将最近使用的最少使用的值逐出。
- 接下来,扫描程序将在 MemStore 中查找,该高速缓存在内存中包含最近的写入操作。
- 如果扫描程序未在MemStore和块缓存中找到所有行单元格,则HBase将使用块缓存索引和Bloom过滤器将 HFiles 加载到内存中,该文件可能包含目标行单元格。
来源和更多信息:
答案 4 :(得分:1)
参考: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,但它是一个“在线商店” - 这意味着你可以查询特定的行\行等,并获得即时价值。
答案 5 :(得分:0)
HDFS是基于Java的分布式文件系统,可让您跨Hadoop群集中的多个节点存储大数据。 HBase是NoSQL数据库(类似于NTFS和MySQL)。
As HDFS和HBase都在分布式环境中存储各种数据,例如结构化,半结构化和非结构化的数据。
HDFS与HBase之间的区别
HDFS将大型数据集存储在分布式环境中并利用批处理 处理该数据。
尽管HBase以面向列的方式存储数据,其中每一列都存储在一起,以便利用实时处理更快地读取数据。