###HBase代码在hadoop集群下运行找不到hbase相关类
hbase代码引入的jar都可以在hbase/lib的目录下找到,一次性都导入,代码就能运行了。单纯的hbase代码是可以直接作为普通java程序运行的,不用再hadoop集群下运行。
但是hbase相关的读写写到了MapReduce的操作中,就需要打成jar包,在maven下,将hbase/lib下的jar包都导入项目,然后代码就不会报错了,然后rebuild project 完成后,就可以通过mvn compile,mvn package将代码打包了。
通过hadoop jar Your.jar classname [hdfs:inputdir] [hdfs:outputdir]时会报hbase中的相关类找不到,原因是hadoop集群找不到本地的hbase jar包。
很容易理解就是hadoop无法找到对应hbase相关的jar包。试了好多方法,也历经了好几天无法运行的情况,反而优先完成了Hive实验。最后的解决办法是在\$HADOOP_HOME/etc/hadoop/hadoop-env.sh中对应有个添加HADOOP_CLASSPATH的地方,在前面多加一句
export HADOOP_CLASSPATH = \$HADOOP_CLASSPATH:/home/hadoop/hadoop_installs/hbase-1.2.6/lib/*.jar
可以通过hadoop classpath命令查看hadoop集群内所有jar包的路径
并且在yarn-site.xml中添加相关的jar包所在的位置,也就是增加一个property如下所示
|
|
HBase Java代码的基本实现
|
|