编译hadoop-2.4.0之HDFS的64位C++库
来源:互联网 发布:maxwell软件原理 编辑:程序博客网 时间:2024/05/01 17:35
C++库的源代码位于:
hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs
这里提供一个直接对这些源文件进行编译的makefile,编译后将打包命名为libhdfs.a. makefile内容为:
CC = gccDEFINES = -DG_ARCH_X86_64CFLAGS += -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT $(DEFINES)CXXFLAGS += -pipe -O3 -D_REENTRANT $(DEFINES) -rdynamicAR = ar cqsLFLAGS = -rdynamicOBJECTS = exception.o expect.o hdfs.o jni_helper.o native_mini_dfs.oTARGET = libhdfs.a#command, don't changeCHK_DIR_EXISTS= test -dDEL_FILE = rm -ffirst: all####### Implicit rules.SUFFIXES: .o .c .cpp .cc .cxx .C .cu.cpp.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<".cc.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<".cxx.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<".C.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<".c.o:$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" ####### Build rules all: $(AR)$(AR): $(TARGET)$(TARGET): $(OBJECTS)$(AR) $(TARGET) $(OBJECTS)clean: -$(DEL_FILE) $(OBJECTS) $(TARGET)
保存好后,直接make. 编译信息如下:
gcc -c -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT -DG_ARCH_X86_64 -o "exception.o" "exception.c"gcc -c -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT -DG_ARCH_X86_64 -o "expect.o" "expect.c"gcc -c -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT -DG_ARCH_X86_64 -o "hdfs.o" "hdfs.c"gcc -c -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT -DG_ARCH_X86_64 -o "jni_helper.o" "jni_helper.c"gcc -c -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT -DG_ARCH_X86_64 -o "native_mini_dfs.o" "native_mini_dfs.c"ar cqs libhdfs.a exception.o expect.o hdfs.o jni_helper.o native_mini_dfs.o
接下来测试一下这个库能不能用。进入以下目录
hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/test找到测试源代码,对该文件夹中所有测试代码进行编译.这里再提供一个简单的makefile,内容如下:
LIBS = -L$(JAVA_HOME)/jre/lib/amd64/server/ -ljvm -L../ -lhdfsINCPATH = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I. -I..all:gcc -o hdfs_ops test_libhdfs_ops.c $(INCPATH) $(LIBS)gcc -o hdfs_read test_libhdfs_read.c $(INCPATH) $(LIBS)gcc -o hdfs_write test_libhdfs_write.c $(INCPATH) $(LIBS)gcc -o hdfs_zerocopy test_libhdfs_zerocopy.c $(INCPATH) $(LIBS)
直接make,编译信息如下:
gcc -o hdfs_ops test_libhdfs_ops.c -I/d0/data/lichao/software/java/jdk1.7.0_55/include -I/d0/data/lichao/software/java/jdk1.7.0_55/include/linux -I. -I.. -L/d0/data/lichao/software/java/jdk1.7.0_55/jre/lib/amd64/server/ -ljvm -L../ -lhdfsgcc -o hdfs_read test_libhdfs_read.c -I/d0/data/lichao/software/java/jdk1.7.0_55/include -I/d0/data/lichao/software/java/jdk1.7.0_55/include/linux -I. -I.. -L/d0/data/lichao/software/java/jdk1.7.0_55/jre/lib/amd64/server/ -ljvm -L../ -lhdfsgcc -o hdfs_write test_libhdfs_write.c -I/d0/data/lichao/software/java/jdk1.7.0_55/include -I/d0/data/lichao/software/java/jdk1.7.0_55/include/linux -I. -I.. -L/d0/data/lichao/software/java/jdk1.7.0_55/jre/lib/amd64/server/ -ljvm -L../ -lhdfsgcc -o hdfs_zerocopy test_libhdfs_zerocopy.c -I/d0/data/lichao/software/java/jdk1.7.0_55/include -I/d0/data/lichao/software/java/jdk1.7.0_55/include/linux -I. -I.. -L/d0/data/lichao/software/java/jdk1.7.0_55/jre/lib/amd64/server/ -ljvm -L../ -lhdfs
我们随便生成一个文件,包含1到10这10个数字,并加载到hdfs文件系统。
seq 1 10 > tmpfilehadoop fs -mkdir /datahadoop fs -put tmpfile /datahadoop fs -cat /data/tmpfile12345678910ok。现在运行生成的hdfs_read程序,测试一下hdfs的64位C++接口:
./hdfs_read /data/tmpfile 21 32
运行信息如下:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.12345678910
1 0
- 编译hadoop-2.4.0之HDFS的64位C++库
- Hadoop 64位编译
- 在centos6.4 编译64位的hadoop 2.4.1
- 在centos6.4 编译64位的hadoop 2.4.1
- CentOS6.5、Hadoop-2.2.0、64 位的编译
- Hadoop之HDFS的API
- Hadoop之HDFS的操作
- hadoop之HDFS的扩充
- Hadoop 之 hdfs的常用命令
- 编译64位 hadoop 2.4 源码
- hadoop 2.4.1 64位编译记录
- hadoop 2.7.1 64位库编译
- 64位Ubuntu1404编译hadoop-2.2.0
- Hadoop-2.6.0上的C的API访问HDFS
- eclipse编译hadoop hdfs
- Hadoop通过C的API访问HDFS
- Hadoop通过C的API访问HDFS
- 使用Hadoop的C API操作HDFS
- 仿91助手的PC与android手机通讯(3) --- 检测是否已经安装驱动
- 银行股跌破净值你还敢买吗?
- Delphi中@,^,#,$分别表示什么?
- 仿91助手的PC与android手机通讯(4) --- 自动安装手机驱动
- Jg-Table 教程1 (jgTable)
- 编译hadoop-2.4.0之HDFS的64位C++库
- 关于suse重置root密码进入init=/bin/bash后无法使用键盘输入的问题
- 仿91助手的PC与android手机通讯(5) --- 使用adb获取手机信息
- Java基本理论知识二
- 支持多种视频格式的网页视频播放器代码
- SMP 3.0 SDK 升级摘要
- C++学习笔记16,C++11中的显式的默认构造函数以及显示删除默认构造函数
- C++ 友元
- Counterattack.没有理由不拼命