描述 Apache HBase

已完成

Apache HBase 是一种基于 Apache Hadoop 构建的开放源代码 NoSQL 数据库。 HBase 针对按列系列组织的无架构数据库中的大量非结构化和半结构化数据提供随机访问和高度一致性。 HDInsight 4.0 HBase 群集与 Apache HBase 2.1.6 和 Apache Phoenix 5 一起提供。

从用户角度来看,HBase 类似于数据库。 数据存储在表的行和列中,行中的数据按列系列分组。 HBase 是无架构数据库,也就是说,在使用其数据前,不必定义列以及列中存储的数据类型。 开放源代码可进行线性伸缩,以处理上千节点上数 PB 的数据。

以下功能让 HBase 具备了独特性

  • 一致性读取和写入

  • 低延迟操作

  • 自动分片

  • 自动区域服务器故障转移

  • Hadoop/HDFS/MapReduce 集成

  • Java 客户端 API

  • 支持非 Java 前端的 Thrift 和 REST

  • 块缓存和布隆筛选器

与 Apache Phoenix 配合使用的 Azure HDInsight HBase 具有以下其他优势

  • SQL 和非 SQL 接口

  • 灵活的容量规划

  • Azure 网络的全球分发和复制

  • 计算和存储隔离

  • 与 HDInsight 企业安全功能紧密集成

  • 可实现超低延迟读取和写入的 HDInsight HBase 加速写入

  • 可使用 Apache Phoenix 完成实时的类 SQL 查询

将 Azure HDInsight 与 HBase 结合使用,可以运行大规模 NoSQL 数据库。 假设你是 Contoso 的数据工程师,在将平台用于任务关键型生产方案之前,你需要运行基准测试来了解 HDInsight HBase 的性能和缩放。

HDInsight 上的 HBase 在运行时会分离计算和存储。 HDInsight HBase 群集配置为在 Azure 存储中直接存储数据,这样就减少了延迟,并提高了选择性能和价格的灵活性。 此属性使客户能够构建用于处理大型数据集的交互式网站。 可构建用于存储数百万个终结点的传感器数据与遥测数据的服务,并通过 Hadoop 作业来分析这些数据。 对于 Azure 中的大数据项目,HBase 和 Hadoop 是不错的起点。 实时应用程序可以利用这些服务来处理大型数据集。 HDInsight HBase 实现使用 HBase 的横向扩展体系结构来提供表的自动分片功能。 还提供高度一致的读取和写入,以及自动故障转移。 性能可通过对读取使用内存中缓存并对写入使用高吞吐量流式处理来提高。 可以在虚拟网络内部创建 HBase 群集。 有关详细信息,请参阅在 Azure 虚拟网络上创建 HDInsight 群集

HBase architecture

作为一名数据工程师,你需要确定要创建的最合适的 HDInsight 群集类型,以便构建解决方案。 你要在 HDInsight 中将 HBase 群集用于线性缩放的 NoSQL 数据库,实现极大的吞吐量,提供低延迟读取和不受限制的存储,同时花费很少的费用。

下面是在 HDInsight 中使用 HBase 的主要场景。

键值存储

HBase 通常用作键值存储,适用于管理消息系统。

传感器数据

HBase 适用于从各种来源收集越来越多的数据的情况,包括社交分析、时间序列、使交互式仪表板与趋势和计数器保持最新数据,以及管理审核日志系统。

实时查询

Apache Phoenix 是 Apache HBase 的 SQL 查询引擎。 它以 JDBC 驱动程序的形式供用户访问,并且支持使用 SQL 来查询和管理 HBase 表。

HBase 即平台

应用程序可以将 HBase 作为数据存储库而在其上运行。 具体示例包括 Phoenix、OpenTSDB、Kiji 和 Titan。 应用程序也可以与 HBase 集成。 示例包括 Apache Hive、Apache PigSolr、Apache Flume、Apache Impala、Apache Spark、Ganglia 和 Apache Drill。

在 HDInsight 中,HBase 可用作独立的应用程序,也可与其他大数据分析应用程序(如 Spark、Hadoop、Hive 或 Kafka)一起部署。

HBase in the context of a Lambda architecture

HBase 数据模型存储数据类型不同、列大小不同以及字段大小不同的半结构化数据。 HBase 数据模型的布局简化了跨群集的数据分区和分布。 HBase 数据模型包含多个逻辑组件:行键、列系列、表名称、时间戳等。

行键用于为 HBase 表中的行提供唯一标识。 在 HDInsight 中,你可以直接使用多个可用 API(例如 HBase REST、HBase RPC、Phoenix Query Server、HBase 大容量加载)将数据写入 HBase,或利用与多个大数据框架(如 Apache Spark、Hive 等)的集成。

可以利用 HBase 加速写入功能实现高写入吞吐量。 若要了解有关 HBase 体系结构和最佳做法的详细信息,请参阅 Hbase 书