hadoop分布式集群的搭建
程序员文章站
2022-05-07 18:56:57
...
1、实验目的与环境
1.1实验目的
搭建hadoop分布式集群
1.2实验环境
Linux版本:Centos6.5
Jdk版本:jdk7
Hadoop版本:hadoop2.6
使用工具:SecureCRT,vmware12
2、步骤
2.1配置网络环境
(1)
安装完成三台centos机器后,为它们分别配置网络环境。
虚拟机网络配置选用vmnet0,通过setup命令设置静态ip和dns服务器。
如下:
分别为三台机器配置ip为192.168.1.110,192.168.1.111,192.168.1.112
(2)
开启eth0的网卡。
输入命令如下:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
将eth0网卡的ONBOOT=no修改为ONBOOT=yes
将BOOTPROTO=no修改为BOOTPROTO=yes
完成后重启网卡:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(3)
输入ifconfig测试。
说明网络配置成功。
(4)
同理,另外两台机器也是一样的方式配置。完成网络的配置后就可用SecureCRT工具进行远程登录了。
(5)Centos默认情况下的防火墙会阻止机器间进行通信,也不会开放hadoop用到的端口。所以为了方便,这里直接将防火墙关闭。
临时关闭防火墙命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
若想永久关闭防火墙,可输入命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(6)修改主机名并添加域名映射
本次实验hadoop分布式由三台centos组成,其中一台作为主节点master,另外两台作为从节点slave,所以为了更直观,分别修改主机名为master,slave1,slave2.
输入hastname可以查看当前机器名字。
修改主机名方式:
vim /etc/sysconfig/network
将hostname修改为需要的名字。
添加域名映射,需要修改/etc/hosts文件。输入:
vim /etc/hosts
在每台机器都执行如上操作并添加如图所示的三句,使得对应的主机名能与ip映射。
完成域名映射后,就可以使用其中一台机器直接通过名字ping通另外两台机器了。
2.2
建立集群间的SSH无**认证
SSH的配置并不是必须的步骤,但是后续的操作需要在机器间传送文件或者集群在启动过程中需要启动从节点,为避免频繁输入密码,可以配置SSH无**认证。
配置过程:
(1)在每台机器输入:
ssh-****** -t rsa
(2)
在每服务器上将公钥复制到需要免验证登录的服务器上
进入ssh目录:
cd ~/.ssh
类似下面在各台机上依次输入:
ssh-copy-id -i id_rsa.pub "-p 22 aaa@qq.com"
ssh-copy-id -i id_rsa.pub "-p 22 aaa@qq.com"
ssh-copy-id -i id_rsa.pub "-p 22 aaa@qq.com"
(3)测试
完成配置后,可通过ssh
主机名的方式尝试登录到另一台机器,如果不需要输入密码即可登录,所以配置成功。
创建新的用户hadoop,使用useradd
hadoop新建用户,使用passwd hadoop为新用户设置密码。并且可以为hadoop用户配置ssh免**登录。方式同上。这样使用hadoop用户时使用scp
ssh等相关命令时可以不需要频繁输入密码。
2.3
安装JDK
(1)下载jdk
Centos自带openjdk,一般不使用自带的jdk版本。可以自己卸载,并安装自己下载的jdk。可以去oracle官网下载jdk的rpm包或者gz包。本次实验的jdk版本为1.7。我下载的是jdk-7u79-linux-x64.gz
并通过SecureCRT工具的sftp功能将该包传输到master的/user/local目录下。
(2)解压
tar -zxvf jdk-7u79-linux-x64.gz
(3)设置环境变量
vim /etc/profile
在该文件尾添加jdk安装目录并添加到path如下:
刚配置完的环境变量并不会立即生效,可以重启或者输入如下命令让其立即生效:
source /etc/profile
- 测试
输入java -version,如果出现如下界面,说明配置成功。
2.4
搭建hadoop环境
(1)下载hadoop安装包
可以去hadoop官网下载。本次实验我用的hadoop版本为hadoop-2.6.0。同样使用sftp将该文件复制到master的hadoop用户目录下,即/home/hadoop。
(2)解压
source /etc/profile
(3)配置hadoop-env.sh
进入安装目录下的etc/hadoop,可以看到有许多配置文件,接下来就是要对其中的文件进行修改配置。
修改hadoop-env.sh下hadoop的jdk变量配置:
vim hadoop-env.sh
将JAVA_HOME的值改为具体的jdk安装位置。
改为:
(4)修改core-site.xml
在<configuration>
标签中添加如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.6.0/tmp</value>
</property>
</configuration>
其中第一个配置的是hdfs的访问路径,第二个配置的是数据文件存放的路径。
(5)修改mapred-site.xml
由于hadoop默认提供的是样本文件,名字为:mapred-site.xml.template,并不会起效,所以需要修改该文件名字,再进行配置。
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
在<configuration>
标签中添加如下内容:
<configuration>
<property>
<name>mapreduce.framawork.name</name>
<value>yarn</value>
</property>
</configuration>
选用mapreduce的资源调度yarn。
(6)修改yarn-site.xml
在<configuration>
标签中添加如下内容:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
配置资源主服务器的位置和相应的策略。
(7)修改hdfs-site.xml
在<configuration>
标签中添加如下内容:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-2.6.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.6.0/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
配置dfs副本的数量以及相关datanode和namenode存放路径。
(8)修改slaves文件
vim /home/hadoop/hadoop-2.6.0/etc/hadoop/slaves
删除原有内容,并添加如下:
这个文件是配置从节点的。我的从节点是名字为slave1和slave2的两台机器。
如果你没有配置ip与域名映射,这里就必须写具体的ip地址。
(9)将配置好的hadoop-2.6.0文件夹通过scp发送给另外两台slave机器的/home/hadoop目录下。
由于我用hadoop用户配置了ssh,所以这一步不需要输入密码验证
scp -r hadoop-2.6.0/ aaa@qq.com:/home/hadoop/
scp -r hadoop-2.6.0/ aaa@qq.com:/home/hadoop
-r表示传输的是文件夹
(10)修改环境变量
切换回root用户,输入:vim
/etc/profile,修改如下:
三台机器做同样修改
输入source /etc/proflie让配置立即生效。
到此。整个hadoop的环境配置基本完成了。
3、测试集群
第一次启动需要格式化主节点命名空间。
输入命令:
hadoop namenode -format
启动集群,可以分别启动dfs和yarn:start-dfs.sh
和start-yarn.sh
也可以一次性启动:start-all.sh
如果没有配置hadoop的path环境变量,需要进入hadoop安装目录的sbin下运行该命令。
可以看到在启动过程相继启动了salve1和slave2这两台机器的datanode,由于配置了ssh,所以这一步无需输入密码。
分别在三台机器上输入jps查看当前进程:
可以看到,Namenode服务节点和资源服务都位于主节点master机上,而dataNode数据节点位于两台从节点机器上。
测试文件上传:
将原先master机上的hadoop压缩包上传
输入hadoop的hdfs命令:
hadoop fs -put hadoop-2.6.0.tar.gz hdfs://master:9000/
将该文件上传到hdfs文件系统。
输入:hadoop fs -ls /
查看hdfs上的文件情况:
同样,slave机器上也能看到相同的文件,说明集群搭建成功。
打开电脑本机的浏览器,输入:http://192.168.1.110:50070/
(由于window系统并没有配置master与其ip的映射,所以这里必须使用具体ip地址访问)
点击Utilities下的Browse
the file system,可以查看到刚刚上传的文件。
这说明集群搭建成功了。