Centos-6.8:hadoop完全分布式搭建

639 阅读3分钟

搭建准备

hadoop下载

本文参考

安装环境以及软件版本

  1. 虚拟机:VMware-12.5.2

  2. 操作系统:linux-centos6.8-64位

  3. jkd:linux-jdk-7u79-64位

  4. hadoop版本:hadoop-2.7.1

  5. 三台机器:

    master:192.168.1.149

    node2:192.168.1.150

    node3:192.168.1.151

修改主机名(非必要)

  1. 修改hostname

    vi /etc/sysconfig/network
    

  2. 保存退出

    Esc:wq
    
  3. 重启生效

    reboot
    

  4. 主机名修改成功

  5. 三个节点上都配置hosts文件

    vi /etc/hosts
    

  6. 保存退出

    Esc:wq
    

配置ssh免密码登录

因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys

  1. centos默认没有启动ssh免密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置

    vim /etc/ssh/sshd\_config
    

    将三台机器以下两句的注释解开

    #RSAAuthentication yes

    #PubkeyAuthentication yes

  2. 输入命令

    ssh-keygen -t rsa
    

    生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置

  3. 合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并

    cd /root/.ssh/
    cat id\_rsa.pub>> authorized\_keys
    ssh root@192.168.1.150 cat ~/.ssh/id\_rsa.pub>> authorized\_keys
    ssh root@192.168.1.151 cat ~/.ssh/id\_rsa.pub>> authorized\_keys
    

  4. 把master服务器的authorized_keys,known_hosts复制到slave服务器的/root/.ssh目录

    scp -r authorized\_keys known\_hosts root@192.168.1.150:/root/.ssh/
    scp -r authorized\_keys known\_hosts root@192.168.1.151:/root/.ssh/
    

  5. 完成,ssh root@192.168.1.150,ssh root@192.168.1.151就不需要输入密码了

安装jdk

注意:每台服务器都要安装

  1. 在/home目录下新建两个文件夹java hadoop

  2. 将jdk放在java文件夹中并解压配置环境变量

  3. 首先卸载自带的jdk

  4. 查看jkd

    rpm -qa | grep jdk
    

  5. 卸载rpm -e 复制查出来的第一行 例

    rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86\_6
    
  6. 解压

    tar -zxvf jdk-7u79-linux-x64.tar.gz
    

  7. 进入解压文件夹并

    pwd
    

    复制路径

  8. 编辑配置环境变量

    vim /etc/profile
    

    并添加如下图所示

    export JAVA\_HOME=/home/java/jdk1.7.0\_79
    export CLASSPATH=.:$JAVA\_HOME/jre/lib/rt.jar:$JAVA\_HOME/lib/dt.jar:$JAVA\_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA\_HOME/bin
    

  9. 保存退出

    Esc:wq
    
  10. 使环境变量生效

    source /etc/profile
    
  11. 查看jdk

    java -version
    

下载安装hadoop

  1. 将下载的hadoop文件放在/home/hadoop用户的根目录下,接着开始解压

  2. 解压

    tar -zxvf hadoop-2.7.1.tar.gz
    

  3. 在/home/hadoop目录下创建数据存放的文件夹tmp,hdfs,hdfs/data,hdfs/name

    mkdir tmp hdfs hdfs/data hdfs/name
    

  4. 修改配置文件(在master主节点中配置)

    请注意:主节点(master)上面的文件如果修改一定要覆盖另外两个节点(node2,node3)

    scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* root@192.168.1.150:/home/hadoop/hadoop-2.7.1/etc/hadoop/
    scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* root@192.168.1.151:/home/hadoop/hadoop-2.7.1/etc/hadoop/
    

    分别是core.site.xml,hdfs-site.xml,mapred-site.xml,hadoop-env.sh,yarn-env.sh,slaves文件

  5. 进入此文件夹下

    cd /home/hadoop/hadoop-2.7.1/etc/hadoop/
    
  6. 编辑

    vim core-site.xml
    

    添加

    <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://192.168.1.149:9000</value>  
    </property>  
    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>file:/home/hadoop/tmp</value>  
    </property>  
    <property>  
        <name>io.file.buffer.size</name>  
        <value>131702</value>  
    </property>
    

  7. 编辑

    vim hdfs-site.xml
    

    添加

    <property> 
         <name>dfs.replication</name> 
         <value>3</value> 
     </property> 
     <property> 
         <name>dfs.support.append</name> 
         <value>true</value> 
     </property> 
     <property> 
         <name>dfs.namenode.name.dir</name> 
         <value>file:/home/hadoop/hdfs/name</value> 
     </property> 
     <property> 
         <name>dfs.blocksize</name> 
         <value>1048576</value> 
     </property> 
     <property> 
         <name>file:dfs.datanode.data.dir</name> 
         <value>file:/home/hadoop/hdfs/data</value> 
     </property> 
     <property> 
         <name>dfs.webhdfs.enabled</name> 
         <value>true</value> 
     </property>
    
    <property>
         <name>dfs.http.address</name>
         <value>192.168.1.149:50070</value>
         <description>
         The address and the base port where the dfs namenode web ui will listen on.
         If the port is 0 then the server will start on a free port.
         </description>
     </property>
     <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>192.168.1.150:50090</value>
     </property>
    

  8. 编辑vim mapred-site.xml 添加

    注意:这里可能没有mapred-site.xml这个文件只有mapred-site.xml.template 这时我们需要复制一份并改成 mapred-site.xml

  9. 执行命令

    cp mapred-site.xml.template mapred-site.xml
    
  10. 然后再添加

    <configuration>
         <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
         </property>
    
         <property>
             <name>mapreduce.jobhistory.address</name>
             <value>192.168.1.149:10020</value>
         </property>
    
         <property>
             <name>mapreduce.jobhistory.webapp.address</name>
             <value>192.168.1.149:19888</value>
         </property>
    
         <property>
             <name>mapreduce.tasktracker.map.tasks.maximum</name>
             <value>10</value>
         </property>
    
         <property>
             <name>mapreduce.tasktracker.reduce.tasks.maximum</name>
             <value>4</value>
         </property>
    </configuration>
    

  11. 配置hadoop-env.sh,yarn-env.sh两个文件下的JAVA_HOME

    export JAVA\_HOME=/home/java/jdk1.7.0\_79
    

  12. 最后配置slaves文件,删除默认的localhost,增加2个从节点

    192.168.1.150

    192.168.1.151

  13. 将配置好的Hadoop复制到各个节点对应位置上,通过scp传送

    scp -r /home/hadoop/ 192.168.1.150:/home/
    
    scp -r /home/hadoop/ 192.168.1.151:/home/
    
  14. 在master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.0目录

  15. 初始化

    bin/hdfs namenode -format
    

  16. 全部启动

    sbin/start-all.sh
    

    也可以分开

    sbin/start-dfs.sh
    sbin/start-yarn.sh
    
  17. 停止

    sbin/stop-all.sh
    
  18. 输入命令jps可以看到相关信息

  19. 以下节点全部启动才是正确的:

    注意:namenode和SecondaryNameNode不能再同一个服务器上,上面我已经做了配置,效果如下

  20. 测试,浏览器输入:192.168.1.149:8088

  21. 输入192.168.1.149:50070 可以看到以下datanodes是两个,如果是0那就是没配好