hadoop 2.0.0 fuse 安装 libhdfs fuse-dfs 编译
来源:互联网 发布:qq飞车大黄蜂极夜数据 编辑:程序博客网 时间:2024/05/16 05:14
一、环境配置
1.主机系统:RedHat Enterprise Linux 6.1 (X86_64)
hadoop版本:hadoop-2.0.0-cdh4.3.0
JDK的版本:jdk1.6.0_45
ant的版本:apache-ant-1.8.2
maven的版本:apache-maven-3.1.0
2.环境需求:
automake,autoconf,m4,libtool,pkgconfig,fuse,fuse-devel,fuse-libs
3.编译工具的下载及环境变量的设置:
(需要外部下载ant 1.8.2 ,maven 3.1.0,在apache网站下载即可)
安装过程:
#wget http://mirror.bjtu.edu.cn/apache//ant/binaries/apache-ant-1.8.2-bin.zip #export JAVA_HOME=/usr/java/jdk1.6.0_45 #export HADOOP_HOME=/usr/hadoop #export OS_ARCH=amd64 ###i386/amd64 (可选) #export OS_BIT=64 ###32/64 (可选) #export ANT_HOME=/root/apache-ant-1.8.2 #export PATH=$PATH:$ANT_HOME/bin #export PATH=/root/apache-maven-3.1.0/bin:$PATH
备注:由于hadoop版本不同,可能会带来很多的问题,主要是它下面的文件目录很多,而且存放文件的路径不一样,所以如果你的版本跟我不同,你需要自己找到文件的路径
#yum -y install fuse fuse-devel fuse-libs #modprobe fuse ####设置环境变量,也可写入profile####
二、编译libhdfs
1.在编译libhdfs之前可以先测试下ant ,mvn是否已经配置好:
#ant -version提示如下:Apache Ant(TM) version 1.8.2 compiled on December 20 2010#mvn -version提示如下:Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2;2013-06-28 10:15:32+0800)Maven home: /root/apache-maven-3.1.0Java version: 1.6.0_45, vendor: Sun Microsystems Inc.Java home: /usr/java/jdk1.6.0_45/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux", version: "2.6.32-131.0.15.el6.x86_64", arch: "amd64", family: "unix"
2、进入安装路径:/usr/hadoop/src/hadoop-mapreduce1-project
编译libhdfs,因为libhdfs需要交叉编译,直接到src里面编译会报错,所以需要用ant编译。
注意:OS_ARCH和OS_BIT必须设置,否则会失败。
ant compile -Dlibhdfs=1 -Dcompile.c++=1
遇到的问题:
(1).不能下载ivy.2.2.0.jar包,原因是build.xml 文件里设置的mvnrepo的url出错:
解决办法:<property name="mvnrepo" value="http://repo1.maven.org/maven2"/>
(2).如果编译时出现卡顿,可以ant clean 然后再重新编译.遇到hadoop2.0.0.配置文件中的问题:
解决办法:
需要定义reactor.repo的url:
在/usr/hadoop/src/hadoop-mapreduce1-project/ivy/ivysettings.xml文件中添加:
<property name="reactor.repo" value="http://repo1.maven.org/maven2/" override="false"/>
3、编译成功后,提示如下:
........................................compile:BUILD SUCCESSFULTotal time: 9 minutes 38 seconds........................................
创建动态连接库:
找到libhdfs.so的目录,关于libhdfs.so有人说是编译libhdfs后生成的,但是我编译后没有生成。所以就直接用hadoop自带的,我这个版本hadoop-2.0.0-cdh4.3.0是在$HADOOP_HOME/lib/native这个目录下(如果没有,可以在网上下载:https://github.com/cloudera/impala/tree/master/thirdparty/hadoop-2.0.0-cdh4.3.0),然后将其目录下的库文件全部复制到$HADOOP_HOME/src/hadoop-mapreduce1-project/build/c++/Linux-amd64-64/lib再创建软连接如下
注意:一定要按照hadoop版本去找到对应的目录,再创建链接:
ln -s /usr/hadoop/src/hadoop-mapreduce1-project/build/c++/Linux-amd64-64/lib /usr/hadoop/src/hadoop-mapreduce1-project/build/libhdfs
将编译好的动态库文件(.so结尾的文件)路径添加到动态连接中:
#export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$HADOOP_HOME/lib/:/usr/local/lib:/usr/lib:/usr/hadoop/src/hadoop-mapreduce1-project/build/c++/Linux-amd64-64/lib
三、编译fuse-dfs:
(1)编译:
ant compile -Dlibhdfs=1 -Dfusedfs=1
如果编译失败,比较可能的原因是找不到libhdfs,仔细查看下libhdfs的路径,请参看第一步的ln -s,若编译成功后会在fuse-dfs/src目录下生成fuse_dfs可执行程序。如图:
(2)测试:
a.环境配置,然后编辑/etc/fuse.conf,写入以下内容
user_allow_other mount_max=100
b.编辑$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh
if [ "$HADOOP_HOME" = "" ]; thenexport HADOOP_HOME=/usr/hadoopfiexport PATH=/usr/hadoop/src/hadoop-mapreduce1-project/src/contrib/fuse-dfs/src:$PATHfor f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; doexport CLASSPATH=$CLASSPATH:$fdoneif [ "$OS_ARCH" = "" ]; thenexport OS_ARCH=amd64fiif [ "$JAVA_HOME" = "" ]; thenexport JAVA_HOME=/usr/java/jdk1.6.0_45fiif [ "$LD_LIBRARY_PATH" = "" ]; thenexport LD_LIBRARY_PATH=LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$HADOOP_HOME/lib/native:/usr/local/lib:/usr/libfi./fuse_dfs $@
(3)fuse挂载hdfs:
$mkdir /tmp/dfs$cd $HADOOP_HOME/build/contrib/fuse-dfs$./fuse_dfs_wrapper.sh dfs://hadoopmaster:9000 /tmp/dfs port=9000,server=hadoopmaster
成功提示:INFO fuse_options.c:162 Adding FUSE arg /tmp/dfs
备注:如果你有在hadoop上创建目录或上传文件,才会看到相应的目录文件
(4)卸载hdfs:
fusermount -u /tmp/dfs
遇到的问题:
(1)挂载hdfs时报错:
./fuse_dfs: error while loading shared libraries: libhdfs.so.0.0.0: cannot open shared object file: No such file or directory
解决办法:
a.查看找不到的动态库:ldd fuse_dfs
b.将找不到的库的绝对路径添加到ld查找的配置文件中:/etc/ld.so.conf
c.运行 ldconfig 重建 /etc/ld.so.cache
四、测试命令
• hdfsclient写
dd if=/dev/zero bs=4096 count=%d | hadoop fs -put - %s/%s-%d.dat• hdfsclient读
hadoop fs -get %s/f%03d.dat - > /dev/null• fuse写
dd if=/dev/zero bs=4096 count=%d of=%s/%s-%d.dat• fuse读
dd if=%s/f%03d.dat bs=4096 of=/dev/null
- hadoop 2.0.0 fuse 安装 libhdfs fuse-dfs 编译
- hadoop 2.2.0 fuse 编译及安装
- fuse挂载hadoop2.0.0文件系统hdfs到本地(关于libhdfs和fuse-dfs的编译)
- Hadoop---安装Fuse-DFS(难)
- fuse-dfs安装配置
- 利用cloudera hadoop 中的libhdfs和fuse-dfs将hdfs中的文件挂载到本地硬盘
- 用hadoop中的libhdfs和fuse-dfs构建快速云存储(出自 实践检验真理 博客)
- Ubuntu下面安装和配置hadoop的dfs-fuse
- Ubuntu下面安装和配置Hadoop的dfs-fuse
- 安装Fuse
- fuse安装
- fuse
- fuse
- Hadoop1.x中的libhdfs和fuse-dfs构建快速云存储
- fuse-2.9.0编译 安装到 板子上
- CDH hadoop-hdfs-fuse的安装使用
- fuse-dfs usage
- hadoop fuse挂载问题 (fuse-dfs didn't recognize /tmp/hdfs, -2)
- 怎么恢复U盘丢失的文件
- 增强现实产品大盘点——带你进入AR奇幻世界
- 《编程之美》中寻找最大的K个数的一般解法,这是和快速排序相结合的解法
- Cards
- System.nanoTime系统休眠后不能更新到最新
- hadoop 2.0.0 fuse 安装 libhdfs fuse-dfs 编译
- SenTestingKit.framework的报错!
- 面向对象13讲 面向对象二
- 链表学习笔记(一)
- Confluence 任务列表(Tasklist)宏
- 如何让类的成员函数作为回调函数
- offer different kinds of LED lights
- SqlServer: 清空缓存
- Linux 下安装postgres 安装教程