Apache HBase 最新发布2.0.4 ,分布式数据库

退步的程序员 2019-01-07 10:26:07 ⋅ 901 阅读

简介

Apache HBase 2.0.4 已发布,HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。


HBase 2.0.4 主要修复了 2.0.3 和 2.1.1 版本中 HBASE-21551 Bug。此外还包括 31 项 Bug 修复。

Apache HBase 2.0.4更新日志

  • 增量为零时删除TODO

  • list_quotas应该为LIMIT打印人类可读的值

  • 使用maven enforcer禁止从非法包中导入

  • 稍微优化StoreScanner中的trySkipToNextColumn

  • 重新启动整个群集时,空元日志不会被拆分

  • (2.0)添加HBase Canary忽略可配置数量的ZooKeeper down节点的能力

  • 更多更新... (https://apache.org/dist/hbase/2.0.4/CHANGES.md)


HBase使用场景

虽然HBase是一种绝佳的工具,但我们一定要记住,它并非银弹。HBase并不擅长传统的事务处理程序或关联分析,它也不能完全替代MapReduce过程中使用到的HDFS。从文末的成功案例中你可以大致了解HBase适用于怎样的应用场景。如果你还有疑问,可以到社区中提问,我说过这是一个非常棒的社区。

除去上述限制之外,你为何要选择HBase呢?如果你的应用程序中,数据表每一行的结构是有差别的,那就可以考虑使用HBase,比如在标准化建模的过程中使用它;如果你需要经常追加字段,且大部分字段是NULL值的,那可以考虑HBase;如果你的数据(包括元数据、消息、二进制数据等)都有着同一个主键,那就可以使用HBase;如果你需要通过键来访问和修改数据,使用HBase吧。

后台服务

如果你已决定尝试一下HBase,那以下是一些部署过程中的提示。HBase会用到一些后台服务,这些服务非常关键。如果你之前没有了解过ZooKeeper,那现在是个好时候。HBase使用ZooKeeper作为它的分布式协调服务,用于选举Master等。随着HBase的发展,ZooKeeper发挥的作用越来越重要。另外,你需要搭建合适的网络基础设施,如NTP和DNS。HBase要求集群内的所有服务器时间一致,并且能正确地访问其它服务器。正确配置NTP和DNS可以杜绝一些奇怪的问题,如服务器A认为当前是明天,B认为当前是昨天;再如Master要求服务器C开启新的Region,而C不知道自己的机器名,从而无法响应。NTP和DNS服务器可以让你减少很多麻烦。

我前面提到过,在考虑是否使用HBase时,需要针对你自己的应用场景来进行判别。而在真正使用HBase时,监控则成了第一要务。和大多数分布式服务一样,HBase服务器宕机会有多米诺骨牌效应。如果一台服务器因内存不足开始swap数据,它会失去和Master的联系,这时Master会命令其他服务器接过这部分请求,可能会导致第二台服务器也发生宕机。所以,你需要密切监控服务器的CPU、I/O以及网络延迟,确保每台HBase服务器都在良好地工作。监控对于维护HBase集群的健康至关重要。

HBase架构最佳实践

当你找到了适用场景,并搭建起一个健康的HBase集群后,我们来看一些使用过程中的最佳实践。键的前缀要有良好的分布性。如果你使用时间戳或其他类似的递增量作为前缀,那就会让单个Region承载所有请求,而不是分布到各个Region上。此外,你需要根据Memstore和内存的大小来控制Region的数量。RegionServer的JVM堆内存应该控制在12G以内,从而避免过长的GC停顿。举个例子,在一台内存为36G的服务器上部署RegionServer,同时还运行着DataNode,那大约可以提供100个48M大小的Region。这样的配置对HDFS、HBase、以及Linux本身的文件缓存都是有利的。

其他一些设置包括禁用自动合并机制(默认的合并操作会在HBase启动后每隔24小时进行),改为手动的方式在低峰期间执行。你还应该配置数据文件压缩(如LZO),并将正确的配置文件加入HBase的CLASSPATH中。

非适用场景

上文讲述了HBase的适用场景和最佳实践,以下则是一些需要规避的问题。比如,不要期许HBase可以完全替代关系型数据库——虽然它在许多方面都表现优秀。它不支持SQL,也没有优化器,更不能支持跨越多条记录的事务或关联查询。如果你用不到这些特性,那HBase将是你的不二选择。

在复用HBase的服务器时有一些注意事项。如果你需要保证HBase的服务器质量,同时又想在HBase上运行批处理脚本(如使用Pig从HBase中获取数据进行处理),建议还是另搭一套集群。HBase在处理大量顺序I/O操作时(如MapReduce),其CPU和内存资源将会十分紧张。将这两类应用放置在同一集群上会造成不可预估的服务延迟。此外,共享集群时还需要调低任务槽(task slot)的数量,至少要留一半的CPU核数给HBase。密切关注内存,因为一旦发生swap,HBase很可能会停止心跳,从而被集群判为无效,最终产生一系列宕机。

总结

最后要提的一点是,在加载数据到HBase时,应该使用MapReduce+HFileOutputFormat来实现。如果仅使用客户端API,不仅速度慢,也没有充分利用HBase的分布式特性。

用一句话概述,HBase可以让你用键来存储和搜索数据,且无需定义表结构。



---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    Apache HBase 2.3.2 发布分布式存储系统

    Apache HBase 2.3.2 已经发布HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC

    Apache Beam 2.25.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.25.0 发布了。Beam 是一个用于定义和执行数据处理管道的统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理的编程范式和接口定义,并不涉及具体

    Dgraph 1.2.8 发布,事务性分布式图形数据库

    Dgraph 1.2.8 发布了。Dgraph 是一个可扩展的,分布式的,低延迟的图数据库,目标是提供 Google 生产水平的规模和吞吐量,在超过 TB 的结构数据里,为用户提供足够低延迟的实时

    Apache IoTDB 0.11.2 发布,物联网时序数据库

    Apache IoTDB 0.11.2 现已发布Apache IoTDB 是一个集成数据专为时间序列数据设计的管理引擎。它为用户提供以下服务:数据收集、存储和分析。由于其轻巧的结构,高

    Apache Arrow 3.0.0 发布,内存数据交换格式

    Apache Arrow 3.0.0 发布了,该版本包含 2.0.0 发布以来修复的 678 个问题。Apache Arrow 是 Apache 基金会的顶级项目之一,目的是作为一个跨平台的数据层来

    Apache Tomcat 8.5.59、9.0.39和10.0.0-M9发布

    Apache Tomcat 8.5.59, 9.0.39 和 10.0.0-M9 已发布。 8.5.x 已取代 8.0.x,并增加了从 Tomcat 9.0.x 中吸收的新功能。与 8.5.58

    Apache Beam 2.28.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.28.0发布,Beam 是一个用于定义和执行数据处理管道的统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理的编程范式和接口定义,并不涉及具体

    Swagger接口文档工具:Knife4j 2.0.7 发布,细节优化

    Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具 文档:https://doc.xiaominfo.com 效果(旧版):http

    Apache Camel 3.6.0 发布,集成项目工具

    简介 Apache Camel 作为集成项目的利器,针对应用集成场景的抽象出了一套消息交互模型,通过组件的方式进行第三方系统的接入,目前 Apache Camel 已经提供了 300 多种

    TimescaleDB 2.0.0 发布,基于 PostgreSQL 的时序数据库

    TimescaleDB 2.0.0 现已发布。TimescaleDB 是基于 PostgreSQL 开发的一款时序数据库,以插件化的形式打包提供。此版本增加了对分布式超表(多节点

    Apache Traffic Control 5.1.2 发布,高可扩分布式 CDN 解决方案

    Apache Traffic Control 5.1.2 现已发布Apache Traffic Control 是一个分布式、可扩展的冗余解决方案,实现了现代 CDN 的所有核心功能,可

    CrateDB 4.3.1 发布分布式 SQL 数据库

    CrateDB 4.3.1 预发布。Crate 是一个开源的大规模的可伸缩的数据存储系统,无需任何系统管理需求。提供强大的搜索功能。用于存储各种表格数据、非结构化数据和二进制对象。并可通过 SQL

    Apache Tomcat 10.0.4、9.0.44 和 8.5.64 发布

    Apache Tomcat 三个分支发布了更新,分别是 10.0.4、9.0.44 和 8.5.64。 Tomcat 10.0.x 系列的目标平台是 Jakarta EE 9。官方表示,Tomcat

    Apache ZooKeeper 3.7.0 发布分布式服务框架

    Apache ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper 曾经是 Hadoop 的一个子项目

    TimescaleDB 2.0.2 发布,基于 PostgreSQL 的时序数据库

    TimescaleDB 2.0.2 现已发布,这是已个维护版本,包含了自 2.0.1 版本以来的 bugfixes,官方将其视为高度优先升级。TimescaleDB 是基于

    Apache APISIX 2.4 发布,云原生的微服务 API 网关

    Apache APISIX 2.4 已经发布Apache APISIX 是一个云原生微服务 API 网关,它提供了高性能、安全、开源和可扩展的平台,基于 Nginx 和 etcd,支持动态路由和插

    Spring Boot 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5 发布

    Spring Boot 多个分支发布了新版本,分别是 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5。 Spring Boot 2.4.0-RC1 此版本是 

    Apache SkyWalking 8.2.0 发布:新增浏览器端监控和指标分析语言、使用标签查询

    Apache SkyWalking 8.2.0发布,SkyWalking 是观察性分析平台和应用性能管理系统 (APM),提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,支持

    【开源资讯】Spring Boot 2.4.0.M4 发布

    Spring Boot 2.4.0 的第四个里程碑版本发布了,可以从里程碑仓库获取。此版本包含 145 项更新内容,亮点如下:1、改进故障分析器(Failure Analyzer