9.1 概览

9.1.1 NoSQL

HBase是一种“NoSQL”数据库。 “NOSQL”是一个通用术语,指某数据库不是将SQL语言作为主要访问语言的RDBMS。有很多类型的NoSQL数据库,如BerKeleyDB是本地NoSQL数据库的一个例子,而HBase则更像是一个分布式数据库。从技术上讲,HBase更像是“数据存储”,而非“数据库”。因为HBase缺少很多RDBMS的特性,如带有类型的列、二级索引、触发器以及高等查询语言等。

然而,HBase有许多同时支持线性和模块化存储的特性。HBase集群通过添加RegionServer实现扩展,RegionServer运行在各个几点之上。例如,一个从10个RegionServer扩展到20个RegionServer的集群,它的存储和处理能力都会增加一倍。RDBMS在一定程度上有很好的扩展性,尤其是一个单一的数据库服务器,但为了获得最佳性能,需要专门的硬件和存储设备。HBase的特性如下:

  • 强一致的读/写:HBase不是“最终一致性”数据,这使得他非常适合于实现高速的计数器聚合任务
  • 自动分期:HBase数据表通过region分布在集群上,当数据增大时,region会自动进行分裂和重分布
  • 自动RegionServer容错
  • 与Hadoop/HDFS集成:HBase将HDFS作为底层分布式文件系统
  • MapReduce:HBase支持通过MapReduce实现的并行处理,HBase可用于数据的来源或数据的存储
  • Java客户端应用程序接口
  • Thrift/REST应用程序接口
  • Block Cache和Bloom Filters:HBase的这两项技术提供了大数据查询优化
  • 运行管理:HBase提供了内置的网页及JMX指示

9.1.2 什么时候使用HBase?

不是所有问题都适于用HBase解决的。

第一,确保你有足够的数据。如果你有数亿或数十亿的行,HBase是个不错的候选对象。如果你只要几千行或几百万行数据,那么使用传统的RDBMS或许是更好的选择。因为此时你的数据可能只存在于一两个节点上,而集群中的其他节点则是空闲的。

第二,确保在没有RDBMS提供的额外特性时,你依然可以运作。建立在RDBMS上的应用程序不能简单地通过更改JDBC驱动来移植到HBase上。在将应用程序从RDBMS移植到HBase上时需要彻底地重设计。

第三,确保你有足够的硬件。仅HDFS要有效地运行都至少需要5个数据节点,和一个命名节点。

HBase可以在笔记本计算机上一个单机模式有效地运行,但这仅应作为开发时配置。

9.1.3 HBase和Hadoop/HDFS有什么不同?

HDFS是一个适合存储大文件的分布式文件系统。虽然他的文档上说不是,但它是一个通用目的的文件系统,而且并不提供文件内单条记录地快速搜索。另一方面,HBase是建立在HDFS之上的,它为大型数据表提供 高速的记录搜索功能。这点在概念上有时会有些混淆。为了提供高速搜索性能,HBase将数据存储在带索引的“StoreFiles”中,而这些文件存储在HDFS上。


http://hbase.apache.org/book/architecture.html#arch.overview

你可能感兴趣的:(9.1 概览)