1. 在主机 MacBook 上设置 HOST
前文书已经把虚拟机的静态 IP 地址设置好, 以后可以通过 ip 地址登录了. 不过为了方便, 还是设置一下, 首先在 Mac 下修改 hosts 文件, 这样在 SSH 时就不用输入 ip 地址了.
sudo VIM /etc/hosts
或者
sudo VIM /private/etc/hosts
这两个文件其实是一个, 是通过 link 做的链接. 注意要加上 sudo, 以管理员运行, 否则不能存盘.
- ##
- # Host Database
- #
- # localhost is used to configure the loopback interface
- # when the system is booting. Do not change this entry.
- ##
- 127.0.0.1 localhost
- 255.255.255.255 broadcasthost
- ::1 localhost
- 50.116.33.29 Sublime.wbond.NET
- 127.0.0.1 windows10.microdone.cn
- # Added by Docker Desktop
- # To allow the same kube context to work on the host and the container:
- 127.0.0.1 kubernetes.docker.internal
- 192.168.56.100 hadoop100
- 192.168.56.101 hadoop101
- 192.168.56.102 hadoop102
- 192.168.56.103 hadoop103
- 192.168.56.104 hadoop104
- # End of section
2. 复制虚拟机
然后我们需要由上次配好的这一台虚拟机, 复制出来多台, 以便形成一个集群. 首先关闭虚拟, 在上面点右键, 选复制, 出现如下对话框, 我选择把所有网卡都重新生成 Mac 地址, 以便模拟完全不同的计算器环境.
3. 修改每一台的 HOST, IP 地址
复制完毕后, 记得登录到虚拟机, 按照前面提到的方法修改一下静态 IP 地址, 免得 IP 地址冲突.
- vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
- vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
另外, 最好也在每台 Linux 虚拟机里也设置一下 HOSTNAME, 以便这些虚拟机之前相互通讯时也可以使用 hostname. 需要依次把几台机器的 hostname 都设置好.
- [root@hadoop101 ~]# hostnamectl set-hostname hadoop107
- [root@hadoop101 ~]# hostname
- hadoop107
4. xcall 让服务器集群同时运行命令
因为我们同时有好几台机器, 如果挨个挨个的登录上去操作, 难免麻烦, 可以写个 shell 脚本, 以后从其中一台发起命令, 让所有机器都执行就方便多了. 下面是个例子. 我有 hadopp100,hadopp101,hadopp102,hadopp103,hadopp104 这个五台虚拟机. 我希望以 hadopp100 为堡垒, 统一控制所有其他的机器. 在 / user/local/bin 下创建一个 xcall 的文件, 内容如下:
- touch /user/local/bin/xcall
- chmod +x /user/local/bin/xcall
- vi /user/local/bin/xcall
- #!/bin/bash
- pcount=$#
- if((pcount==0));then
- echo no args;
- exit;
- fi
- echo ---------running at localhost--------
- $@
- for((host=101;host<=104;host++));do
- echo ---------running at hadoop$host-------
- SSH hadoop$host $@
- done
- ~
比如我用这个 xcall 脚本在所有机器上调用 pwd 名称, 查看当前目录, 会依次提示输入密码后执行.
- [root@hadoop100 ~]# xcall pwd
- ---------running at localhost--------
- /root
- ---------running at hadoop101-------
- root@hadoop101's password:
- /root
- ---------running at hadoop102-------
- root@hadoop102's password:
- /root
- ---------running at hadoop103-------
- root@hadoop103's password:
- /root
- ---------running at hadoop104-------
- root@hadoop104's password:
- /root
- [root@hadoop100 ~]#
5. scp 与 rsync
然后我们说一下 scp 这个工具. scp 可以在 Linux 间远程拷贝数据. 如果要拷贝整个目录, 加 -r 就可以了.
- [root@hadoop100 ~]# ls
- anaconda-ks.cfg
- [root@hadoop100 ~]# scp anaconda-ks.cfg hadoop104:/root/
- root@hadoop104's password:
- anaconda-ks.cfg 100% 1233 61.1KB/s 00:00
- [root@hadoop100 ~]#
另外还可以用 rsync, scp 是不管目标机上情况如何, 都要拷贝以便. rsync 是先对比一下, 有变化的再拷贝. 如果要远程拷贝的东西比较大, 用 rsync 更快一些. 不如 rsync 在 CentOS 上没有默认安装, 需要首先安装一下. 在之前的文章中, 我们的虚拟机已经可以联网了, 所以在线安装就可以了.
[root@hadoop100 ~]# xcall sudo yum install -y rsync
比如, 把 hadoop100 机器上的 java sdk 同步到 102 上去:
[root@hadoop100 /]# rsync -r /opt/modules/jdk1.8.0_121/ hadoop102:/opt/modules/jdk1.8.0_121/
好了, 到现在基本的工具和集群环境搭建起来了, 后面就可以开始 hadoop 的学习了.
来源: https://www.cnblogs.com/junqilian/p/11525454.html