hbase常见问题及解决方案总结(一)

使用hbase已经有一段时间,无论是在linux还是使用java api,大多数的问题…都没有进行整理,为了加强记忆,现在列举出曾一些我曾经踩过的坑,希望能对读者有些帮助

1. 创建表格失败,提示信息如下:

org.apache.hadoop.hbase.security.AccessDeniedException: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'mingtong' (action=create)at org.apache.ranger.authorization.hbase.AuthorizationSession.publishResults(AuthorizationSession.java:261)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess(RangerAuthorizationCoprocessor.java:595)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:664)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:769)at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:496)at org.apache.hadoop.hbase.master.MasterCoprocessorHost$11.call(MasterCoprocessorHost.java:222)at org.apache.hadoop.hbase.master.MasterCoprocessorHost.execOperation(MasterCoprocessorHost.java:1146)at org.apache.hadoop.hbase.master.MasterCoprocessorHost.preCreateTable(MasterCoprocessorHost.java:218)at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1603)at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:462)at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:57204)at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127)at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)at java.lang.Thread.run(Thread.java:748)at sun.reflect.GeneratedConstructorAccessor15.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
可能导致该问题的原因:
linux最常见的权限问题:
当前使用的账户没有建表权限
解决方法: 用权限更高的账户对该用户进行赋权
另一个可能就是namespace命名空间的限制:也就是说只有按照ns的格式来创建表格,例如: create 'nc_table:table','info'
注意: nc_table是一个已经存在的nc

2. 拒绝连接!

第一个解决思路:去zookeeper conf/zoo.cfg配置文件查看

这里有两个目录:一个是数据目录dataDir,一个是日志目录dataLogDir,
使用cd命令,能不能进入这两个目录下面,如果可以进去,就证明无误
如果提示: 没有那个文件或目录,就使用mkdir命令创建这两个文件夹即可
vim /etc/hosts 查看主机名配置是否正确
如果使用和配置有误,进行修改
使用上述办法不能解决:
关闭防火墙
centOS6使用chkconfig iftables off  永久关闭防火墙
service iptables stop   临时关闭防火墙
centOS7 默认的使用firewall作为防火墙
1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
防火墙已经关闭,问题还没有解决,有可能是账户的问题,不妨切换账户试一下
端口号的问题: zookeeper默认的端口号是2181,但不是所有的都是使用这个端口号!比如我们的!
去 hbase-site.xml里面查看:
<property><name>hbase.zookeeper.property.clientPort</name><value>4180</value><description>Property from ZooKeeper's config zoo.cfg.The port at which the clients will connect.</description></property>
改变代码里面设置的端口号,问题得到解决!!
一个最坑的可能原因就是集群节点的时间不同步,hbase,和zookeeper对时间的要求很高!!好像是误差要在180s
最好的方式就是对整个集群配置时钟同步,或者是使用date命令为每个节点修改时间
以上方案都尝试过,问题仍然不能解决,就重启hbase,和zookeeper试试吧
zookeeper如果上次没有被正常关闭的话,很容易影响到下一次的使用

