分享

hadoop工作日志-安装,挂载HDFS

pig2 2014-3-6 01:04:30 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 5788
本帖最后由 pig2 于 2014-3-6 01:36 编辑

阅读本文我们需要了解

FUSE是什么?
ant在挂载中的作用是什么?
挂载中那些是需要注意的问题?
思考
那些问题会导致我们挂在不成功?

FUSE:
用户空间文件系统(Filesystem in Userspace),是Linux 中用于挂载某些网络空间,如SSH,到本地文件系统的模块,在SourceForge上可以找到相关内容。


首先是操作系统以及所使用的软件的版本

操作系统:CentOS 5.5 (32位)

hadoop版本:hadoop-0.20.2.tar.gz

jdk版本:jdk-6u20-linux-i586.bin

fuse版本:fuse-2.8.1.tar.gz

ant版本:apache-ant-1.7.0-bin.tar.gz

两台32位的服务器:hadoop1(192.168.0.3),hadoop2(192.168.0.2),hadoop3(192.168.0.5),hadoop1是master,hadoop2,hadoop3是slave,并在hadoop2,hadoop3之上挂载HDFS文件系统。


一:操作系统安装


1.网卡选择启动时激活

2.选择Desktop-Gnome ,Desktop-KDE,Server

3.定制软件包:桌面环境,应用程序,开发,服务器,基本系统,这些全选


二:hadoop安装:


1.首先修改三台机器的/etc/hosts文件。将倒数两行注释掉(#127.0.0.1······以及#::······)。然后在文件的末尾添加:

192.168.0.3    hadoop1

192.168.0.2    hadoop2

192.168.0.4    hadoop3

2.建立节点之间按的无密码连接:

(1)在hadoop1上:

   #cd /root

   #ssh-keygen -t rsa  一路回车即可

   #ls -a   查看是否有.ssh文件夹

   #cd .ssh  进入.ssh目录

   #cp id_rsa.pub authorized_keys  生成authorized_keys文件

   #cd .. 退出到root目录

   建立本身的信任连接 #ssh hadoop1    按提示输入yes(三个字母要打全)

  (2)在hadoop2和hadoop3之上

    #cd /root   

    #ssh-keygen -t rsa     生成.ssh文件夹

    #scp root@hadoop1:/root/.ssh/* .ssh/   拷贝hadoop1上的.ssh文件夹覆盖本地的

   (3)在三台机器之上运行:

     #ssh hadoop1

     #ssh hadoop2

     #ssh hadoop3

    这样就建立了三台机器之间的互信连接


3. 安装JDK(在hadoop1,hadoop2,hadoop3三之上执行,安装位置要一致):


     #cd /root/Desktop/hadoop_file/  (此目录中存放hadoop,ant,jdk)

     #cp  jdk-6u20-linux-i586.bin /usr/local

     #cd /usr/local

     #chmod a+x jdk-6u20-linux-i586.bin

     #./jdk-6u20-linux-i586.bin

     然后修改/etc/profile文件,在文件的最末尾添加:

     export JAVA_HOME=/usr/local/jdk1.6.0_20

     export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin  

export   CLASSPATH=.:/usr/local/jdk1.6.0_20/lib:/usr/local/jdk1.6.0_20/jre/lib:$CLASSPATH

   source /etc/profile


4.安装hadoop(在hadoop1,hadoop2,hadoop3上执行,hadoop的安装位置要一致):


   #cd  /root/Desktop/hadoop_file/hadoop-0.20.2(hadoop压缩文件就在此目录,我就将它

   安装在此目录)

   #tar -xzvf hadoop-0.20.2.tar.gz

   #cd /root/Desktop/hadoop_file/hadoop-0.20.2/conf

   在hadoop-env文件中

   #export JAVA_HOME=/usr/local/jdk1.6.0_20

   #vi core-site.xml 添加:


  <property>
     <name>fs.default.name</name>
     <value>hdfs://hadoop1:9000</value>
   </property>

  #vi hdfs-site.xml  添加:

     <property>
       <name>dfs.replication</name>
       <value>1</value>
    </property>


     <property>
       <name>hadoop.tmp.dir</name>
       <value>/tmp/hadoop/hadoop-${user.name}</value>
     </property>

  #vi mapred-sit.xml 添加:

   
   <property>
        <name>mapred.job.tracker</name>
        <value>hadoop1:9001</value>
    </property>

   #vi  masters 修改为:

      hadoop1

   #vi  slaves 修改为:

       hadoop2

       hadoop3

     到此,hadoop的安装就完成了。


