- centOS禁止开启防火墙
systemctl stop firewalld.service # 关闭firewall
systemctl disable firewalld.service # 禁止firewall开机启动
输出
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
- 下面的问题是批量执行命令。
首先想起scp命令,进一步研究发现是security copy的意思。跨机器读写,用scp命令。Ref: https://www.cnblogs.com/likui360/p/6011769.html
但是,批量发送命令怎么办?想起的操作手册文档,里面有个pssh。百度了一下。
安装pssh
由于google屏蔽,我先下载到本地,然后通过MobaXterm中的sftp上传到主节点。后面的步骤一样的。主要要切换到root账号,不然权限不够。安装完毕以后,查看pssh版本。1
2
3
4
5wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
tar xf pssh-2.3.1.tar.gz
cd pssh-2.3.1/
python setup.py install
pssh --version配置IP映射
有一个相似的任务是修改主机名,比如master,slave01,slave02
修改自己所用节点的IP映射
- SSH免密钥登陆
scp ~/.ssh/id_rsa.pub root@slave01:/root
这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。
首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):1
2
31. cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
2. rm ./id_rsa* # 删除之前生成的公匙(如果有)
3. ssh-keygen -t rsa # 一直按回车就可以
Shell 命令
让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:1. cat ./id_rsa.pub >> ./authorized_keys
Shell 命令
完成后可执行 ssh Master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:1. scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
Shell 命令
scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:
通过scp向远程主机拷贝文件
接着在 Slave1 节点上,将 ssh 公匙加入授权:1
2
31. mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
2. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
3. rm ~/id_rsa.pub # 用完就可以删掉了
Shell 命令
如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。
这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验,如下图所示:1. ssh Slave1
- 批量发送命令测试
pssh -h /root/hosts -i uptime
Ref:
[1]. pssh命令: http://man.linuxde.net/pssh
[2]. Linux下批量管理工具pssh: https://blog.csdn.net/chengxuyuanyonghu/article/details/64457409
- 批量关闭防火墙
还是不敢尝试,但是测试了新建和删除文件夹,是成功的。
pssh -h /root/hosts -i mkdir /testpssh
pssh -h /root/hosts -i rm -rf /testpssh