3. 与hbase相关jar包找不到的问题

Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.ConnectionFactoryat java.net.URLClassLoader$1.run(URLClassLoader.java:366)at java.net.URLClassLoader$1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:358)at mastercom.cn.bigdata.util.hbase.HbaseDBHelper.getConnection(HbaseDBHelper.java:50)at mapr.mro.loc.MroLableFileReducers$MroDataFileReducers.setup(MroLableFileReducers.java:43)at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:168)at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:627)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:389)at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
解决方法:  1. 打jar包的时候直接把相应的jar包打进来,这样能够解决问题,但是jar包会有200多M2. 在执行jar包前执行 export HADOOP_CLASSPATH=$HBASE_HOME/lib/*:classpath,简单有效,但是如果创建hbase连接的操作是在map,reduce里,这种方法依然会报错3. 在hadoop-env.sh里面,引入hbase的lib目录:操作如下: export HADOOP_CLASSPATH=$HBASE_HOME/lib/*:$HADOOP_CLASSPATH所有的节点都要修改,修改完后要重启集群4. 将$HBASE_HOME/lib目录下的jar包导入到$HADOOP_HOME/lib目录下,但这样很容易引起jar包冲突,不推荐

4.jdk版本冲突的问题

我的eclipse使用的是jdk1.8, 集群上的jdk配置的是1.7,jar包丢到集群上报错:
java.lang.UnsupportedClassVersionError: PR/Sort : Unsupported major.minor version 52.0
解决方法: 很简单,使用集群里对应的jdk版本编译就好了
右键项目-->BuildPath -->Configure Build Path --> Java Compiler --->将版本调整成为集群里面对应的版本即可-->apply
重新打jar包,放到集群上跑,问题得到解决

5.运行hbase shell 输入 list,等基本语句报错

ERROR: Can't get master address from ZooKeeper; znode data == nullHere is some help for this command:
List all tables in hbase. Optional regular expression parameter could
be used to filter the output. Examples:hbase> listhbase> list 'abc.*'hbase> list 'ns:abc.*'hbase> list 'ns:.*'
可能原因: 1. 时间不同步, hbase集群所有莫名其妙的问题都有可能是时间不同步导致的!!!一定要注意!!
2. hbase-site.xml里面的hbase.rootdir对应的ip与core-site.xml中的fs.defaultFS中的路径不同,或者是与hdfs文件系统的端口号不一致!

6. LZO压缩的问题:(这个是自己搭着玩儿的集群上遇到的问题)

Exception in thread "main" java.lang.IllegalArgumentException: Compression codec com.hadoop.compression.lzo.LzoCodec not found.at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:135)at org.apache.hadoop.io.compress.CompressionCodecFactory.<init>(CompressionCodecFactory.java:175)at org.apache.hadoop.mapreduce.lib.input.TextInputFormat.isSplitable(TextInputFormat.java:58)at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:397)at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:597)at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:614)at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:492)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1296)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1293)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)at org.apache.hadoop.mapreduce.Job.submit(Job.java:1293)at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1314)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not foundat org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1980)at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:128)... 20 more
解决的方案:由于是自己搞着玩的集群,就直接简单粗暴的将core-site.xml和mapred-site.xml中所有涉及到LZO压缩的地方暴力删除,重启集群,正式集群不要尝试
6.java.net.UnknownHostException: unknown host:gp-noe02异常解决办法windows下开发HBase应用程序,HBase部署在linux环境中,在运行调试时可能会出现无法找到主机,类似异常信息如下:
java.net.UnknownHostException: unknown host: gp-node02
解决办法如下:
在C:\WINDOWS\system32\drivers\etc\hosts文件中添加如下信息:
在linux 的 /etc/hosts也要添加该行信息
192.168.137.139  gp-node02

7. 堆内存溢出的问题

java.lang.OutOfMemoryError
从错误本身可以发现是堆错误,很明显是设置的值太小而导致这样错误。
在hadoop开始配置的时候,在hadoop/etc/hadoop/目录下的hadoop-env.sh文件中
export HADOOP_HEAPSIZE=
是被注释掉的,查看上面的注释,这个值默认为1000,单位为Mb
这里去掉注释,修改为4000,需要注意的是这里要根据内存大小来选择值
export HADOOP_HEAPSIZE=4000

8. 表名找不见的问题

org.apache.hadoop.hbase.TableNotFoundException: ns_wangyou.simu_out_GuangXiat org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:572)at org.apache.hadoop.hbase.client.HTable.getTableDescriptor(HTable.java:574)at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:372)at mastercom.cn.hbase.helper.AddPaths.addConfigJob(AddPaths.java:212)at mastercom.cn.hbase.config.HbaseBulkloadConfigMain.CreateJob(HbaseBulkloadConfigMain.java:101)at mastercom.cn.hbase.config.HbaseBulkloadConfigMain.main(HbaseBulkloadConfigMain.java:109)

这个问题最简单,很明显是查询的hbase数据库里面没有相应的表名导致的
检查输入的表名是否正确, 如果正确的话,去创建相应的表即可

今天先介绍到这里,后面继续介绍我在hbase使用过程中爬过的坑~

hbase常见问题及解决方案总结(一)相关推荐

  1. OpenStack环境搭建(六:常见问题及解决方案总结)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  2. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)

    实验目的及要求 完成VMware workstations安装,会应用相关操作: 完成虚拟机中ESXI6.5平台的安装及网络环境配置: 完成VMware vSphere Client 6.0软件在PC ...

  3. C#中使用WCF一些常见问题及解决方案

    C#中使用WCF一些常见问题及解决方案 参考文章: (1)C#中使用WCF一些常见问题及解决方案 (2)https://www.cnblogs.com/52XF/p/3740326.html 备忘一下 ...

  4. gulp几个常见问题及解决方案

    gulp几个常见问题及解决方案 参考文章: (1)gulp几个常见问题及解决方案 (2)https://www.cnblogs.com/hjson/p/10546708.html 备忘一下.

  5. Mycat常见问题与解决方案

    Mycat常见问题与解决方案 参考文章: (1)Mycat常见问题与解决方案 (2)https://www.cnblogs.com/it-deepinmind/p/11913519.html 备忘一下 ...

  6. [持续更新]UnsatisfiedLinkError常见问题及解决方案

    [持续更新]UnsatisfiedLinkError常见问题及解决方案 参考文章: (1)[持续更新]UnsatisfiedLinkError常见问题及解决方案 (2)https://www.cnbl ...

  7. 为什么焊锡老是粘在烙铁头上_自动焊锡机常见问题及解决方案「由力自动化」...

    随着科技的不断进步,一些行业中机器替代人工是避不可挡的一种发展趋势,自动焊锡机因为所能使用的行业广泛相信很多的朋友都有所了解,那么自动焊锡机器人使用时常见问题有哪些呢,该如何解决呢?下面小编来简单的讲 ...

  8. ARKit从入门到精通(11)-ARKit开发常见问题及解决方案

    转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题 2.ARKit运行黑屏或者白屏问题:Un ...

  9. 出现画面抖动_解析液晶拼接大屏在使用中出现的常见问题及解决方案

    随着科技的发展,液晶拼接大屏出现在我们生活中的频率越来越高,然而在使用过程中可能还伴随着多多少少的一些问题,那么接下来海威恒泰将分享一些拼接屏在使用中出现的常见问题及解决方案. 解析液晶拼接大屏在使用 ...

最新文章

  1. 整型数组 判断 java,给定一个整数数组,判断其中是否有3个数和为N
  2. javascript实现平滑的锚点
  3. mysql怎么多表备份_学习MySQL多表操作和备份处理
  4. 一起谈.NET技术,C#类类型
  5. 利用过滤器(Filter)统一处理请与响应乱码
  6. 60w风扇用多大电容_家里的40W电风扇怎么接电容?该用多大电容?怎么判断好坏?...
  7. Unity直线轨迹导弹预判
  8. 【思维导图训练2】--发散思维的秘诀
  9. js页面打印去除页眉页脚
  10. 如何精细化APP运营
  11. 新生儿的二类(自费)疫苗(截止2019年)
  12. MySQL5.7安装教程(workbench安装教程会在之后出)(32位和64位均可)
  13. php 数字上下选取,PHP中常见的数字掐头去尾操作方法
  14. MySQL rename 修改库名
  15. 1063计算谱半径(满分python)
  16. tar 将软连接的文件也进行打包
  17. 【小经验】Windows 11 家庭中文版连接远程桌面,出现身份验证错误。要求的函数不受支持
  18. Dinic求最大流/最小割
  19. D类放大器背后的奥秘
  20. aspose-words基本操作

热门文章

  1. [Java反序列化]CommonsBeanutils1利用链学习
  2. 打开i信服务器正在运行中,【网络异常,0/12157 Unknown】i信登录时出现
  3. 康迈斯多通路基因抗衰老之九:PQQ PRO线粒体能量
  4. 拼多多开店怎么提高点击率?天创速盈提出应对措施
  5. 【案例】湘潭大学一体化运维管理平台
  6. POWER BI:权限控制篇
  7. html5+Css3 做一个婚纱网页
  8. Java-JWT Utils
  9. html 怎么设置鼠标效果,css怎么设置鼠标形状
  10. Oracle错误代码大全