HBase与Hadoop / HDFS的区别
这是一个天真的问题,但我是NoSQL范式的新手,不太了解。 所以,如果有人能够帮助我清楚地理解HBase和Hadoop之间的区别,或者给出一些可以帮助我理解差异的指针。
直到现在,我做了一些研究和acc。 根据我的理解,Hadoop提供了在HDFS中使用原始数据块(文件)的框架,HBase是Hadoop之上的数据库引擎,基本上可以使用结构化数据而不是原始数据块。 像SQL一样,Hbase提供了一个HDFS上的逻辑层。 这是对的吗?
请随时纠正我。
谢谢。
Hadoop基本上是2件事,一个FS(Hadoop分布式文件系统)和一个计算框架(MapReduce)。 HDFS允许您在分布式(提供更快的读/写访问)和冗余(提供更好的可用性)方式中存储大量数据。 MapReduce允许您以分布式和并行的方式处理这些庞大的数据。 但是MapReduce并不仅限于HDFS。 作为一个FS,HDFS缺乏随机的读/写能力。 顺序数据访问是很好的。 这就是HBase进入图片的地方。 它是一个运行在Hadoop集群之上的NoSQL数据库,为您提供对数据的随机实时读/写访问。
您可以将结构化数据和非结构化数据同时存储在Hadoop和HBase中。 它们都提供了多种访问数据的机制,比如shell和其他API。 HBase将数据作为键/值对以列方式存储,而HDFS将数据存储为平面文件。 这两个系统的一些显着特点是:
Hadoop的
- 针对大文件的stream式访问进行了优化。
- 遵循一次写多读的思想。
- 不支持随机读取/写入。
HBase的
- 以列方式存储键/值对(列作为列族聚合在一起)。
- 提供对大量数据集内less量数据的低延迟访问。
- 提供灵活的数据模型。
Hadoop最适合离线批处理,而在有实时需求时使用HBase。
MySQL和Ext4之间会有类似的比较。
Apache Hadoop项目包括四个关键模块
- Hadoop Common :支持其他Hadoop模块的常用工具。
- Hadoop分布式文件系统(HDFS™) :提供对应用程序数据的高吞吐量访问的分布式文件系统。
- Hadoop YARN :作业调度和集群资源pipe理的框架。
- Hadoop MapReduce :基于YARN的并行处理大型数据集的系统。
HBase是一个可扩展的分布式数据库,支持大型表的结构化数据存储。 就像Bigtable
利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的function。
何时使用HBase:
- 如果你的应用程序有一个variables模式,每一行都略有不同
- 如果您发现您的数据存储在集合中,那么这些数据都被locking在相同的值上
- 如果您需要随机,实时读取/写入您的大数据。
- 如果在存储或检索时需要基于密钥的数据访问。
- 如果您拥有现有Hadoop集群的大量数据
但是HBase有一些限制
- 它不能用于经典的事务应用程序甚至关系分析。
- 在进行大批量MapReduce时,它也不是HDFS的完全替代品。
- 它不会谈SQL,有优化器,支持交叉logging事务或连接。
- 它不能用于复杂的访问模式(如连接)
概要:
当你用键加载数据,按键(或范围)search数据,按键提供数据,按键查询数据或者按照不符合模式的行存储数据时,请考虑HBase。
从cloudera博客看看Do的和不要的HBase。
Hadoop使用分布式文件系统HDFS来存储bigdata。但HDFS有一定的局限性,为了克服这些限制,HBase,Cassandra和Mongodb等NoSQL数据库的出现,
Hadoop只能执行批处理,数据只能按顺序访问。 这意味着必须search整个数据集,即使是最简单的工作。一个巨大的数据集,当处理结果在另一个巨大的数据集,这也应该顺序处理。 在这一点上,需要一种新的解决scheme来访问单个时间单元(随机访问)中的任意一点数据。
像所有其他FileSystems一样,HDFS为我们提供了存储空间,但却具有高吞吐量和低数据丢失风险(由于复制)的容错方式。但作为一个文件系统,HDFS缺乏随机的读写访问。 这是HBase进入图片的地方。 这是一个分布式,可扩展的大数据存储,仿照Google的BigTable。 Cassandra有点类似于hbase。
参考: http : //www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop
Hadoop是几个子系统的通用名称:1)HDFS。 一个分布式的文件系统,分布在一组机器上,用于处理冗余等。2)Map Reduce。 HDFS之上的作业pipe理系统 – 用于pipe理处理存储在HDFS上的数据的map-reduce(和其他types)作业。
基本上,这意味着它是一个离线系统 – 您可以将数据存储在HDFS上,并且可以通过运行作业来处理它。
另一方面HBase在一个基于列的数据库中。 它使用HDFS作为存储 – 它负责备份\ redundency \等,但它是一个“在线商店” – 这意味着你可以查询特定的行\行等,并获得立即价值。