博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop命令执行hbase应用jar包时的环境变量加载问题
阅读量:6713 次
发布时间:2019-06-25

本文共 2265 字,大约阅读时间需要 7 分钟。

hot3.png

#问题描述

  • 使用hadoop命令执行hbase应用jar包时,报如下错误:

    [hadoop@ breath ~]$ hadoop jar ~/HbaseTest-0.1.jar Test.HtableCreate Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration at Test.HtableCreate.main(HtableCreate.java:21) 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: org.apache.hadoop.hbase.HBaseConfiguration at 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 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 7 more

#问题分析

  • 查看hadoop的classpath发现并无hbase的相关依赖jar包

    [hadoop@ breath ~]$ hadoop classpath /opt/beh/core/hadoop/etc/hadoop:/opt/beh/core/hadoop/share/hadoop/common/lib/:/opt/beh/core/hadoop/share/hadoop/common/:/opt/beh/core/hadoop/share/hadoop/hdfs:/opt/beh/core/hadoop/share/hadoop/hdfs/lib/:/opt/beh/core/hadoop/share/hadoop/hdfs/:/opt/beh/core/hadoop/share/hadoop/yarn/lib/:/opt/beh/core/hadoop/share/hadoop/yarn/:/opt/beh/core/hadoop/share/hadoop/mapreduce/lib/:/opt/beh/core/hadoop/share/hadoop/mapreduce/:/opt/beh/core/hadoop/contrib/capacity-scheduler/*.jar

  • 尝试在在环境变量CLASSPATH中添加$HBASE_HOME/lib/*无效。

  • 查看Hbase官方文档中"HBase and MapReduce"-"HBase, MapReduce, and the CLASSPATH"详细解释了MapReduce与Hbase jar执行的关系

如果临时使用环境变量可如下设置:

HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath` ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-examples-VERSION.jar

如果永久生效可以在hadoop-env.sh中设置HADOOP_CLASSPATH,如下设置:

# Extra Java CLASSPATH elements.  Automatically insert capacity-scheduler.if [ -z $HBASE_HOME  ];then   export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}else   export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HBASE_HOME}/lib'/*'fi

转载于:https://my.oschina.net/yulongblog/blog/787001

你可能感兴趣的文章
linux基础整理0316
查看>>
alibaba.fastjson 乱序问题
查看>>
django 反向关联--blog.entry_set.all()查询
查看>>
网工之路
查看>>
字节序与字节对齐
查看>>
linux 查看发行版本信息
查看>>
数据结构之二叉树遍历
查看>>
Linux rpm 命令参数使用详解[介绍和应用]
查看>>
tr的使用详解
查看>>
CentOS 6.4下PXE+Kickstart无人值守安装操作系统
查看>>
2.5 alias命令
查看>>
arp
查看>>
我的友情链接
查看>>
购物商城图片放大镜效果
查看>>
我的友情链接
查看>>
Maven依赖包
查看>>
去除chrome中input的黄底色
查看>>
Hyper-v之第2代虚拟机
查看>>
spring常用属性配置
查看>>
友盟报错 java.lang.NoClassDefFoundError: com.umeng.analytics.MobclickAgent
查看>>