HBase大数据存储解析

版权申诉
0 下载量 82 浏览量 更新于2024-09-01 收藏 482KB PDF 举报
"Hbase学习总结.pdf" HBase是一种开源、分布式、高性能的列式数据库,设计用于处理海量数据,尤其适合大数据实时读写操作。它诞生于互联网时代,为了解决传统关系型数据库在处理大规模数据时面临的挑战,如查询效率低下、扩展性不足等问题。HBase基于Apache Hadoop项目,利用HDFS作为其底层存储,同时采用MapReduce进行大规模数据处理,并依赖Zookeeper进行集群协调。 在HBase的存储模型中,数据以列族(Column Family)的形式组织,每个列族下可以有任意数量的列(Column)。这种面向列的存储方式使得数据可以按需存储和检索,极大地提高了查询效率。HBase的数据结构是松散的,采用key-value形式,支持多版本,允许对历史数据进行追溯。此外,HBase具备高并发处理能力,能应对超大规模数据的实时响应需求。 HBase的体系结构主要包括HBase Master和HRegion服务器。HBase Master主要负责元数据管理,包括对所有HRegion服务器的监控和负载均衡,但它不存储实际数据。元数据包括从数据到HRegion服务器的映射信息。当HRegion服务器出现故障时,HBase Master会通过Zookeeper进行故障转移,确保系统的稳定运行。 HRegion服务器是HBase的主要工作节点,它们直接与HDFS交互,存储和处理用户数据。每个HRegion服务器包含HLOG文件,用于记录所有更新操作,保证数据的持久化;以及一个或多个HRegion,每个HRegion包含一定范围的行,这些行按照键(Row Key)排序。当HRegion的大小超过预设阈值时,HBase会自动分裂HRegion以保持良好的性能和扩展性。 HBase的另一个关键特性是其水平扩展能力。通过添加更多的HRegion服务器,HBase可以轻松处理更大的数据量。同时,由于HBase的数据分布是基于行键的,所以可以实现数据的局部性,进一步提升查询效率。 在实际应用中,HBase常与Hadoop生态系统其他组件如HDFS、MapReduce、YARN和Zookeeper紧密配合,共同构建大数据处理平台。例如,通过MapReduce进行批量数据处理,而HBase则负责实时数据的读写。此外,HBase也广泛应用于日志分析、物联网(IoT)数据存储、实时监控等领域。 HBase是一种强大的大数据解决方案,它的设计理念和功能特性使其成为处理大规模、高并发、实时读写场景的理想选择。在学习和使用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 上传