5.启动hadoop:


    #service iptables stop (在hadoop1,hadoop2,hadoop3中都要执行)

    #cd /root/Desktop/hadoop_file/hadoop-0.20.2/bin

    #./hadoop namenode -format

    #./start-all.sh

     这样就将hadoop启动起来了,接下来测试一下:

    #./hadoop dfs -copyFromLocal  /root/hadooptest test-in

    #./hadoop dfs -ls test-in


三: HDFS的挂载:


     花了很长时间试图用hdfs-fuse来挂载HDFS发现很困难,没有成功,于是不得已,参照 一个文章,放在了回帖中,并成功了。


1.   首先安装fuse-2.8.1.tar.gz :

         #tar -xzvf  fuse-2.8.1.tar.gz  -C /opt

         #cd /opt/fuse-2.8.1

         #./configure --prefix=/usr
         #make
         #make install
         #modprobe fuse

         #vi /etc/sysconfig/modules/my.modules 内容为:

         #!/bin/sh
         modprobe fuse >/dev/null 2>&1
        

         #chmod +x /etc/sysconfig/modules/my.modules


2. 然后安装ant


          #cd /root/Desktop/hadoop_file

          #tar -xzvf apache-ant-1.7.0-bin.tar.gz -C /usr/local


3. 拷贝


原来咱们是把hadoop安装在/root/Desktop/hadoop_file/hadoop-0.20.2,现在为了生成fuse-dfs,并且不影响咱们的已经安装好的hadoop,咱们把整个hadoop-0.20.2,拷贝到

/root/Desktop,然后在/root/Desktop/hadoop-0.20.2目录下工作,一定要保持机器与外网联通。


4.修改/etc/profile


添加或修改:

    export HADOOP_HOME=/root/Desktop/hadoop-0.20.2(移动之后的工作目录)

    export OS_ARCH=i386
    export OS_BIT=32
         export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:${HADOOP_HOME}/c++/Linux-$OS_ARCH-$OS_BIT/lib:/usr/local/lib:/usr/
lib

        export ANT_HOME=/usr/local/apache-ant-1.7.0

     export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANT_HOME/bin

   #source   /etc/profil      


5.生成fuse-dfs


   #cd $HADOOP_HOME/

   #ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1 (保证机器与外网相通)

   #ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs


      #ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1

    #cd /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs

    #vi fuse_dfs_wrapper.sh,修改内容为:

     export OS_BIT=32

if [ "$HADOOP_HOME" = "" ]; then
export HADOOP_HOME=/root/Desktop/hadoop-0.20.2
fi

export PATH=$HADOOP_HOME/build/contrib/fuse_dfs:$PATH

for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; do
export  CLASSPATH=$CLASSPATH:$f
done

if [ "$OS_ARCH" = "" ]; then
export OS_ARCH=i386
fi

if [ "$JAVA_HOME" = "" ]; then
export  JAVA_HOME=/usr/local/jdk1.6.0_20
fi

if [ "$LD_LIBRARY_PATH" = "" ]; then
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:/root/Desktop/hadoop-0.20.2/c++/Linux-i386-32/lib:/usr
/local/lib
fi

#./fuse_dfs $@
fuse_dfs $@


    #chmod +x   /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh

    #chmod +x   /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs

    #ln -s  /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh /usr/local/bin

    #ln -s  /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs /usr/local/bin


    #mkdir /mnt/dfs

    #/usr/sbin/setenforce 0 暂时停用防火墙

    #fuse_dfs_wrapper.sh dfs://hadoop1:9000 /mnt/dfs  由此就成功挂载HDFS

    #umount /mnt/dfs 便卸载了HDFS


