声明:本文面向有linux基础的大数据初学者,因好多配置都可以单独出一篇文章,如写的过于详细篇幅较大对阅读和操作会带来负面影响,如遇到问题可以自行百度或加文章末尾留的QQ群探讨。


整体流程如图:

hadoop2.6.0 集群搭建_分布式






准备工作:

下载hadoop-2.6.0.tar.gz  

http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.0/


下载jdk-7u55-linux-i586.tar.gz 从Oracle官网下载即可。


虚拟机环境:(本文使用的配置)


ip地址         hostname

192.168.32.130    slave1

192.168.32.131    slave2

192.168.32.132    slave3


操作系统镜像:CentOS-6.7-i386-bin-DVD1.iso


ssh工具:SecureCRT 7.3.1


/**************************************分割线****************************************/


第一步:准备操作系统环境:


1、创建一台虚拟机并安装centos 6.7(以desktop类型安装即可 ),安装成功后关闭iptables  和selinux 并禁止开机启动,具体步骤如下:

关闭iptables和selinux


  1. 1-1、关闭iptables执行如下命令:(6条命令逐条运行)

[root@slave1 ~]#service iptables save
[root@slave1 ~]#service iptables stop
[root@slave1 ~]#chkconfig iptables off
[root@slave1 ~]#service ip6tables save
[root@slave1 ~]#service ip6tables stop
[root@slave1 ~]#chkconfig ip6tables off

1-2、关闭 selinux: (三条命令逐条运行)

[root@slave1 ~]#setenforce 0 
[root@slave1 ~]#sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux 
[root@slave1 ~]#sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


2、将下载的hadoop-2.6.0.tar.gz  、jdk-7u55-linux-i586.tar.gz 上传到centos 系统中。

本例使用SecureCRT自带的SFTP进行上传,使用SecureCRT 用ssh连接安装好的虚拟机 。按alt+p组合键打开SFTP窗口,将文件拖放到窗口上就可以完成上传。


3、安装jdk

因为hadoop 及hadoop生态圈的好多组件是用java开发,所以安装并配置jdk是基础。


3-1、检查系统是否已经存在jdk如果存在需要删除

//查看安装的jdk  
[root@slave1 ~]# rpm -qa | grep jdk  
  
//如有的话可使用rpm -e --nodeps命令删除上面查找的内容



3-2、解压jdk-7u55-linux-i586.tar.gz 到 /usr/local (其他目录页可以,本人习惯将软件安装到/usr/local  目录下)


[root@slave1 ~]# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/local


3-3、配置JAVA_HOME、CLASSPATH 、path 环境变量:

使用vim 打开并编辑  /etc/profile  文件

[root@slave1 ~]#vim /etc/profile  #不熟练vim的使用建议专门练习vim编辑器的使用

#在最后添加如下信息

#java
export JAVA_HOME=/usr/local/jdk1.7.0_55
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

#保存后使用source /etc/profile 使配置生效
[root@slave1 ~]#source /etc/profile

如图,

hadoop2.6.0 集群搭建_分布式_02


验证jdk是否生效

[root@slave1 ~]#java -version
[root@slave1 ~]#javac -version


显示如下,说明安装并配置成功,如提示找不到命令需要仔细排查错误。

hadoop2.6.0 集群搭建_分布式_03


4、将以上配置好的系统使用VMware 的虚拟机克隆 分别克隆出两台虚拟机(建议使用链接克隆的方式,可以减少硬盘空间的使用) ,克隆完成后开机并检查ip地址的配置。

hadoop2.6.0 集群搭建_hadoop_04



/*******************************华丽的分割线************************************/


第二步:部署hadoop


1、配置主机名 (三台虚拟机都需要修改)


1-1、修改/etc/sysconfig/network 文件

[root@slave1 ~]#vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=slave1.com   #另外两台机器分别是slave2.com  slave3.com

1-2、修改/etc/hosts文件(三台虚拟机都需要修改)

[root@slave1 ~]# vim /etc/hosts
#在原来内容的基础上添加如下内容
192.168.32.131 slave1.com slave1
192.168.32.132 slave2.com slave2
192.168.32.133 slave3.com slave3


重启虚拟机,使修改生效


分别在虚拟机中互相ping 另外两台的主机名比如在slave1 机器上


[root@slave1 ~]#ping slave2
[root@slave1 ~]#ping slave3


可以正常ping通说明配置成功,如果有异常需要排除。


(再次强调三台都需要做此配置)


2、配置ssh免密码登录


因为集群启动的时候会通过ssh链接其他节点的集群将相关进程启动,所以需要配置ssh免密码登录。


使用以下命令完成配置:

[root@slave1 ~]# cd /root/.ssh/
[root@slave1 ~]# ssh-keygen -t rsa  # 不需要填写任何内容 一直按回车 生成id_rsa.pub
[root@slave1 ~]# cat id_rsa.pub > authorized_keys

#将生成的 authorized_keys id_rsa id_rsa.pub   scp到其他机器上

[root@slave1 ~]#scp -r /root/.ssh/ root@slave2:/root.ssh  
[root@slave1 ~]#scp -r /root/.ssh/ root@slave3:/root.ssh


