HBase高可用集群踩坑总结以及hbase-site.xml配置文件分享

本文分享了在搭建HBase高可用集群过程中遇到的常见问题及解决方案,包括HMaster频繁重启、配置文件同步、WALs清理、Zookeeper状态验证等关键步骤,为初学者提供实用指导。

HBase高可用集群踩坑总结

最近在搭建HBase的高可用集群,看似不复杂的事情,前前后后在HMaster启动后会自动关闭(Master is initializing) 这件事上处理了好久。

究其原因一个是HBase集群中会出现的问题比较多,问题堆在一起的时候,刚开始接触HBase的朋友确不容易发现真正的问题在哪里,还有就是自己还是有点懒了,没有好好地去读官方的说明文档,其实官网上对一些参数的配置讲解的还是比较详细的。

下面总结一下这几天从入门到放弃到搭建成功踩过的一些坑。

注意: 我的这些方法比较适用于集群中数据没那么重要的情况,或者说更多适用于一开始搭建的集群,对于里面有重要数据的集群,要特别小心里面一些对数据的删除和初始化操作。

坑一:
高可用的hadoop中,rootidr的值没有设置成和hdfs-site.xml中的nameservices的值一致
报错:

这个我一开始就配置上了,所以不太清楚log会报什么错,但是具体体现一般就是集群无法正常启动,HMaster启动几秒就关掉了

解决方法如上所说:
将hbase-site.xml 中 hbase:rootdir这里 中间的名字不要端口号,并且改为和hdfs-site.xml中一致,比如我这里原来是Master1:9000 因为用的是 HA Hadoop所以改为 hadoop zookeeper集群的id myhadoop同hdfs-site.xml一致

<property>
    <name>hbase.rootdir</name>
    <value>hdfs://myhadoop/hbase</value>
</property>

坑二:
现象同解决方法:
etc/hadoop中的hdfs-site.xml和core-site.xml没有放到hbase/conf里,放入即可
报错同坑一

坑三:
现象以及报错:

master.HMaster: Failed to become active master
java.io.IOException: error or interrupted while splitting logs in [hdfs://myhadoop/hbase/WALs/slave2,16020,1589941799393-splitting] Task = installed = 1 done = 0 error = 1

解决方法:这个是由于之前异常退出的时候残留的WALs里的文件,导致的错误,可以用命令

hdfs dfs -rm -r /hbase/WALs/*

将里面的文件删除或者如果有重要文件不能随便删除,可以删除后缀带splitting的文件,有重要文件的朋友,慎重删除文件,或者最好备份

坑四:
报错及现象:

zookeeper.MetaTableLocator: Failed verification of hbase:meta,1 at address=slave2,16020,1589941799393, exception=org.apache.hadoop.hbase.NotServingRegionException: Region hbase:meta,1 is not online on slave2,16020,1589945926942

这个是由于异常退出的时候zookeeper集群里的残留文件导致的错误,解决方法就是 到zookeeper的bin下面 启动 zkServer.sh


                
<think>好的,用户想了解HBase的常用操作方法,特别是教程和实验指导。首先,我需要根据提供的引用资料整理出HBase的基础操作,包括环境配置、数据模型、Shell操作和Java API使用。 首先,根据引用[2],HBase的安装部署依赖于HDFS和Zookeeper,所以需要确认用户的环境是否配置正确。引用[4]提到了hbase.rootdir的配置,这是一个关键点,需要指导用户正确设置HDFS路径。 接下来,数据模型方面,引用[1]和[5]提到了HBase的表结构,列族和行键的设计很重要。用户可能需要了解如何创建表、添加列族,以及如何插入数据。比如,引用[5]中的Shell命令示例,可以展示如何通过put命令添加数据。 然后,引用[3]指出通常通过DFS操作HBase,而不是Shell,但了解底层原理有帮助。因此,除了Shell操作,还需要介绍Java API的使用,比如创建连接、操作表和数据。这里可能需要提供代码示例,类似引用[4]中的配置方法。 还要考虑用户可能的实验步骤,比如安装环境、配置HBase,然后进行Shell和Java操作。同时,生成相关问题,帮助用户深入理解,比如性能调优、数据模型设计等。 最后,确保所有LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,并检查引用标识是否正确添加。回答结构要清晰,分步骤说明,保证用户能跟随操作。</think>### HBase常用操作方法及实验指导 #### 一、环境配置与部署 1. **HBase部署依赖** HBase需配合HDFS和Zookeeper使用,部署步骤如下[^2]: - 安装并启动HDFS(默认端口9000) - 配置Zookeeper集群 - 修改HBase配置文件`hbase-site.xml`,设置HDFS存储路径: ```xml <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> ``` - 启动HBase服务:`start-hbase.sh` #### 二、HBase数据模型与核心概念 HBase数据模型基于$(行键, 列族:列, 时间戳)$的三维映射结构[^1],核心操作对象包括: - **表(Table)**:数据存储单元 - **行键(Row Key)**:唯一标识符,按字典序排序 - **列族(Column Family)**:物理存储分组(如`info`、`score`) - **单元格(Cell)**:存储数据的最小单元 #### 三、HBase Shell基础操作 1. **表操作** ```shell # 创建表(含两个列族) create 'student', 'info', 'score' # 查看表结构 describe 'student' # 删除表(需先禁用) disable 'student' drop 'student' ``` 2. **数据操作** ```shell # 插入数据(行键95003) put 'student', '95003', 'info:name', '张三' put 'student', '95003', 'score:math', '89' [^5] # 查询单行数据 get 'student', '95003' # 范围扫描 scan 'student', {STARTROW => '95001', ENDROW => '95005'} ``` #### 四、Java API操作(基于HBase客户端) ```java // 1. 创建配置对象 Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "localhost"); // 2. 获取连接 try (Connection connection = ConnectionFactory.createConnection(config)) { // 3. 操作表对象 Table table = connection.getTable(TableName.valueOf("student")); // 插入数据 Put put = new Put(Bytes.toBytes("95004")); put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("李四")); table.put(put); // 查询数据 Get get = new Get(Bytes.toBytes("95004")); Result result = table.get(get); System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))); } ``` > 注:生产环境推荐使用连接池管理资源[^3] #### 五、实验建议步骤 1. 完成HBase单机部署[^2] 2. 通过Shell创建测试表并验证CRUD操作 3. 编写Java程序实现数据批量导入 4. 测试范围查询与过滤器使用 5. 分析HBase底层HDFS文件结构(使用`hdfs dfs -ls`命令)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值