HBase基础知识与实战解析

需积分: 7 1 下载量 55 浏览量 更新于2024-07-17 收藏 1.62MB PDF 举报
"这份资料主要介绍了HBase的基本知识、读写流程、RowKey设计要点、HBase生态系统以及典型的案例分析。作者是阿里云的HBase业务架构师吴阳平(明惠),并提到了中国HBase技术社区网站作为学习交流的平台。" 在深入探讨HBase之前,首先理解它的基本概念至关重要。HBase是一个分布式的、面向列的开源数据库,提供强一致性、高扩展性和高可用性。它特别适合处理海量数据,能够支持上亿行和百万列的数据规模。 HBase的核心概念包括: 1. RowKey(行键):每条记录的唯一标识,它是表中的主键,设计时需要考虑查询效率和数据分布的均匀性。 2. ColumnFamily(列族):列族是对表的横向分割,类似于关系型数据库的表,但它是动态的,可以在运行时添加列。 3. Column(列):属于某个特定列族,可以随时增加或删除,列名和值的组合构成具体的数据项。 4. VersionNumber(版本号):每个数据项都有一个版本号,默认是系统时间戳,可自定义,用于管理历史版本。 5. Value(值):实际存储的数据。 HBase的表结构进一步分为: - Region:数据的基本存储单元,随着数据增长,Region会自动分裂。 - RegionServer:负责管理Region,存储和处理数据读写请求。 HBase的读写流程涉及了查找RowKey的过程,通常通过Master服务器分配RegionServer,并由RegionServer处理具体的读写操作。在写入时,数据会按照RowKey排序并存储到对应的Region中。读取时,根据RowKey快速定位到对应的数据。 RowKey的设计是优化HBase性能的关键,应尽可能地使数据分布均匀,避免热点现象。通常建议将经常一起查询的字段组合成RowKey,以便于快速检索。 HBase的生态系统包括与Hadoop、HDFS(Hadoop分布式文件系统)、Zookeeper(协调服务)等组件的紧密集成,以及与其他大数据工具如Hive、Pig等的交互。 在实际应用中,HBase被广泛用于日志存储、实时分析、用户行为追踪等领域。例如,它可以用于存储用户的地理位置信息,如上述案例中的帝都大厦楼层分布,通过RowKey设计,可以高效地按用户或地点查询数据。 HBase是一种强大的大数据存储解决方案,尤其适用于需要实时查询和大规模数据处理的场景。通过理解和掌握其基本概念、读写流程以及RowKey设计,可以有效地利用HBase解决大数据挑战。同时,参与中国HBase技术社区(http://hbase.group)的学习和讨论,可以帮助进一步提升对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 上传