分享

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

本帖最后由 xioaxu790 于 2014-7-21 12:21 编辑
问题导读
1、Hadoop三台机器之间如何建立互信连接 ?
2、启动了的Hadoop,怎样测试?
3、如何卸载、挂载HDFS?



首先是操作系统以及所使用的软件的版本
操作系统: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上:
  1.    #cd /root
  2.    #ssh-keygen -t rsa  一路回车即可
  3.    #ls -a   查看是否有.ssh文件夹
  4.    #cd .ssh  进入.ssh目录
  5.    #cp id_rsa.pub authorized_keys  生成authorized_keys文件
  6.    #cd .. 退出到root目录
  7.    建立本身的信任连接 #ssh hadoop1    按提示输入yes(三个字母要打全)
复制代码

  (2)在hadoop2和hadoop3之上
  1. #cd /root   
  2. #ssh-keygen -t rsa     生成.ssh文件夹
  3. #scp root@hadoop1:/root/.ssh/* .ssh/   拷贝hadoop1上的.ssh文件夹覆盖本地的
复制代码

   (3)在三台机器之上运行:
  1.     #ssh hadoop1
  2.     #ssh hadoop2
  3.     #ssh hadoop3
复制代码
   这样就建立了三台机器之间的互信连接

3. 安装JDK(在hadoop1,hadoop2,hadoop3三之上执行,安装位置要一致):
  1.      #cd /root/Desktop/hadoop_file/  (此目录中存放hadoop,ant,jdk)
  2.      #cp  jdk-6u20-linux-i586.bin /usr/local
  3.      #cd /usr/local
  4.      #chmod a+x jdk-6u20-linux-i586.bin
  5.      #/jdk-6u20-linux-i586.bin
  6.      然后修改/etc/profile文件,在文件的最末尾添加:
  7.      export JAVA_HOME=/usr/local/jdk1.6.0_20
  8.      export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin  
  9.      export   CLASSPATH=.:/usr/local/jdk1.6.0_20/lib:/usr/local/jdk1.6.0_20/jre/lib:$CLASSPATH
  10.     source /etc/profile
复制代码

4.安装hadoop(在hadoop1,hadoop2,hadoop3上执行,hadoop的安装位置要一致):
  1.    #cd  /root/Desktop/hadoop_file/hadoop-0.20.2(hadoop压缩文件就在此目录,我就将它安装在此目录)
  2.    #tar -xzvf hadoop-0.20.2.tar.gz
  3.    #cd /root/Desktop/hadoop_file/hadoop-0.20.2/conf
  4.    在hadoop-env文件中
  5.    #export JAVA_HOME=/usr/local/jdk1.6.0_20
复制代码

   #vi core-site.xml 添加:
  1. <property>
  2.      <name>fs.default.name</name>
  3.      <value>hdfs://hadoop1:9000</value>
  4.    </property>
复制代码

  #vi hdfs-site.xml  添加:
  1.    <property>
  2.        <name>dfs.replication</name>
  3.        <value>1</value>
  4.     </property>
  5.      <property>
  6.        <name>hadoop.tmp.dir</name>
  7.        <value>/tmp/hadoop/hadoop-${user.name}</value>
  8.      </property>
复制代码

  #vi mapred-sit.xml 添加:
  1. <property>
  2.         <name>mapred.job.tracker</name>
  3.         <value>hadoop1:9001</value>
  4.     </property>
复制代码

   #vi  masters 修改为:
  1.   hadoop1
复制代码

   #vi  slaves 修改为:
  1.        hadoop2
  2.        hadoop3
复制代码
    到此,hadoop的安装就完成了。

5.启动hadoop:
  1.     #service iptables stop (在hadoop1,hadoop2,hadoop3中都要执行)
  2.     #cd /root/Desktop/hadoop_file/hadoop-0.20.2/bin
  3.     #./hadoop namenode -format
  4.     #./start-all.sh
复制代码

     这样就将hadoop启动起来了,接下来测试一下:
  1. #./hadoop dfs -copyFromLocal  /root/hadooptest test-in
  2.     #./hadoop dfs -ls test-in
复制代码

三: HDFS的挂载:
     曾今花了很长时间试图用hdfs-fuse来挂载HDFS发现很困难,没有成功,于是不得已,查看了些资料进行挂载,并成功了。
1.   首先安装fuse-2.8.1.tar.gz :
  1.          #tar -xzvf  fuse-2.8.1.tar.gz  -C /opt
  2.          #cd /opt/fuse-2.8.1
  3.          #./configure --prefix=/usr
  4.          #make
  5.          #make install
  6.          #modprobe fuse
复制代码

        #vi /etc/sysconfig/modules/my.modules 内容为:
  1.          #!/bin/sh
  2.           modprobe fuse >/dev/null 2>&1
  3.          #chmod +x /etc/sysconfig/modules/my.modules
复制代码

2. 然后安装ant
  1.           #cd /root/Desktop/hadoop_file
复制代码

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,添加或修改:
  1.   export HADOOP_HOME=/root/Desktop/hadoop-0.20.2(移动之后的工作目录 )
  2.     export OS_ARCH=i386
  3.     export OS_BIT=32
  4.     export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:${HADOOP_HOME}/c++/Linux-$OS_ARCH-        $OS_BIT/lib:/usr/local/lib:/usr/
  5. lib
复制代码

5.生成fuse-dfs
  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
  4.    #ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
  5.    #cd /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs
复制代码

    #vi fuse_dfs_wrapper.sh,修改内容为:
  1. export OS_BIT=32
  2. if [ "$HADOOP_HOME" = "" ]; then
  3. export HADOOP_HOME=/root/Desktop/hadoop-0.20.2
  4. fi
  5. export PATH=$HADOOP_HOME/build/contrib/fuse_dfs:$PATH
  6. for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; do
  7. export  CLASSPATH=$CLASSPATH:$f
  8. done
  9. if [ "$OS_ARCH" = "" ]; then
  10. export OS_ARCH=i386
  11. fi
  12. if [ "$JAVA_HOME" = "" ]; then
  13. export  JAVA_HOME=/usr/local/jdk1.6.0_20
  14. fi
  15. if [ "$LD_LIBRARY_PATH" = "" ]; then
  16. export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:/root/Desktop/hadoop-0.20.2/c++/Linux-i386-32/lib:/usr
  17. /local/lib
  18. fi
  19. #./fuse_dfs $@
  20. fuse_dfs $@
  21.    #chmod +x   /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh
  22.    #chmod +x   /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs
  23.    #ln -s  /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh /usr/local/bin
  24.    #ln -s  /root/Desktop/hadoop-0.20.2/build/contrib/fuse-dfs/fuse_dfs /usr/local/bin
  25.    #mkdir /mnt/dfs
  26.    #/usr/sbin/setenforce 0 暂时停用防火墙
  27.    #fuse_dfs_wrapper.sh dfs://hadoop1:9000 /mnt/dfs  由此就成功挂载HDFS
  28.    #umount /mnt/dfs 便卸载了HDFS
复制代码








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

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

本版积分规则

关闭

推荐上一条 /2 下一条