HBase入门基础:列式存储与特性解析

需积分: 9 1 下载量 66 浏览量 更新于2024-07-17 收藏 1.85MB DOCX 举报
"这是一份关于HBase入门的学习笔记,适合初学者了解HBase的基础知识。文档可能不适用于已经深入理解HBase的读者。" 在IT领域,数据库是数据管理和存储的核心,而HBase作为一种非关系型数据库(NoSQL),在处理高并发读写、海量数据高效读写以及提供高扩展性和可用性方面表现出色,特别适用于大数据场景。关系型数据库如MySQL、Oracle和SQL Server,虽然在事务一致性、复杂的SQL查询等方面有优势,但在面对大规模并发和大数据量时,可能会遇到性能瓶颈。 非关系型数据库,尤其是像HBase这样的列式数据库,因其速度和存储能力的优势而受到青睐。HBase起源于Google的BigTable论文,是一种分布式、多版本、基于列族的键值存储系统,通常与Hadoop生态系统紧密集成。它在处理实时读写、大规模数据存储和分布式操作上有着独特的优势。 HBase的基本概念包括: 1. 表(Table):数据的主要组织形式,由行(Row)和列族(Column Family)组成。 2. 行(Row):通过行键(Row Key)唯一标识,数据按行键字典序排序。 3. 列族(Column Family):数据的逻辑分组,每个列族可以包含多个列(Column)。 4. 列(Column):由列族和列限定符(Qualifier)组成,列限定符用于区分同一列族内的不同列。 5. 单元格(Cell):由行键、列族、列限定符和时间戳定义,存储实际的数据。 HBase的架构主要包括: 1. RegionServer:数据存储和处理的实体,负责管理一个或多个Region。 2. HMaster:主要负责Region的分配、RegionServer的监控和故障恢复,以及表的创建、删除等元数据操作。 HBase的物理模型中,Table被划分为多个Region,每个Region负责一部分数据的读写。Region的大小随着数据增长而动态调整,当Region达到预设阈值时,会被拆分成两个新的Region。RegionServer负责Region的生命周期管理,包括拆分、合并和迁移。 Region的寻址过程在早期版本中涉及ZooKeeper(ZK): 1. 客户端首先向ZK查询-ROOT-表的RegionServer地址。 2. 然后,客户端通过-ROOT-表找到.META.表的位置,并缓存相关信息以加快后续访问。 3. 最后,客户端依据.META.表获取所需数据所在的RegionServer。 HBase还提供了丰富的命令行工具和API,允许用户进行表的操作、数据的增删改查等。此外,HBase支持数据的版本控制和时间戳,确保数据的历史记录可追溯。其灵活的架构和强大的数据处理能力,使其成为大数据环境下的理想选择,特别是在互联网、物联网、日志分析等领域。

org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318) org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)

2023-07-14 上传

23/07/23 16:19:48 ERROR AsyncProcess: Failed to get region location org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:241) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:214) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:364) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:338) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:137) at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:65) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:1041) at org.apache.hadoop.hbase.protobuf.RequestConverter.buildScanRequest(RequestConverter.java:492) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner$SmallReversedScannerCallable.call(ClientSmallReversedScanner.java:291) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner$SmallReversedScannerCallable.call(ClientSmallReversedScanner.java:276) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:212) ... 7 more

2023-07-24 上传