[hadoop]hadoop2.6彻底分布式环境搭建

在通过几天的环境搭建,终于搭建成功,其中对于hadoop的具体设置却是没有碰到不少问题,反而在hadoop各节点之间的通讯遇到了问题,并且还反复了不少遍,光虚拟机就从新安装了四、5次,可是当明白了问题以后才发现这都是无用功,有了问题应该找具体的解决方案,并非彻底的重装,这样不会明白问题是怎么解决的,除了费时费力没有多大的用处,接下来就把搭建的过程详细叙述一下。html

环境配置: 计算机: CPU-I7 2630QM 6G内存 256G SSD 虚拟机: vmware workstation 11 系统: ubuntu 14.04 LTS 节点: 192.168.1.150 master 192.168.1.151 slave1 192.168.1.151    slave2
参考:
  http:
//www.aboutyun.com/thread-7684-1-1.html
  http://my.oschina.net/u/2285247/blog/354449
  http://www.aboutyun.com/thread-5738-1-1.html
  http://www.aboutyun.com/thread-6446-1-1.html
安装步骤: 1、安装虚拟机系统(安装1个便可,其他的能够经过克隆),并进行准备工做
2、安装JDK,并配置环境变量 3、克隆虚拟机系统,并修改hosts、hostname
四、配置虚拟机网络,使虚拟机系统之间以及和host主机之间能够经过相互ping通。
5、配置ssh,实现节点间的无密码登陆 
6、master配置hadoop,并将hadoop文件传输到slave节点
7、配置环境变量,并启动hadoop,检查是否安装成功

一、安装虚拟机系统,并进行准备工做java

  安装虚拟机系统不用赘述,安装vmware——新建虚拟机——典型——选择镜像——设置帐户密码——安装位置——配置——安装。node

  当虚拟机安装成功后,默认的是nat模式,不要当即将网络模式切换到桥接模式下,这时nat模式下应该能够联网,先安装几个软件,之后须要用到,固然在桥接模式下也能够联网,可是桥接模式是要设置成静态IP的,局限性比较大,下载安装完之后,接下来就不用联网了。web

#切换到root模式下 #刚开始root是默认不开启的,能够利用以下命令对root密码进行设置
sudo passwd root #如今在root模式先安装vim,命令以下:
apt-get install vim #安装ssh
apt-get install ssh #这个步骤是可选的,用于更新,以及将ssh相关都安装
apt-get install openssh* apt-get update

二、安装jdk,并配置环境变量apache

1)从oracle下载jdk安装包,并将安装包拖入到虚拟机当中ubuntu

2)经过cd命令进入到安装包的当前目录,利用以下命令进行解压缩。vim

tar -zxvf jdk.....(安装包名称)

3)利用以下命令将解压后的文件夹移到/usr目录下 网络

#注意,这样移动到/usr之后就没有jdk1.8...这个目录了,是将这个目录下的全部文件所有移动到/usr/java下,
mv jdk1.8...(文件夹名称) /usr/java

4)配置环境变量oracle

#切换到root模式下
su - root #利用vim编辑/etc/profile(这个是对全体用户都起做用的)
vim /etc/profile
#将一下两句加入到其中,并保存退出
export PATH=$PATH:/usr/java/bin:/usr/java/jre/bin
export CLASSPATH=.:/usr/java/lib:/usr/java/jre/lib
#而后使profile生效
source /etc/profile
#试验java、javac、java -version

三、克隆虚拟机并修改三个虚拟机的hosts、hostnameapp

1)克隆虚拟机时要注意必定要选择完整克隆

2)修改hosts(三个虚拟机都要改)

#root下用vim打开hosts
vim /etc/hosts #将如下内容添加到hosts中
192.168.1.150 master 192.168.1.151 slave1 192.168.1.152    slave2

如图:

3)修改hostname(三个虚拟机都要改)

#root下打开hostname
vim /etc/hostname #分别将每一个虚拟机改为对应的name(master、slave一、slave2)

