您的位置:首页 > 运维架构 > Linux

CentOs-6.8 Hadoop完全分布式搭建

2017-07-08 16:04 393 查看
1.下载:https://dist.apache.org/repos/dist/release/hadoop/commo

2.详解:http://blog.csdn.net/aircraftxjd/article/details/44624219

一,安装环境

1.虚拟机:VMware-12.5.2

2.操作系统:linux CentOs-6.8 64位

3.Jdk:jdk-7u79 64位

4.hadoop版本:hadoop-2.7.1

5.安装三个CentOs-6.8,其中:一个服务器两个客户机

Master:192.168.1.149

node2 :192.168.1.150

node3 :192.168.1.151

二,修改主机名(非必要)

1.修改主机名称hostname

a) vi /etc/sysconfig/network




 



b) 保存退出:Esc:wq

c) 重启生效:reboot



d) 重启之后可以看到主机名已经改变了



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

a) 编辑:vi /etc/hosts



b) 保存退出:Esc:wq

三,配置SSH免密码登录

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

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

a) 编辑:vim /etc/ssh/sshd_config

#RSAAuthentication yes

#PubkeyAuthentication yes

b) 保存退出



2.输入命令:ssh-keygen -t rsa生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置


 

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

a) cd /root/.ssh/

b) cat id_rsa.pub>> authorized_keys

c) ssh root@192.168.1.150 cat ~/.ssh/id_rsa.pub>> authorized_keys

d) ssh root@192.168.1.151 cat ~/.ssh/id_rsa.pub>> authorized_keys


 

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

a) scp -r authorized_keys known_hosts root@192.168.1.150:/root/.ssh/ 

b) 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文件夹中并解压配置环境变量

a) 首先卸载自带的jdk

(1)查看jkd:rpm -qa | grep jdk


 

(2)卸载:rpm -e 复制查出来的第一行 例:rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64

b) 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz


 

c) 进入解压文件夹并pwd 复制路径


 

d) 编辑配置环境变量: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


 

e) 保存退出:按Esc:wq

f) 使环境变量生效:source /etc/profile

g) 查看jdk:java -version



五,下载安装Hadoop

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

1.解压:tar -zxvf hadoop-2.7.1.tar.gz


 

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

  a) mkdir tmp hdfs hdfs/data hdfs/name



3.修改配置文件(在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/

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

b) 进入此文件夹下:cd /home/hadoop/hadoop-2.7.1/etc/hadoop/

c) 编辑: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>



d) 编辑: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> 

<!--以下是配置SecondaryNameNode,如果不配置默认在主节点上面,而namenode和SecondaryNameNode要分开配置,这里我配置到了150上面 -->

   <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>





e) 编辑:vim mapred-site.xml 添加

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

执行命令:cp mapred-site.xml.template mapred-site.xml

 

然后再添加

<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>


 

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

export JAVA_HOME=/home/java/jdk1.7.0_79


 


 

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

192.168.1.150

192.168.1.151


 

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

scp -r /home/hadoop/ 192.168.1.150:/home/

scp -r /home/hadoop/ 192.168.1.151:/home/

5.在Master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.0目录

a) 初始化:bin/hdfs namenode -format


 

b) 全部启动sbin/start-all.sh,也可以分开sbin/start-dfs.sh,sbin/start-yarn.sh

c) 停止:sbin/stop-all.sh

d) 输入命令jps可以看到相关信息

(1)以下节点全部启动才是正确的:

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







6.测试:

a) 浏览器输入:192.168.1.149:8088


 

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




 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息