在通過Hadoop的C的API 訪問HDFS的時候,編譯和運行出現了不少問題,在這邊,做個總結吧:

样例代碼就是参考官方文檔中提供到:


編譯:官網這样描述

See the Makefile for hdfs_test.c in the libhdfs source directory (${HADOOP_HOME}/src/c++/libhdfs/Makefile) or something like:
gcc above_sample.c -I${HADOOP_HOME}/src/c++/libhdfs -L${HADOOP_HOME}/libhdfs -lhdfs -o above_sample

但是我兩個方法都試了,不行,後面發現原來是要少了:

所以完整到makefile就是:


好了,編譯通過,但是運行的時候出現以下錯誤信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration

...

Call to org.apache.hadoop.fs.Filesystem::get(URI, Configuration) failed!
Exception in thread "main" java.lang.NullPointerException
Call to get configuration object from filesystem failed!

解决方法:將HADOOP_HOME和HADOOP_HOME/lib下所有到jar包加入/usr/lib/jvm/java-6-openjdk/jre/lib/ext/(其實只要需要到加入,但是不知道哪些是需要的)

最後,恭喜你,問題解决了。

 

 



From:CSDN    

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()