一、搭建环境

虚拟机数量:3台
操作系统:Ubuntu 14.04
Hadoop:Hadoop 2.2.0
Java:java version “1.7.0_51”

需要的安装包:
jdk:
hadoop 和 zookeeper:


二、实验内容及步骤

为方便阐述,本实验只搭建一个有三台主机的小集群。
三台机器的具体分工命名如下:

IP

主机名

功能角色

192.168.60.131

Master

namenode(控制节点)、JobTracker(工作分配)

192.168.60.132

slave1

datanode(数据节点)、TaskTracker(任务执行)

192.168.60.133

slave2

datanode(数据节点)、TaskTracker(任务执行)

主机网络结构图如下:

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建

实验环境:Ubuntu14.04,hadoop-2.2.0,java-1.7.0-openjdk-i386,ssh。

综述:Hadoop完全分布式的安装需要以下几个过程:

  1. 为防止权限不够,三台机器均开启root登录。
  2. 为三台机器分配IP地址及相应的角色。
  3. 对三台机器进行jdk安装并配置环境变量。
  4. 对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。
  5. 进行Hadoop集群完全分布式的安装配置。

下面对以上过程进行详细叙述。

安装过程中需要的安装包自行下载,注意将下面的ip、文件路径替换为自己的。


(一)JDK安装

1、解压
tar –zxvf jdk-7u67-linux-x64.tar.gz

2、修改/etc/profile文件
(1)vim /etc/profile
文件末尾加:

export JAVA_HOME=/zh/jdk1.7.0_67 
export JRE_HOME=/zh/jdk1.7.0_67/jre  
export PATH=$PATH:/zh/jdk1.7.0_67/bin  
export CLASSPATH=./:/zh/jdk1.7.0_67/lib

hadoop集群三台电脑搭建_hadoop_02


(2)使/etc/profile文件生效:

source /etc/profile

(3)验证JDK安装成功:

java –version

(4)按此步骤在集群剩余服务器中配置好JDK


(二)SSH安装

1、配置主机名与IP地址的对应
在三台主机上分别设置/etc/hostname:vim /etc/hostname修改为对应的master或slave。hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)。

修改/etc/hosts:vim /etc/hosts

hadoop集群三台电脑搭建_hadoop_03

hostname这个文件用于定义Ubuntu的主机名(不同ip对应的名字不同192.168.60.131对应master,192.168.60.132对应slave1,192.168.60.133对应slave2)。

2、在master节点上安装ssh

(1) sudo apt-get install ssh

(2)进入.ssh目录下面,在每台机器上执行:ssh-keygen -t dsa 之后一路回车,产生密钥;如果没有.ssh目录则在/home文件mkdir .ssh

hadoop集群三台电脑搭建_xml_04


(3)完成第二步后会产生两个文件:

id-dsa     #私钥
id-dsa.pub   #公钥

(4)在第一台机器的目录.ssh下执行命令,cat id_dsa.pub >> authorized_keys;此后.ssh下面会出现authorized_keys文件。
(5)然后将第一台机器的.ssh目录下面的authorized_keys文件拷贝到第二台计算机的.ssh目录下,如:scp authorized_keys slaver1:~/.ssh/
(6)再转到第二台机器的.ssh目录下,会发现刚刚传输过来的文件-authorized_keys,然后执行命令,将第二台计算机的公钥也加进来,如:cat id_dsa.pub >> authorized_keys.
(7)将第二台计算机新生成的authorized_keys传输第三台计算机,将第三台计算机的公钥-id-rsa.pub添加到从第二台计算机传过来的authorized_keys里面。
(8)依次类推,直至集群中的最后一台计算机。
(9)在集群的最后一台计算机执行完添加后,生成的authorized_keys文件就包含集群中所有计算机的公钥,如果以后还有机器加进到集群中来,可以直接添加到文件-authorized_keys。最后,将最后生成的authorized_keys复制到集群中的每一台计算机的.ssh目录下,覆盖掉之前的authorized_keys。
(10)完沉第九步后,就可以在集群中任意一台计算机上,免密码ssh登录到其他计算了。


(三)Hadoop搭建

三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。

1.解压hadoop,进hadoop中 /etc/hadoop/ 文件夹下面

2.需要配置的文件涉及到的有7个(mapred-site.xml.tmplate除外)如下图标示部分:

hadoop集群三台电脑搭建_配置文件_05


mapred-site.xml默认不存在的,可以复制相应的template文件获得。

cp mapred-site.xml.template marpred-site.xml

(1)配置文件1:hadoop-env.sh

修改JAVA_HOME值如下图:

hadoop集群三台电脑搭建_分布式_06

(2)配置文件2:yarn-env.sh

末尾添加JAVA_HOME值如下图:

hadoop集群三台电脑搭建_xml_07


(3)配置文件3:slaves(保存所有slave节点)删除localhost写入slave1,slave2:

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建_08


(4)配置文件4:core-site.xml

添加配置内容如下图:

<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hdfs_all/tmp</value>
</property>

hadoop集群三台电脑搭建_分布式_09


(5)配置文件5:hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 以下两个参数可以不进行配置,在2.20版本中只要在core-site.xml
文件中指定了hadoop.tmp.dir以下目录会自动生成在tmp目录中,但是为
了维护方便,有必要将其路径明确指定在配置文件中 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/software/hdfs_all/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/home/software/hdfs_all/dfs/data</value>
</property>

hadoop集群三台电脑搭建_hadoop_10


(6)配置文件6:mapred-site.xml

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

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建_11


(7)配置文件7:yarn-site.xml

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

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建_12


上面配置完毕后,基本上完成了90%的工作,剩下的就是复制。我们可以把整个hadoop复制过去使用命令如下:

scp -r hadoop-2.2.0/ slave1:/home/software
 scp -r hadoop-2.2.0/ slave2:/home/software

为方便用户和系统管理使用hadoop、hdfs相关命令,需要在/etc/environment配置系统环境变量,使用命令:vim /etc/environment

配置内容为hadoop目录下的bin、sbin路径,具体如下

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建_13


添加完后执行生效命令:source /etc/environment

下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。


(四)启动验证

在maser节点格式化namenode:hadoop namenode -format

启动hadoop:start-all.sh

使用Jps命令master有如下进程,说明配置正确

hadoop集群三台电脑搭建_hadoop_14


使用Jps命令slave1、slave2有如下进程,说明配置正确

hadoop集群三台电脑搭建_hadoop集群三台电脑搭建_15


查看分布式文件系统:http://master:50070

hadoop集群三台电脑搭建_配置文件_16


查看MapReduce:http://master:8088

hadoop集群三台电脑搭建_xml_17