Hadoop:loadFileSystems error & exception: ExceptionUtils::getStackTrace error 问题分析

问题描述:

hadoop版本:hadoop-2.5.0

jdk:jdk1.8.0_51

在用hdfs.h中的C接口连接hadoop集群时出现以下问题:

loadFileSystems error:
(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)
hdfsBuilderConnect(forceNewInstance=0, nn=node01, port=8020, kerbTicketCachePath=(NULL), userName=(NULL)) error:

解决方法:

在参考了https://issues.apache.org/jira/browse/HDFS-4552中的回答后茅塞顿开,终于明白问题所在。

该回答的主要意思是说hadoop2以上版本都是采用通配符的形式用hadoop classpath启动的,而1.x的版本是采用全路径,但是呢java没有没有扩展这种通配符的支持,下面又说了hadoop2.6.0及以上版本是支持通配符的,因此这个问题是这样产生的:hadoop2.0以上到2.6.0的版本因为hadoop classpath的通配符不被java支持因此导致启动时hadoop classpath无效。2.6.0及以上版本就不存在这个问题。

什么是hadoop classpath?

在装有haddoop集群的机器上执行:

那些用*号表示的就是通配符形式的路径。

怎么解决呢?

参考https://stackoverflow.com/questions/21064140/hadoop-c-hdfs-test-running-exceptionhttps://blog.csdn.net/Aquester/article/details/25242215,解决方法是,

在启动之前,将hadoop安装目录下的所有jar放到CLASSPATH环境变量里:

export CLASSPATH=${HADOOP_HOME}/etc/hadoop:`find ${HADOOP_HOME}/ | awk '{path=path":"$0}END{print path}'`
export LD_LIBRARY_PATH="${HADOOP_HOME}/lib/native":$LD_LIBRARY_PATH

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值