HBase入门到精通:Hadoop生态中的列式存储解析

需积分: 10 5 下载量 200 浏览量 更新于2024-07-24 收藏 2.86MB DOC 举报
"Hadoop之Hbase从入门到精通的学习教程,涵盖了HBase的基本概念、技术特点、系统架构以及各种访问接口。" HBase是构建在Hadoop生态系统中的一个分布式列式存储系统,它源于Google Bigtable的设计思想,旨在处理海量结构化数据。HBase的核心优势在于高可靠性、高性能和面向列的存储模式,使其成为大数据领域中存储大规模结构化数据的理想选择。通过利用Hadoop HDFS作为底层存储,HBase能够在廉价服务器集群上实现扩展性。 在Hadoop生态系统的层级中,HBase位于结构化存储层,与HDFS和MapReduce紧密配合。HDFS为HBase提供可靠的数据存储,而MapReduce则负责处理HBase中的大规模数据计算任务。Zookeeper在此基础上提供了服务协调和故障转移功能,确保系统的稳定性。 HBase提供了多种访问接口以满足不同场景的需求: 1. Native Java API:这是最基础且高效的访问方式,常用于Hadoop MapReduce Job处理HBase表数据。 2. HBase Shell:这是一个命令行工具,适合进行基本的HBase管理和操作。 3. Thrift Gateway:借助Thrift序列化技术,支持C++、PHP、Python等多语言访问,适合异构系统在线操作HBase。 4. REST Gateway:通过RESTful HTTP API,允许任何支持HTTP的客户端访问HBase,极大地扩展了其语言兼容性。 5. Pig和Hive:这两种工具为HBase提供了高级语言支持,用户可以用Pig Latin或类似SQL的Hive查询语言处理HBase中的数据,简化了复杂的数据统计和分析工作。 Sqoop是另一个重要的工具,它使RDBMS(关系型数据库管理系统)中的数据能够便捷地导入到HBase,方便传统数据库向NoSQL平台的迁移。 掌握HBase不仅需要理解其核心原理,如Region分布、Master-Slave架构、WAL(Write-Ahead Log)日志、MemStore和HFile等,还需要熟悉如何设计表模型以适应列式存储和水平扩展的需求。同时,通过实践MapReduce作业和使用不同接口进行数据操作,可以深化对HBase性能和功能的理解。 从入门到精通HBase,需要深入学习Hadoop生态系统的相关知识,并结合实际项目经验不断磨练,才能真正发挥出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 上传