编译Hadoop-2.4.0之HDFS的64位C++库

C++库的源代码位于:

&">nbsp;

Hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs

这里提供一个直接对这些源文件进行编译的makefile,编译后将打包命名为libhdfs.a. makefile内容为:

CC++            = gcc

DEFINES      = -DG_ARCH_X86_64

CFLAGS        += -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -O3 -D_REENTRANT $(DEFINES)

CXXFLAGS      += -pipe -O3 -D_REENTRANT $(DEFINES) -rdynamic

AR            = ar cqs

LFLAGS        = -rdynamic

OBJECTS      = exception.o expect.o hdfs.o jni_helper.o native_mini_dfs.o

TARGET        = libhdfs.a

#command, don't change

CHK_DIR_EXISTS= test -d

DEL_FILE      = rm -f

first: 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../ -lhdfs

INCPATH = -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../ -lhdfs

gcc -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../ -lhdfs

gcc -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../ -lhdfs

gcc -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 >  tmpfile

hadoop fs -mkdir /data

hadoop fs -put tmpfile /data

hadoop fs -cat /data/tmpfile

1

2

3

4

5

6

7

8

9

10

ok。现在运行生成的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.

1

2

3

4

5

6

7

8

9

10

--------------------------------------分割线 --------------------------------------

Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu下Hadoop环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

时间: 2024-09-14 10:57:05

编译Hadoop-2.4.0之HDFS的64位C++库的相关文章

mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 应该选择mac ox 64位的版本 http://download.oracle.com/otn-pub/java/jdk/7u79-b1

64位centos 下编译 hadoop 2.6.0 源码

64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了   一. 下载必要的组件 a) 下载hadoop源码 (当前最新的稳定版是2.6.0)地址  http://mirrors.hust.edu.cn/apache/hadoop/common/stable/hadoop-2.6.0-src.tar.gz b) 下载apache-ant (centos自带的ant版本太低,编译过程中会报错)地址: http://

通过源码的方式编译hadoop的安装文件

Hadoop2.4.0  重新编译 64  位本地库原创作者:大鹏鸟 时间:2014-07-28环境:虚拟机 VirtualBox,操作系统 64 位 CentOS 6.4下载重新编译需要的软件包apache-ant-1.9.4-bin.tar.gzfindbugs-3.0.0.tar.gzprotobuf-2.5.0.tar.gzapache-maven-3.0.5-bin.tar.gz下载 hadoop2.4.0 的源码包hadoop-2.4.0-src.tar.gz压解源码包[grid@h

Ubuntu 14(64位) 集群环境下如何安装Hadoop 2.4

经过前边的积累,今天终于实现了集群环境下部署Hadoop,并成功运行了官方的例子. 工作如下: 两台机器: NameNode:上网小本,3G内存,机器名:YP-X100e,IP:192.168.101.130. DataNode:虚拟机,Win7下载VMWare10中虚拟Ubuntu14,虚拟机器名:ph-v370,IP:192.168.101.110 确保可互相ping通,按照机器名和IP配置各自机器的/etc/hosts文件和/etc/hostname文件,我的hosts配置内容如下 127

用farpoint for .net v4.0做的程序, 发布在64位的windows server 2008 的服务器上报错,请问是服务器64位的问题吗?

问题描述 主要是分页报错,请高手解答. 解决方案 解决方案二:可能是服务器根本没有接电源.解决方案三:在64位系统里重新编译一下,解决方案四:引用2楼wind_cloud2011的回复: 在64位系统里重新编译一下, 困难是暂时还没有64位的开发环境.

编译hadoop eclipse的插件(hadoop1.0)

在hadoop-1.0中,不像0.20.2版本,有现成的eclipse-plugin源码包,而是在HADOOP_HOME/src /contrib/eclipse-plugin目录下放置了eclipse插件的源码,这篇文章 ,我想详细记录一下自己是如何编译此源码生成适用于Hadoop1.0的eclipse插件 1.安装环境 操作系统:Ubuntu14.4 软件: eclipse java Hadoop 1.0 2.编译步骤 (1)首先下载ant与ivy的安装包 将安装包解压缩到指定的目录,然后将

package-centOS 6.4+hadoop 2.5.0编译出错

问题描述 centOS 6.4+hadoop 2.5.0编译出错 使用命令:mvn package -Pdist,native -DskipTests -Dtar时出现以上错误,已经卡了三天了,请教大神帮忙看下,谢谢谢 解决方案 hadoop auth examples编译失败 参考:http://blog.csdn.net/w13770269691/article/details/16883663/ 解决方案二: 这个完全不一样?可否帮我再看看,可以加我QQ:937038088...如能帮我解

日志-求救啊!Hadoop 2.2.0 搭建集群 启动hdfs时候 namenode 启动后报空指针

问题描述 求救啊!Hadoop 2.2.0 搭建集群 启动hdfs时候 namenode 启动后报空指针 日志如下: 2015-02-07 01:01:46,610 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Error encountered requiring NN shutdown. Shutting down immediately. java.lang.NullPointerException at org.apache

eclipse/intellij idea 远程调试hadoop 2.6.0

很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试,那么问题来了,win7下的eclipse或intellij idea如何远程提交map/reduce任务到远程hadoop,并断点调试? 一.准备工作 1.1 在win7中,找一个目录,解压hadoop-2.6.0,本文中是D:\yangjm\Code\study\hadoop\hadoop-2.