没找到任何评论,期待你打破沉寂

pig2 发表于 2014-3-6 01:10:28
本帖最后由 pig2 于 2014-3-6 01:36 编辑
环境
  OS Centos 5.3
Jdk1.6
Hadoop-2.20.1
Fuse-2.8.1
  Apache-ant-1.7.1-bin.tar.gz
Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make

1、Fuse安装
  1. tar zxvf    fuse-2.8.1.tar.gz
  2. cd fuse2.8.1
  3. ./configure --prefix=/usr
  4. make
  5. make install
  6. modprobe fuse
复制代码
  1. vi /etc/sysconfig/modules/my.modules  
  2. #!/bin/sh
  3. modprobe fuse >/dev/null 2>&1
  4. chmod +x /etc/sysconfig/modules/my.modules
复制代码
2、Ant安装
  1. wget http://www.meisei-u.ac.jp/mirror/apache/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
  2. tar zxvf apache-ant-1.7.1-bin.tar.g
  3. mv apache-ant-1.7.1-bin.tar.g /usr/local/ant
复制代码
3、环境变量设置
  1. export JAVA_HOME=/usr/local/1dk1.6
  2. export HADOOP_HOME=/data/soft/hadoop-2.20.1
  3. export OS_ARCH=i386
  4. export OS_BIT=32                    //如果系统是64位的,这里应该写64
  5. 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
  6. export ANT_HOME=/usr/local/ant
  7. export PATH=$ANT_HOME/bin:$PATH
复制代码
4、libhdfs 制作
  1. cd $HADOOP_HOME/
  2. ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1
  3. ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs
复制代码
5、fuse-dfs
  1. cd $HADOOP_HOME
  2. ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
复制代码
6、fuse配置
  1. export JAVA_HOME=/usr/local/jdk1.6
  2. export HADOOP_HOME=/data/soft/hadoop-2.20.1
  3. export HADOOP_CONF_DIR=/data/soft/hadoop-0.20.1/conf
  4. export OS_ARCH=i386
  5. export OS_BIT=32
  6. //以上都是新增加的内容
  7. if [ "$HADOOP_HOME" = "" ]; then
  8. export HADOOP_HOME=/usr/local/share/hadoop
  9. fi
  10. export PATH=$HADOOP_HOME/contrib/fuse_dfs:$PATH
  11. for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; do
  12. export  CLASSPATH=$CLASSPATH:$f
  13. done
  14. if [ "$OS_ARCH" = "" ]; then
  15. export OS_ARCH=amd64
  16. fi
  17. if [ "$JAVA_HOME" = "" ]; then
  18. export  JAVA_HOME=/usr/local/java
  19. fi
  20. if [ "$LD_LIBRARY_PATH" = "" ]; then
  21. export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:/usr/local/share/hdfs/libhdfs/:/usr/local/lib
  22. fi
  23. ./fuse_dfs $@ //修改成以下内容
  24. fuse_dfs $@  //这里要把前面的./去掉,要不然挂载hdfs文件系统会找不到fuse_dfs文件
复制代码
7、设置文件权限
  1. chmod +x /data/soft/hadoop-2.20.1/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh
  2. chmod +x /data/soft/hadoop-2.20.1/build/contrib/fuse-dfs/fuse_dfs
  3. ln -s /data/soft/hadoop-2.20.1/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh /usr/local/bin
  4. ln -s /data/soft/hadoop-2.20.1/build/contrib/fuse-dfs/fuse_dfs /usr/local/bin/
  5. mkdir /mnt/dfs
复制代码
8、手动挂载hdfs文件系统
  1. fuse_dfs_wrapper.sh dfs://192.168.1.11:54310 /mnt/dfs
复制代码
9、开机自动挂载hdfs文件系统
  1. vi /etc/fstab
  2. fuse_dfs_wrapper.sh dfs://192.168.1.11:54310 /mnt/dfs    fuse rw,auto 0 0
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条