The issue here is that JNI doesn't like wildcards in the classpath string - it does not evaluate them the same way the regular runtime does. Try placing a full list of explicit jars on the classpath and it will not throw that Class-Not-Found error anymore.
On Thu, May 15, 2014 at 10:54 AM, Cheng Cheng <chengch...@purdue.edu> wrote: > Hi All, > > With hadoop-2.2.0, I tried to mount hdfs by using fuse-dfs. I have > successfully compiled hadoop-2.2.0.tar.gz and fuse-dfs with "mvn package > -Pdist,native -DskipTests -Dtar -e -X” from hadoop-2.2.0-src. > > After I deployed hadoop-2.2.0.tar.gz and run single mode HDFS, I tried to run > following command to mount hdfs: > > ------------------------------------------------ > LD_LIBRARY_PATH=/opt/hadoop-2.2.0/lib/native:/usr/java/jdk1.7.0_55/jre/lib/amd64/server > > CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop:/opt/hadoop-2.2.0/share/hadoop/common/lib/*:/opt/hadoop-2.2.0/share/hadoop/common/*:/opt/hadoop-2.2.0/share/hadoop/hdfs:/opt/hadoop-2.2.0/share/hadoop/hdfs/lib/*:/opt/hadoop-2.2.0/share/hadoop/hdfs/*:/opt/hadoop-2.2.0/share/hadoop/yarn/lib/*:/opt/hadoop-2.2.0/share/hadoop/yarn/*:/opt/hadoop-2.2.0/share/hadoop/mapreduce/lib/*:/opt/hadoop-2.2.0/share/hadoop/mapreduce/*:/opt/hadoop-2.2.0/contrib/capacity-scheduler/*.jar > bin/fuse_dfs -d dfs://localhost:8020 /mnt/hdfs > ------------------------------------------------ > > However, I got failed with error message: > > ------------------------------------------------ > INFO > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_options.c:115 > Ignoring option -d > INFO > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_options.c:164 > Adding FUSE arg /mnt/hdfs > FUSE library version: 2.8.3 > nullpath_ok: 0 > unique: 1, opcode: INIT (26), nodeid: 0, insize: 56 > INIT: 7.13 > flags=0x0000b07b > max_readahead=0x00020000 > INFO > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c:98 > Mounting with options: [ protected=(NULL), > nn_uri=hdfs://nebula-vm14.cs.purdue.edu:8020, nn_port=0, debug=0, > read_only=0, initchecks=0, no_permissions=0, usetrash=0, entry_timeout=60, > attribute_timeout=60, rdbuffer_size=10485760, direct_io=0 ] > loadFileSystems error: > (unable to get stack trace for java.lang.NoClassDefFoundError exception: > ExceptionUtils::getStackTrace error.) > hdfsConfGetInt(hadoop.fuse.timer.period): new Configuration error: > (unable to get stack trace for java.lang.NoClassDefFoundError exception: > ExceptionUtils::getStackTrace error.) > Unable to determine the configured value for hadoop.fuse.timer.period.ERROR > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c:134 > FATAL: dfs_init: fuseConnectInit failed with error -22! > ERROR > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c:34 > > LD_LIBRARY_PATH=/opt/hadoop-2.2.0/lib/native:/usr/java/jdk1.7.0_55/jre/lib/amd64/server > ERROR > /root/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c:35 > > CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop:/opt/hadoop-2.2.0/share/hadoop/common/lib/*:/opt/hadoop-2.2.0/share/hadoop/common/*:/opt/hadoop-2.2.0/share/hadoop/hdfs:/opt/hadoop-2.2.0/share/hadoop/hdfs/lib/*:/opt/hadoop-2.2.0/share/hadoop/hdfs/*:/opt/hadoop-2.2.0/share/hadoop/yarn/lib/*:/opt/hadoop-2.2.0/share/hadoop/yarn/*:/opt/hadoop-2.2.0/share/hadoop/mapreduce/lib/*:/opt/hadoop-2.2.0/share/hadoop/mapreduce/*:/opt/hadoop-2.2.0/contrib/capacity-scheduler/*.jar > ------------------------------------------------ > > It looks like the configuration is not correctly loaded. But I have already > configured “hadoop.fuse.timer.period" and “hadoop.fuse.connection.timeout" > in $HADOOP_HOME/etc/hadoop/hdfs-site.xml. > > Can any one share some hints on how to fix this? How can I let fuse-dfs > correctly load the configuration? > > Thanks in advance! > Cheng -- Harsh J