四、配置虚拟机网络

  在安装好虚拟机后,虚拟机有三种模式分别是nat模式、仅主机模式、桥接模式,此处对于此三种模式进行简单介绍:

    nat模式:这是通nat地址转换共享主机Ip的模式,在安装好虚拟机后会发现有vmnet8虚拟网卡,这个网卡默认是nat模式,这时nat模式下的虚拟机至关于又组成一个局域网,而vmnet8至关于这个局域网的网关,在这种模式下,虚拟机之间能够相互ping通,可是不能与主机通讯,由于主机与虚拟机之间有有一个vmnet8网卡。固然经过配置vmnet8网卡能够实现通讯。

    仅主机模式:这种模式没有地址转换能力,各个虚拟机之间是相互独立的,不能相互访问,每一个虚拟机只能与主机通讯。

    桥接模式:这种模式是将虚拟网卡直接绑定到物理网卡上,能够绑定多个地址,这里是将网卡设置成混杂模式,而后实现能够收发多个地址的消息。

  本人搭建环境采用的是桥接模式,这种模式拟真性更强一些,虽然有些麻烦。

  注意:要将三个虚拟机的ip与主机都处于同一个网段,而后实验是否能够Ping通

五、配置ssh,实现节点间的无密码登陆 (注意关闭防火墙 ufw disable)

1)产生密钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

2)导入authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3)试验看是否安装成功

#查看是否有sshd进程
ps -e | grep ssh #尝试登陆本地
ssh localhost

4)远程无密码登陆

#进入master的.ssh目录
scp authorized_keys u0@slave1:~/.ssh/authorized_keys_master #u0是个人用户名 #进入slave一、slave2的.ssh目录
cat authorized_keys_master >>  authorized_keys

注意:第四步要在slave上重复,要使三者都可以无密码相互登陆,重复完后能够利用以下命令试验,第一次须要输入密码绑定

ssh salve1(slave2)

注意:个人主机是链接的路由无线网络,我遇到了一个问题,就是在虚拟机网络重连后master能够登陆slave2,可是过一会后就发现总是connection refused,就由于这个问题我还从新安装了几回,网络上的方法都试了也无论用,后来发现,原来是个人虚拟机ip与路由局域网中的其余机器Ip冲突,千万要保证局域网内的Ip不要和虚拟机的ip冲突

六、master配置hadoop,并将hadoop文件传输到slave节点 

1)解包移动

#解压hadoop包
tar -zxvf hadoop...
#将安装包移到/usr目录下
mv hadoop... /usr/hadoop

2)新建文件夹

#在/usr/hadoop目录下新建以下目录(root)
mkdir /dfs mkdir /dfs/name mkdir /dfs/data mkdir /tmp

3)配置文件:hadoop-env.sh(文件都在/usr/hadoop/etc/hadoop中)

修改JAVA_HOME值(export JAVA_HOME=/usr/java)
4)配置文件:yarn-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java

5)配置文件:slaves

将内容修改成:

slave1
slave2

6)配置文件:core-site.xml

<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/usr/hadoop/tmp</value>
               <description>Abase for other temporary   directories.</description>
       </property>
        <property>
               <name>hadoop.proxyuser.u0.hosts</name>
               <value>*</value>
       </property>
       <property>
               <name>hadoop.proxyuser.u0.groups</name>
               <value>*</value>
       </property>
</configuration>

7)配置文件:hdfs-site.xml

<configuration>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/hadoop/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/usr/hadoop/dfs/data</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>3</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
</configuration>

8)配置文件:mapred-site.xml

<configuration>
          <property>                                                                  
        <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>

9)配置文件:yarn-site.xml

<configuration>
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                                
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

10)将hadoop传输到slave1和slave2根目录

 scp -r /usr/hadoop u0@slave1:~/
七、配置环境变量,并启动hadoop,检查是否安装成功
1)配置环境变量
#root模式编辑/etc/profile
vim /etc/profile #以上已经添加过java的环境变量,在后边添加就能够
export PATH=$PATH:/usr/java/bin:/usr/java/jre/bin:/usr/hadoop/bin:/usr/hadoop/sbin

2)启动hadoop

#注意最后单词带‘-’
hadoop namenode -format start-all.sh

3)查看启动进程