分别在三台机器上 使用ssh 命令进行登录测试 第一次会要求输入密码,退出后再次ssh连接 不用输入密码直接登录成功


比如在slave1机器上分别对slave2 机器进行ssh登录测试:

[root@slave1 ~]# ssh slave2 #第一次需要输入密码
[root@slave2 ~]#logout  #在ssh登录状态使用logout命令退出登录 退出后再次使用上一条命令进行连接测试

注意:


在CentOS6.x上可能还需要输入密码,这是由于centos 6.x有个BUG:

hadoop2.6.0 集群搭建_分布式_05


解决方法,在各服务器上执行如下命令,即可以无密码登陆:

[root@slave1~]# restorecon -R -v /root/.ssh



3、解压hadoop2.6 并配置环境变量 


进入到之前上传的hadoop-2.6.0.tar.gz 所在目录下使用tar将文件解压到 /usr/local/ 目录下

[root@slave1 ~]# tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local  #解压后hadoop的路径为/usr/local/hadoop-2.6.0
[root@slave1 ~]# vim /etc/profile #在末尾添加如下内容

#hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0
export PATH=$HADOOP_HOME/bin:$PATH

[root@slave1 ~]#source /etc/profile


如图,slave2 和slave3两台机器也需要将hadoop 配置到环境变量中

hadoop2.6.0 集群搭建_大数据_06

4、配置hadoop 相关配置文件(hadoop的配置文件在/usr/local/hadoop-2.6.0/etc/hadoop目录 )


4-1、hadoop-env.sh  修改JAVA_HOME(具体配置参照jdk环境变量中的配置)

[root@slave1 ~]# cd /usr/local/hadoop-2.6.0/etc/hadoop  #进入hadoop安装目录下的配置文件所在目录
[root@slave1 hadoop]# vim hadoop-env.sh


将注释去掉并按实际配置进行修改,如图:

hadoop2.6.0 集群搭建_大数据_07


4-2、yarn-env.sh  修改JAVA_HOME

[root@slave1 hadoop]# vim yarn-env.sh


将注释去掉并按实际配置进行修改,如图:

hadoop2.6.0 集群搭建_分布式_08


4-3、配置slaves文件 增加slave节点  添加slave2  slave3

[root@slave1 hadoop]# vim slaves


将另外两台虚拟机的主机名添加进来,如图:

hadoop2.6.0 集群搭建_大数据_09


4-4、配置core-site.xml文件  添加hadoop核心配置

(hdfs文件端口是9000、file:/usr/local/hadoop/tmp)

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://slave1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abasefor other temporary dirctories.</description>
</property>
<property>
<name>hadoop.proxyuser.spark.groups</name>
<value>*</value>
</property>
</configuration>


4-5、配置hdfs-site.xml文件  增加hdfs配置信息namenode、datanode配置和目录位置 (/usr/local/dfs/name  和/usr/local/dfs/data 以及4-4中配置里的/usr/local/hadoop/tmp  三个目录在格式化namenode的时候会自动生成这个目录可以配置到其他地方,如果是已存在的目录需要保证有755权限)

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


4-6、配置mapred-site.xml文件 增加mapreduce配置(使用yarn框架、jobhistory使用地址及web地址)

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

4-7、配置yarn-site.xml文件 添加yarn功能

<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>slave1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>slave1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>slave1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>slave1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>slave1:8088</value>
</property>
</configuration>


5、将配好的hadoop文件拷贝到其他机器上

[root@slave1 local]# scp -r /usr/local/hadoop-2.6.0 root@slave2:/usr/local
[root@slave1 local]# scp -r /usr/local/hadoop-2.6.0 root@slave2:/usr/local

7、每台机器都格式化 namenode

分别在slave1、slave2、slave3 执行以下命令,格式化namenode

[root@slave1 local]#hdfs namenode -format

hadoop2.6.0 集群搭建_分布式_10

hadoop2.6.0 集群搭建_大数据_11

hadoop2.6.0 集群搭建_hadoop_12


8、启动dfs(只需要在slave1上执行命令即可)

[root@slave1 local]#cd /usr/local/hadoop-2.6.0/sbin
[root@slave1 sbin]#./start-dfs.sh
[root@slave1 sbin]# jps   #使用jps命令可以查看java的相关进程

hadoop2.6.0 集群搭建_分布式_13


9、启动yarn

[root@slave1 local]#cd /usr/local/hadoop-2.6.0/sbin
[root@slave1 sbin]#./start-yarn.sh
[root@slave1 sbin]# jps   #使用jps命令可以查看java的相关进程

hadoop2.6.0 集群搭建_分布式_14

如果需要停止dfs 使用stop-dfs.sh

如果需要停止yarn 使用stop-yarn.sh


/*************************************再一次华丽分分割*********************************/

至此hadoop 的分布式模式部署的基本工作已完成,在浏览器中输入http://192.168.32.130:50070 访问hadoop的web界面,如图:

hadoop2.6.0 集群搭建_大数据_15


大数据技术QQ群:576216694

扫码入群:

hadoop2.6.0 集群搭建_大数据_16