搭建分布式hadoop2.x集群

前期准备:

     1.我这里用了三台虚拟机,.默认已经配置好静态IP和IP域名映射,它们相互之间可以ping通

         第一台:192.168.174.131      hadoopNumber01.medal.com

         第二台:192.168.174.132      hadoopNumber02.meda.com

         第三台:192.168.174.133      hadoopNumber03.medal.com

     2.虚拟机最好不要连上网,因为我们后面用的是离线方式安装

一、搭建前的系统设置

    1.将三台虚拟机切换到root用户,禁用IPv6

      命令是:#echo "alias net-pf-10 off"  >> /etc/modprobe.d/dist.conf

          #echo "alias ipv6 off"  >> /etc/modprobe.d/dist.conf

    2.配置普通用户的sudo权限

      命令是:#chmod  u+w   /etc/sudoers

          #vi   /etc/sudoers

             在第一行加上:用户名  ALL=(root)NOPASSWD:ALL

            因为我是以xunzhang这个用户登录的,所以我加上xunzhang ALL=(root)NOPASSWD:ALL

          #chmod  u-w  /etc/sudoers

    3.关闭防火墙

      命令是:$sudo  service iptables stop

          $sudo  chkconfig  iptables  off

    4.禁用selinux

      命令是:$sudo  vi  /etc/sysconfig/selinux

            修改内容:SELINUX= disabled

    5.卸载JdK

      命令是:$sudo  rpm  -qa | grep  java

          $sudo  rpm  -e  --nodeps  xxx   yyy   zzz

    6.设置文件打开数量和用户最大进程数

      命令是:$sudo  vi  /etc/security/limits.conf

          加上内容:

              *  soft   nofiles   65535

              *  hard  nofiles   65535

              *  soft    nproc    32000

              *  hard   nproc    32000

    7.设置集群时间同步(ntp),前提是三台虚拟机之间已经配置ssh免密钥登录

      比如说我现在设置第二台和第三台虚拟机与第一台虚拟机进行时间同步

          1>首先检查第一台虚拟机有没有安装ntp软件,命令是:#rpm  -qa | grep ntp,默认系统已经自带了

         2>编辑配置文件ntp.conf

          命令是:#vi  /etc/ntp.conf

           去掉一行注释,将#restrict  192.168.1.0  mask 255.255.255.0  nomodify  notrap,去掉注释,并将其改成192.168.174.0,因为我的ip是在这个网段里面

           加上三行注释,将service  0.centos.pool.ntp.ort和service  1.centos.pool.ntp.org还有service  2.centos.pool.ntp.org这三行注释掉

           去掉两行注释,将末尾的server  127.127.1.0    #local   clock 和 fudge  127.127.1.0  stratum   10 ,这两行的注释去掉

       3>编辑配置文件ntpd

         命令是:#vi  /etc/sysconfig/ntpd

            内容是:# Drop  root  to id  'ntp:ntp'  by  default.

                SYNC_HWCLOCK =yes

                OPTIONS="-u  ntp:ntp  -p  /var/run/ntpd.pid   -g"

       4>启动服务

         命令是:#service  ntpd  start

             #chkconfig   ntpd  on

       5>在另外两台虚拟机上,写脚本,进行时间的同步

          在第二台虚拟机上,切换到root用户,设置同步

             命令是:crontab  -e

               加上如下内容:

                  0-59 * * * * /usr/sbin/ntpdate  hadoopNumber01.medal.com

                  注意:在这里每个*号之间有一个空格,后面这个域名是我第一台主机的主机名

          在第三台虚拟机上,也做如第二台虚拟机相同的操作

二、搭建Hadoop2.x集群

  1、安装JDK

    1>上传JDK安装包,并将其解压到/opt/modules目录下

    2>配置环境变量

      命令是:sodu  /etc/profile

      在最后加上:###########  JAVA_HOME ##################

            export  JAVA_HOME=/opt/modules/jdk1.7.0_79 (jdk所在的路径),我的jdk是在/opt/modules/下

            export  CLASSPATH=/opt/modules/jdk1.7.0_79/lib

            export  PATH=$PATH:$JAVA_HOME/bin

    3>重启配置文件/etc/profile

      命令是:source  /etc/profile

    4>将jdk分发到另外两台虚拟机中

      命令是:cd  /opt/modules/

          scp -r * xunzhang@hadoopNumber02.medal.com:/opt/modules

          scp -r * xunzhang@hadoopNumber03.medal.com:/opt/modules

     最后在另外两台虚拟机上配置java环境变量

  2.安装Hadoop2.x(我这里是2.5.0)

    1>上传hadoop安装包,并将其解压到/opt/modules目录下,进入hadoop-2.5.0-cdh5.3.6目录下,创建临时缓存目录

        命令是:mkdir  -p  tmp/dir

    2>进入hadoop-2.5.0-cdh5.3.6/ect/hadoop目录下,修改配置文件

      第一个:core-site.xml       

        <configuration>
          <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoopNumber01.medal.com:8020</value>
          </property>
          <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/modules/hadoop-2.5.0-cdh5.3.6/tmp/dir</value>
          </property>
        </configuration>

      第二个:hdfs-site.xml        

        <configuration>
          <property>
            <name>dfs.replication</name>
            <value>2</value>
          </property>
          <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoopNumber02.medal.com:50090</value>
          </property>
        </configuration>

     第三个:mapred-site.xml

        <configuration>
          <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
          </property>
        </configuration>

     第四个:yarn -site.xml

        <configuration>
          <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoopNumber01.medal.com</value>
          </property>
          <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
          </property>
        </configuration>

     第五个:slaves

          hadoopNumber01.medal.com
          hadoopNumber02.medal.com
          hadoopNumber03.medal.com

     第六个:hadoop-env.sh

          配置java的路径:export JAVA_HOME=/opt/modules/jdk1.7.0_79

     第七个:mapred-env.sh

          配置java的路径:export JAVA_HOME=/opt/modules/jdk1.7.0_79

  3.将hadoop分发到其它虚拟机上

     前提:三台虚拟机它们的目录结构,和用户名完全一样

     命令:  scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop-env.sh mapred-env.sh                                                                                                          xunzhang@hadoopNumber02.medal.com:/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop/

            scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves hadoop-env.sh mapred-env.sh                                                                                                          xunzhang@hadoopNumber03.medal.com:/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop/

  4.格式化hdfs文件系统

    在第一台虚拟机上

      命令:bin/hdfs namenode -format

          如果没有错误,就继续向下执行,有错误就查看日志信息,进行改正

         sbin/start-dfs.sh

         sbin/start-yarn.sh

至此,集群搭建完成

posted @ 2017-08-31 20:44  meal  阅读(373)  评论(0编辑  收藏  举报