C언어에서 hadoop 파일 시스템 처리
- Posted at 2006/12/05 19:02
- Filed under project/lucene_hadoop
Hadoop내에는 기본적으로 C에서 Hadoop의 분산파일시스템내에 있는 파일을 관리할 수 있는 API를 제공하고 있다.
hadoop 컴파일을 할때 다음과 같이 하면 c++ 디렉토리 아래에 있는 코드가 build된다.
ant compile-libhdfs
build 된 결과는 ./build/libhdfs 디렉토리에 저장된다.
다음과 같은 C코드를 만들어 테스트 해 볼수 있다. 물론 자체에서 테스트 프로그램도 제공하지만 그래도 직접 만들고 컴파일 해봐야지 제맛을 느낄수 있는 법...
컴파일은 다음과 같이 한다.
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
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
");
}
}
}
}
#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
Posted by 김형준
- Response
- No Trackback , 1 Comment
Trackback URL : http://www.jaso.co.kr/trackback/133
Comments List
-
기특하게도 0.9에서는 /lib/native/밑에 so파일로 제공되네요. 이제 그만큼 자신있어졌다는 건가? 1.0까지 화이팅..






