一、搭建环境
虚拟机数量: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(任务执行) |
主机网络结构图如下:
实验环境:Ubuntu14.04,hadoop-2.2.0,java-1.7.0-openjdk-i386,ssh。
综述:Hadoop完全分布式的安装需要以下几个过程:
- 为防止权限不够,三台机器均开启root登录。
- 为三台机器分配IP地址及相应的角色。
- 对三台机器进行jdk安装并配置环境变量。
- 对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。
- 进行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
(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
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
(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除外)如下图标示部分:
mapred-site.xml默认不存在的,可以复制相应的template文件获得。
cp mapred-site.xml.template marpred-site.xml
(1)配置文件1:hadoop-env.sh
修改JAVA_HOME值如下图:
(2)配置文件2:yarn-env.sh
末尾添加JAVA_HOME值如下图:
(3)配置文件3:slaves(保存所有slave节点)删除localhost写入slave1,slave2:
(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>
(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>
(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>
(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>
上面配置完毕后,基本上完成了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路径,具体如下
添加完后执行生效命令:source /etc/environment
下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。
(四)启动验证
在maser节点格式化namenode:hadoop namenode -format
启动hadoop:start-all.sh
使用Jps命令master有如下进程,说明配置正确
使用Jps命令slave1、slave2有如下进程,说明配置正确
查看分布式文件系统:http://master:50070
查看MapReduce:http://master:8088