problems_hbase
1.集群上执行hbase和mr整合的代码报错:
[root@cdh01 develop]# yarn jar original-hbase-1.0-SNAPSHOT.jar cn.study.hbasemr.HBaseMain 报错,
报错如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
原因:original-hbase-1.0-SNAPSHOT.jar只有6KB左右,是没有整合任何依赖jar包的一个jar包。
解决方法:
-
可以使用打包好的另一个jar包: hbase-1.0-SNAPSHOT.jar,它有51M左右,其中整合了所有需要的依赖jar包。
-
设置我们的环境变量,然后运行original那个比较小的jar包:
#如果hadoop安装的是cdh版本的,则要这么写:export HADOOP_HOME=/usr/bin
export HADOOP_HOME=/develop/hadoop-2.7.5
export HBASE_HOME=/usr/develop/hbase-2.0.0
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`
yarn jar original-hbase-1.0-SNAPSHOT.jar cn.study.hbasemr.HBaseMain
2.本地执行hbase和mr整合的代码报错:
Exception in thread "main" java.io.IOException: Mkdirs failed to create /user/witt/hbase-staging (exists=false, cwd=file:/usr/develop/ideaWs/hbase)
错误提示里发现:cwd=file:/usr/develop/ideaWs/hbase
cwd: current work directory。居然是本地文件系统,怀疑dfs的配置没有加载,于是打印conf的配置信息发现:
fs.defaultFS=file:///
解决方案: 复制 $HADOOP_HOME/etc/hadoop 目录(我的是cdh版本的hadoop,配置文件路径是 /etc/hadoop/conf/)下配置文件 core-site.xml, hdfs-site.xml 到$PROJECT_DIR/src/main/resources目录下,问题解决。