这是一个幼稚的问题,但我是 NoSQL 范式的新手,对此知之甚少。因此,如果有人可以帮助我清楚地了解 HBase 和 Hadoop 之间的区别,或者提供一些可能有助于我了解区别的指示。
到目前为止,我做了一些研究和记录。据我了解,Hadoop 提供了处理 HDFS 中的原始数据块(文件)的框架,而 HBase 是 Hadoop 之上的数据库引擎,它基本上处理结构化数据而不是原始数据块。就像 SQL 一样,Hbase 在 HDFS 上提供了一个逻辑层。这是对的吗?
这是一个幼稚的问题,但我是 NoSQL 范式的新手,对此知之甚少。因此,如果有人可以帮助我清楚地了解 HBase 和 Hadoop 之间的区别,或者提供一些可能有助于我了解区别的指示。
到目前为止,我做了一些研究和记录。据我了解,Hadoop 提供了处理 HDFS 中的原始数据块(文件)的框架,而 HBase 是 Hadoop 之上的数据库引擎,它基本上处理结构化数据而不是原始数据块。就像 SQL 一样,Hbase 在 HDFS 上提供了一个逻辑层。这是对的吗?
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 之间也有类似的比较。
Apache Hadoop项目包括四个关键模块
HBase是一个可扩展的分布式数据库,支持大型表的结构化数据存储。正如Bigtable
利用 Google 文件系统提供的分布式数据存储一样,Apache HBase 在 Hadoop 和 HDFS 之上提供了类似 Bigtable 的功能。
何时使用 HBase:
但是 HBase 有一些限制
概括:
当您按键加载数据、按键(或范围)搜索数据、按键提供数据、按键查询数据或按不符合模式的行存储数据时,请考虑使用 HBase。
看看来自cloudera博客的 HBase 的注意事项。
Hadoop使用分布式文件系统即HDFS来存储大数据。但是HDFS存在一定的局限性,为了克服这些局限性,HBase、Cassandra、Mongodb等NoSQL数据库应运而生。
Hadoop 只能执行批处理,并且只能以顺序方式访问数据。这意味着即使是最简单的工作也必须搜索整个数据集。处理一个巨大的数据集会导致另一个巨大的数据集,也应该按顺序处理。此时,需要一种新的解决方案来访问单个时间单位内的任意数据点(随机访问)。
像所有其他文件系统一样,HDFS 为我们提供了存储,但以容错方式具有高吞吐量和较低的数据丢失风险(由于复制)。但是,作为文件系统,HDFS 缺乏随机读写访问。这就是 HBase 发挥作用的地方。它是一个分布式、可扩展的大数据存储,以 Google 的 BigTable 为蓝本。Cassandra 有点类似于 hbase。
笔记:
检查 HDFS 恶魔(以绿色突出显示),如集群中的DataNode(并置区域服务器)和 NameNode,同时具有 HBase 和 Hadoop HDFS
HDFS是一种分布式文件系统,非常适合存储大文件。它不提供文件中快速的单个记录查找。
另一方面,HBase构建在 HDFS 之上,并为大型表提供快速的记录查找(和更新)。这有时可能是概念上的混淆点。HBase 在内部将您的数据放在 HDFS 上存在的索引“StoreFiles”中以进行高速查找。
这看起来怎么样?
那么,在基础设施层面,集群中的每台salve机器都有以下恶魔
查找速度如何?
HBase 使用以下数据模型在作为底层存储的 HDFS(有时也包括其他分布式文件系统)上实现快速查找
桌子
排
柱子
列族
列限定符
细胞
时间戳
客户端读取请求流程:
上图中的元表是什么?
在所有信息之后,HBase 读取流程是用于查找触及这些实体
- 首先,扫描器在块缓存(读取缓存)中查找行单元。最近读取的键值被缓存在这里,当需要内存时,最近最少使用的被驱逐。
- 接下来,扫描器在MemStore中查找,内存中的写入缓存包含最近的写入。
- 如果扫描器没有找到 MemStore 和 Block Cache 中的所有行单元,则 HBase 将使用 Block Cache 索引和布隆过滤器将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 作为存储——它负责备份\冗余\等,但它是一个“在线存储”——这意味着您可以查询它的特定行\行等并获得即时值。
HDFS 是一个基于 Java 的分布式文件系统,允许您跨 Hadoop 集群中的多个节点存储大量数据。而 HBase 是一个 NoSQL 数据库(类似于 NTFS 和 MySQL)。
因为 HDFS 和 HBase 都在分布式环境中存储各种数据,例如结构化、半结构化和非结构化数据。
HDFS 和 HBase 的区别
HDFS 将大型数据集存储在分布式环境中,并利用该数据的批处理。
虽然 HBase 以面向列的方式存储数据,其中每列存储在一起,因此利用实时处理,读取变得更快。