记录一个HBase运行报错,困扰了我一整天,总算解决了,特此记录:
Hbase在MapReduce上运行时,总是报错ClassNotFoundException:org.apache.hadoop.habase*,根据网上的解决办法,基本都是在$HBase_HOME/etc/hadoop的hadoop-env.sh中配置HADOOP_CLASSPATH:
但这种不建议,有可能会造成jar包冲突
因此我在/etc/profile中设置了HADOOP_CLASSPATH:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib:`$HBASE_HOME/bin/hbase mapredcp`
但依然不行,然后看到一篇文章:https://community.hortonworks.com/questions/231571/hbasemapreducetableoutputformat-not-found.html
然后就在yarn-site.sh中设置了yarn.application.classpath,在value中设置了hbase的lib路径,然后就好了
<property>
<name>yarn.application.classpath</name>
<value>
/opt/hadoop-2.7.6/etc/*,
/opt/hadoop-2.7.6/etc/hadoop/*,
/opt/hadoop-2.7.6/lib/*,
/opt/hadoop-2.7.6/share/hadoop/common/*,
/opt/hadoop-2.7.6/share/hadoop/common/lib/*,
/opt/hadoop-2.7.6/share/hadoop/mapreduce/*,
/opt/hadoop-2.7.6/share/hadoop/mapreduce/lib/*,
/opt/hadoop-2.7.6/share/hadoop/hdfs/*,
/opt/hadoop-2.7.6/share/hadoop/hdfs/lib/*,
/opt/hadoop-2.7.6/share/hadoop/yarn/*,
/opt/hadoop-2.7.6/share/hadoop/yarn/lib/*,
/opt/hbase-2.1.5/lib/*
</value>
</property>