HBase 的优点、缺点及性能瓶颈
HBase 架构始终存在“单点故障”的特性,并且没有相关的异常处理机制。
在这里,我们将学习 HBase 的优缺点以及性能瓶颈。
HBase 中的性能瓶颈
- 在任何生产环境中,HBase 都会运行一个拥有 5000 多个节点的集群,只有 Hmaster 作为所有从属 Region 服务器的主节点。如果 Hmaster 宕机,需要很长时间才能恢复。即使客户端能够连接 Region 服务器。拥有第二个主节点是可能的,但只有一个是活动的。如果主 Hmaster 宕机,激活第二个 Hmaster 将需要很长时间。因此,Hmaster 是一个性能瓶颈。
- 在 HBase 中,我们无法实现任何跨数据操作和连接操作,当然,我们可以使用 MapReduce 实现连接操作,但这将花费大量时间进行设计和开发。表连接操作在 HBase 中难以执行。在某些用例中,创建与 HBase 中存在的表相关的连接操作是不可能的。
- 当我们要将数据从 RDBMS 外部源迁移到 HBase 服务器时,HBase 需要重新设计。然而,这个过程需要很长时间。
- HBase 的查询非常困难。我们可能需要将 HBase 与一些 SQL 层集成,例如 Apache Phoenix,我们可以在那里编写查询来触发 HBase 中的数据。在 HBase 之上使用 Apache Phoenix 确实很好。
- HBase 的另一个缺点是,我们不能在表中拥有多个索引,只有行键列充当主键。因此,当我们要搜索多个字段或非行键的字段时,性能会变慢。我们可以通过编写 MapReduce 代码、与 Apache SOLR 集成以及与 Apache Phoenix 集成来克服这个问题。
- 不同用户从 HBase 访问数据的安全性改进缓慢。
- HBase 不完全支持部分键
- HBase 只允许每个表有一个默认排序
- 在 HBase 中存储大尺寸二进制文件非常困难
- HBase 的存储会限制实时查询和排序
- 键查找和范围查找,就搜索键值的表内容而言,它会限制实时执行的查询
- HBase 中不存在默认索引。程序员必须定义几行代码或脚本来执行 HBase 中的索引功能。
- 在硬件要求和内存块分配方面成本很高。
- 分布式集群环境需要安装更多服务器(例如,每台服务器用于 NameNode、DataNodes、ZooKeeper 和 Region Servers)
- 从性能上看,它需要高内存机器
- 在成本和维护方面,它也更高
HBase 的优点
在这里,我们将学习 HBase 的优点/好处。
- 可以在 HDFS 文件存储之上存储大量数据集,并对 HBase 表中存在的数十亿行进行聚合和分析。
- 在 HBase 中,数据库可以共享。
- 与传统的关系模型相比,数据读取和处理等操作所需时间更少。
- 随机读写操作。
- HBase 被广泛用于在线分析操作。
- 例如:在银行应用程序中,例如 ATM 机的实时数据更新,可以使用 HBase。
HBase 的缺点
以下是 HBase 的重要缺点/限制。
- 我们不能完全期望 HBase 取代传统模型。HBase 无法支持传统模型的某些功能。
- HBase 不能执行 SQL 等函数。它不支持 SQL 结构,因此不包含任何查询优化器。
- HBase 在大规模顺序输入或输出访问时是 CPU 和内存密集型的,而 Map Reduce 作业主要受输入或输出限制,内存固定。HBase 与 Map-reduce 作业集成将导致不可预测的延迟。
- HBase 与 pig 和 Hive 作业集成会在集群上导致一些内存问题。
- 在共享集群环境中,设置需要在节点上分配更少的任务槽以满足 HBase 的 CPU 需求。