集群部署规划:
bigdata111 | bigdata112 | bigdata113 | |
HDFS | NameNode SecondaryNameNode DataNode | DataNode | DataNode |
YARN | ResourceManager NodeManager | NodeManager | NodeManager |
一、三台独立的伪分布式
上一节我们配置好了一台,现在我们配置三台做一个完全分布式。首先保证你的虚拟机里的系统都是关闭的;然后从bigdata111 那台机器直接克隆两台;直接克隆方便快捷,不仅安装的快,而且前面做的设置都保存下来了,不需要重复操作。
克隆,从关闭着的bigdata111克隆
选择创建完整的克隆
然后改名字、改存储位置
之后等待克隆完成即可。用这样的方式克隆两台,一台 bigdata112 一台 bigdata113 。
克隆后需要修改一些数据使得新克隆的 bigdata111 成为正真的 bigdata112 和 bigdata113 。先改主机名:
- hostnamectl set-hostname bigdata112
- hostname 查看是否改成功,显示bigdata112 说明修改成功
- vi /etc/sysconfig/network-scripts/ifcfg-ens33 进去之后修改ip,将原先的192.168.1.111改为192.168.1.112
- service network restart 重启网络设置
- ping www.baidu.com 查看能否访问外网
- ping 192.168.1.2 查看能否访问网关
由于bigdata111在前面设置的东西都设置过了,这里是克隆过来的,享有它的设置,因此很多地方都不要再配置了,修改了上面的 IP 之后,现在bigdata112 已经是一台独立的主机了。重新用 Xshell 连接 bigdata112,连接方法与之前的介绍的一样。
bigdata113 也做如上的修改,这样他也就成为了一台独立的主机了。现在我们就有三台独立的主机了。
二、三台主机的SSH免密登陆
三台主机不仅能自己免密登陆自己的主机,还可以免密登陆别的主机,因此各配置三遍一共需要配置九遍。
首先我们配置一下 bigdata112,使用命令 ssh-keygen -t rsa 生成公钥和私钥;这里注意一下,由于是克隆的,之前的bigdata111配置过SSH了,因此这时会提示是否覆盖,我们输入 yes 即可,其他的还是不要输入,全部回车;
然后就是使用命令 ssh-copy-id bigdata111 、ssh-copy-id bigdata112、ssh-copy-id bigdata113 分别将公钥拷贝给三台主机,包括自己。
拷贝完成之后我们检测一下是否成功,使用命令 ssh bigdata111 、ssh bigdata112 、ssh bigdata113查看各主机之间是否能互相切换,如果如下图所示则表示 bigdata112 能免密登陆其余的三台主机(包括自己)。
接下来,同样的方法去配置 bigdata111 和 bigdata113 。不出意外情况这两台也将配置好,接下来就是更改一下 hadoop的配置文件使其形成完全分布式。
三、三台主机下的HADOOP文件配置
注意,配置方式其实很简单,由于之前配置单台机器 bigdata111 时设置过了,而 bigdata112 和 bigdata113 是克隆过来的,因此可不用设置,但是 slaves 文件需要修改一下,这个设置的是 DataNode 可以在哪些主机上,由于我们设置的数据备份数是3,因此三台主机都需要放置 DataNode 节点,所以每台机器上的 slaves 文件可以这样设置:找到目录下的 slaves 文件并打开,修改成如下的形式
在这里顺便提一下,三台机器做同样的操作需要设置三遍,稍微有些麻烦,在 Xshell 里有个 同步窗口的功能,即可以在一个窗口上操作其余的窗口都同步执行,也就是只需操作一次而其它的主机也会生效:在 Xshell 的“工具 ---> 发送输入到所有会话”,这样在 bigdata111 上的操作也会同步到 bigdata112 和 bigdata113 上。
接下来的操作三台主机都是一样的,因此我们可以使用这个同步功能,一次设置三台生效。
有下图箭头所示的标志表明三个会话是同步的,由于新设置了namenode节点,因此需要格式化,但是格式化之前我们需要将原来的先删掉,bigdata111 和 克隆的 bigdata112、bigdata113已经是有伪分布式的,所以需要先将 data 和 logs目录下的文件删除掉,然后关掉同步,只在bigdata111 上执行格式化 namenode 节点操作。(因为NameNode分配在bigdata111上,所以需要在这台主机上执行格式化操作)
现在就可以在 bgdata111 上启动集群了,使用命令 start-all.sh 启动;这里注意一点,我们这里 HDFS 的NameNode 和 YARN 的 ResourceManager 都在 bigdata111 上,因此, start-all.sh 能够全部启动,但是如果他们没有配置在一台机器上时就需要分别在各自的主机上执行 start-dfs.sh 和 start-yarn.sh 来启动 HDFS 和 YARN。
启动过后分别用 jps 命令查看各主机的进程数:
可以看到,bigdata111 上的五个节点都已经启动了,bigdata112 和 bigdata 113 上的两个节点也已经启动了。
这样完全分布式就配置完成了。