HBase:Hadoop上的分布式列式数据库

需积分: 10 1 下载量 194 浏览量 更新于2024-07-09 收藏 98KB DOCX 举报
“HBase技术参考手册.docx” HBase是一个高度可扩展的、基于列的分布式数据库,设计用于处理大规模数据的实时写入和实时检索。这个开源数据库源于Google的Bigtable论文,运行在Hadoop文件系统(HDFS)之上,提供随机访问和高速数据处理能力,弥补了Hadoop在实时查询和随机存取上的不足。 Hadoop虽然擅长存储和批量处理大量数据,但其不适用于需要快速随机访问和复杂查询的场景。HBase则填补了这一空白,它允许应用程序以近乎实时的方式访问数据,特别适合那些需要高并发读写操作的应用,如日志记录、实时监控和互联网服务等。 HBase的数据模型基于行和列族,这与传统的关系型数据库(RDBMS)有很大不同。在HBase中,表由行排序,每一行包含多个列族,每个列族可以有任意数量的列。这些列的值按照时间戳排序,使得数据的版本控制和历史追踪变得简单。此外,表中的每个单元格都有一个特定的时间戳,支持多版本存储,这对于审计和回溯操作非常有用。 面向列的特性使得HBase在数据存储上具有显著优势。相比于面向行的数据库,面向列的数据库更利于数据的分组和筛选,特别是在处理大规模稀疏数据时。列族可以独立扩展,这使得HBase能够高效地处理大规模、多维度的数据。 HBase的另一大亮点是它的线性可扩展性和高可用性。通过增加更多的节点,HBase可以轻松地扩展到PB级别的数据存储。同时,由于它依赖于HDFS的容错机制,HBase自身也具备了自动故障转移和支持,确保服务的连续性和数据的完整性。 此外,HBase与Hadoop生态紧密集成,可以作为MapReduce任务的输入和输出,实现数据处理和分析。HBase提供了丰富的Java API,使得开发人员可以便捷地进行数据的读写操作,同时也支持多种语言的客户端库,便于不同平台和语言环境的开发。 总结起来,HBase是应对大数据实时查询需求的理想选择,尤其在需要高效随机存取、大规模扩展性和高可用性的场景下。然而,它并不适合大规模数据分析或复杂的SQL查询,这通常需要结合其他工具,如Hive或Spark进行离线分析。理解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 上传