hbase报错解决

1.报错内容Ignoring exception during close for org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader@daac15b

java.lang.NullPointerException

+java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setAttribute(Ljava/lang/String;[B)V

+Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setAttribute(Ljava/lang/String;[B)V


问题原因:版本问题,找不到Scan.setAttribute方法,看了jar包以后发现是由于我安装的是0.98.24hbase包,所以运行是基于0.98.24hbase的,然而这个包里的hbase-client-0.98.24.jar里的scan类里没有Scan.setAttribute方法,但是我的hadoop2.6.0里内嵌的是hbase-client-1.0包,包里scan类是含有这个方法的,所以编译不报错,运行报错。

解决:1.本地更新hbase版本 2.用maven编译以后在线上服务器运行。

### HBase KeeperErrorCode 报错原因及解决方法 #### 错误描述 在HBase运行过程中,可能会遇到 `KeeperErrorCode` 的错误提示,例如 `ERROR: KeeperErrorCode = NoNode for /hbase/master`。这类错误通常表明ZooKeeper无法找到特定的节点或路径。 --- #### 原因分析 1. **配置文件问题** 如果HBase的配置文件(如 `hbase-site.xml` 或 `hbase-env.sh`)未正确设置,可能导致ZooKeeper与HBase之间的通信异常。具体表现为ZooKeeper未能成功注册HBase Master节点[^1]。 2. **Java客户端连接参数不匹配** 当通过Java程序访问HBase时,如果未正确指定ZooKeeper的相关参数(如 `hbase.zookeeper.quorum` 和 `zookeeper.znode.parent`),也可能引发此类错误。这些参数分别对应ZooKeeper服务器地址和HBase根节点路径[^3]。 3. **意外中断导致的数据丢失** 若系统经历断电、休眠或其他形式的非正常关闭,可能造成ZooKeeper中存储的HBase元数据丢失。此时,尝试重新启动服务时会出现 `NoNode` 类型的错误[^4]。 4. **HDFS权限或Namenode状态问题** HBase依赖于HDFS来存储其数据。如果HDFS上的 `/hbase` 目录缺少必要的读写权限,或者当前活动的NameNode并非HMaster所在节点,则同样会影响系统的正常运作[^4]。 --- #### 解决方案 ##### 方法一:调整HBase配置文件 - 修改 `hbase-site.xml` 文件,在其中添加以下属性以放宽流能力验证: ```xml <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> ``` 此更改有助于规避某些环境下的兼容性问题[^1]。 - 编辑 `hbase-env.sh` 脚本,加入如下声明禁用Hadoop类路径查找功能: ```bash export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" ``` 执行完毕后记得保存并应用改动[^2]。 ##### 方法二:修正Java应用程序中的链接参数 确保所有涉及HBase交互的应用均提供完整的初始化选项,特别是以下几个关键字段: - `"hbase.zookeeper.quorum"` 设置为目标ZooKeeper实例所在的主机名列表; - `"zookeeper.znode.parent"` 定义实际使用的根目录位置,默认情况下应为 `/hbase-unsecure` 或其他自定义值。 示例代码片段展示如何创建Configuration对象: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; public class HBaseConnection { public static Configuration getConf() { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "localhost"); conf.set("zookeeper.znode.parent", "/hbase-unsecure"); return conf; } } ``` ##### 方法三:清理残留记录并重置服务 当确认是由外部干扰引起的状态紊乱时,可以采取强制手段恢复秩序: 1. 启动 ZooKeeper CLI 工具定位目标树结构: ```bash ./bin/zkCli.sh ``` 2. 删除有问题的部分及其子项: ```bash deleteall /hbase ``` 3. 关闭现有组件序列以防冲突发生: - 终止全部挂起的任务进程; ```bash jps | grep 'HMaster\|HRegionServer' | awk '{print $1}' | xargs kill -9 ``` - 中断分布式文件管理系统工作流程; ```bash stop-dfs.sh ``` - 结束协调者守护线程; ```bash my_zk.sh stop ``` 4. 按照既定顺序逐一唤醒各模块直至整体恢复正常运转为止: - 开启消息队列管理器; ```bash my_zk.sh start ``` - 提供持久化层支持; ```bash start-dfs.sh ``` - 加载表格引擎核心逻辑; ```bash start-hbase.sh ``` 最后还需核查 `/hbase` 下属区域是否存在潜在隐患,并酌情授予适当许可权限以便后续操作顺利推进[^4]。 --- #### 注意事项 无论采用哪种方式处理上述状况,都建议事先做好充分准备以免遗漏重要细节影响最终效果评估准确性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值