错误问题Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter

HBase运行hbase-server-1.3.1.jar包下的rowcount方法统计student的错误解决

1、运行环境:

  1. 开启zookeeper集群
  2. 开启hadoop集群
  3. 开启hbase集群

2、运行程序

运行程序如下:

/opt/module/hadoop/hadoop-2.7.3/bin/yarn jar /opt/module/hbase/hbase-1.3.1/lib/hbase-server-1.3.1.jar rowcount student

也就是运行hbase官方的MapReduce任务中的统计student表中有多少行数据的命令,但是出现了错误。

3、错误显示

运行以上程序,出现了错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter
	at java.lang.Class.getDeclareMethod0(Native Method)
	at java.lang.Class.privateGetDeclareMethods(Class.java:2701)
	at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
	at java.lang.Class.getMethod0(Class.java:3018)
	at java.lang.Class.GetMethod(Class.java:1784)
	...

在这里插入图片描述

4、错误原因

因为在hadoop的运行环境中缺少HBase支持的jar包,所以我们可以临时或者永久的添加hadoop中对HBase的依赖包。

5、解决方法

  1. 临时:
  • 先查看HBase的MapReduce任务所需的依赖
bin/hbase mapredcp
  • 执行环境变量的导入
export HBASE_HOME=/opt/module/hbase/hbase-1.3.1
export HADOOP_HOME=/opt/module/hadoop/hadoop-2.7.3
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`

这样就可以临时的将hbase的MapReduce任务所需要的依赖加入到hadoop的运行环境中

  1. 永久:
  • 关闭hbase、hadoop、zookeeper集群
  • 在hadoop的配置文件hadoop-env.sh中添加:
export HADOOP_CLASSPATH=/opt/module/hbase/hbase-1.3.1/lib/*

之后将其分发到各个电脑上,之后重新进行实验就解决了。

你可能感兴趣的:(hbase)