用户工具

站点工具


让hdfs支持rsync同步
为什么会有该问题产生,大家可以看看官方解释:

https://issues.apache.org/jira/browse/HDFS-861

该bug的解决方案就是打patch,重新编译fuse-dfs,针对小白用户,可以按照下面的指示操作:

1 安装编译需要的工具

apt-get install autoconf automake libtool make gawk g++ ant

2 卸载已有的fuse,安装最新的fuse

apt-get purge fuse
apt-get purge libfuse2
wget http://hivelocity.dl.sourceforge.net/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz
tar -zxf fuse-2.9.3.tar.gz
cd fuse-2.9.3
./configure --prefix=/usr/fuse
make
make install

3 设置环境变量

ln -s  /usr/fuse/bin/fusermount /usr/bin/
vi /etc/profile
export FUSE_HOME=/usr/fuse
export OS_ARCH=amd64
export OS_BIT=64
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:${HADOOP_HOME}/build/c++/Linux-$OS_ARCH-   
$OS_BIT/lib:/usr/local/lib:/usr/lib:$FUSE_HOME/lib
source /etc/profile

4 打patch

cd $HADOOP_HOME/
cd src/contrib/fuse-dfs/src
wget https://issues.apache.org/jira/secure/attachment/12429048/HDFS-861.patch
patch -p4 <HDFS-861.patch

5 编译libhdfs,fuse-dfs与hdfs的接口

cd $HADOOP_HOME/
ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1
ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs

6 编译fuse-dfs

ln -s /usr/fuse/include/* /usr/include/
ln -s /usr/fuse/lib/libfuse.so /usr/lib/
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1

7 确认编译是否成够

cd $HADOOP_HOME/
cd build/contrib/fuse-dfs
ldd fuse_dfs
看到以下结果证明编译已经完成:
      linux-vdso.so.1 =>  (0x00007fff457d2000)
      libhdfs.so.0 => /usr/lib/libhdfs.so.0 (0x00007fbf5f6dd000)
      libfuse.so.2 => /usr/fuse/lib/libfuse.so.2 (0x00007fbf5f4a2000)
      libjvm.so => /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server/libjvm.so (0x00007fbf5e7e5000)
      libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbf5e44f000)
      libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbf5e1cd000)
      libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbf5dfc8000)
      libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbf5ddac000)
      librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fbf5dba4000)
      libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbf5d89c000)
      /lib64/ld-linux-x86-64.so.2 (0x00007fbf5f8e8000)
      libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbf5d686000)

8 安装最新版本的rsync server

当下最新版本地址:

http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz

已经不需要再打这个patch:

http://www.linuxboy.net/?p=772

要是你是若干年之后看到这篇文章(额...现在是2014年10月16日),最新版本可以在这下载到:

http://rsync.samba.org/

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar -zxvf rsync-3.1.1.tar.gz
cd rsync-3.1.1
./configure --prefinx=/home/rsync
make -j 4 
sudo make install
安装完毕,编写配置文件,起用rsync进程,搞定撒~ 
让hdfs支持rsync同步.txt · 最后更改: 2014/10/16 06:55 由 justzx