Hadoop내에는 기본적으로 C에서 Hadoop의 분산파일시스템내에 있는 파일을 관리할 수 있는 API를 제공하고 있다.
hadoop 컴파일을 할때 다음과 같이 하면 c++ 디렉토리 아래에 있는 코드가 build된다.

ant compile-libhdfs

build 된 결과는 ./build/libhdfs 디렉토리에 저장된다.

다음과 같은 C코드를 만들어 테스트 해 볼수 있다. 물론 자체에서 테스트 프로그램도 제공하지만 그래도 직접 만들고 컴파일 해봐야지 제맛을 느낄수 있는 법...

dir.c
#include "hdfs.h"

int main(int argc, char *argv[]) {
  hdfsFS fs = hdfsConnect("default", 0);
  if(!fs) {
    fprintf(stderr, "Failed to connect to hdfs
");
    exit(-1);
  }

  {
    //dir test
    int num = 0;
    int i;

    hdfsFileInfo *pathList = 0;
    if(pathList = hdfsListDirectory(fs, argv[1], &num)) {
      for(i = 0; i < num; i++) {
        fprintf(stderr, "Name: %s
", pathList[i].mName);
      }
    } else {
      if(errno) {
        fprintf(stderr, "Error
");
      } else {
        fprintf(stderr, "Empty
");
      }
    }
  }
}

컴파일은 다음과 같이 한다.

gcc -o dir -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -I$HADOOP_SRC/src/c++/libhdfs -L$JAVA_HOME/jre/lib/i386/client -L/$HADOOP_SRC/build/libhdfs -lhdfs dir.c
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/133

Comments List

  1. typos 2006/12/07 02:26 # M/D Reply Permalink

    기특하게도 0.9에서는 /lib/native/밑에 so파일로 제공되네요. 이제 그만큼 자신있어졌다는 건가? 1.0까지 화이팅..

Leave a comment
« Previous : 1 : ... 286 : 287 : 288 : 289 : 290 : 291 : 292 : 293 : 294 : ... 388 : Next »