1. 每个虚拟机设置静态IP
cd /etc/sysconfig/network-scripts/
ifconfig/ip add 查看网卡的硬件名称和基本信息
记下这个UUID
网卡配置例子
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.137.190"
NETMASK="255.255.255.0"
GATEWAY="192.168.137.1"
DNS="192.168.137.1"
NM_CONTROLLED="no"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
DEVICE="eth0"
UUID="ec7dbe05-3175-4f67-9a43-24b144ab51b5"
ONBOOT="yes"
VIM使用,按i进入编辑模式,按gg到文件的顶部,shift+g到文件的底部,dd删除光标所以行,u等于word里的ctrl+z,ctrl+r等于word里的ctrl+y
vim /etc/sysconfig/network-scripts/ifcfg-<网卡的硬件名称>
配置完的网卡文件
查看结果
原来的
注意修改完文件之后用systemctl restart network.service重启网络服务,当前的ssh就连接不上了,是因为网络IP被改变成你自己设置的静态IP了
修改完成再连接,用ip add查看修改完成的结果
如果上不了网执行以下操作。
cat /etc/resolv.conf 查看nameserver是否被设置正确
systemctl stop NetworkManager.service 停止NetworkManager服务
systemctl disable NetworkManager.service 并设置成开机不启动
systemctl restart network.service 之后重启网络服务
vim /etc/resolv.conf 修改文件,如果不存在nameserver就在文件下面添加,如果存在就修改,把nameserver 设置成自己对应的DNS
2. 修改每个机器的主机名#
修改另外3台的主机名
hostnamectl set-hostname s1.hadoop
3. 配置HOSTS文件#
修改/etc/hosts文件
vim /etc/hosts,把刚才配置的固定IP加到文件里
把其他3台机器的hosts文件也修改成上面这个样子
复制虚拟机!!!
4. 批量执行与批量分发脚本使用
首先切换到hadoop用户
ssh到别一台机器上执行命令全,例子:ssh hadoop@s1.hadoop hostname
scp一个文件到别一台机器上,例子:scp /home/hadoop/1 hadoop@s1.hadoop:/home/hadoop/
把hadoop_op1.zip文件用rz命令上传到nn1.hadoop机器上
一般先切换到当前使用用户的home目录下
cd/cd ~
unzip hadoop_op1.zip
解压
chmod -R 777 ./hadoop_op1 修改解压之后的文件权限
测试批量SSH命令
./ssh_all.sh hostname
测试批量传文件
首先在/home/hadoop/up/目录下创建个测试文件,这里的文件是“1”
./scp_all.sh ./up/1 /tmp/
可以用./ssh_all.sh cat /tmp/1用这个命令去验证
5. 单机hadoop用户加上免密码切换root用户#
1).sed -i 's/#auth\t\trequired\tpam_wheel.so/auth\t\trequired\tpam_wheel.so/g' '/etc/pam.d/su'
修改/etc/pam.d/su文件,将“#auth\t\trequired\tpam_wheel.so”,替换成“auth\t\trequired\tpam_wheel.so”
2).cp /etc/login.defs /etc/login.defs_back 先备份一个
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs 把“SU_WHEEL_ONLY yes”字符串追加到/etc/login.defs文件底部
tail /etc/login.defs 从文件底部查看
3).usermod -a -G wheel hadoop 把hadoop用户加到wheel组里
4).groupmems -g wheel -l 使用这个命令查看wheel组里是否有hadoop用户
5).新建一个hainiu用户验证一下
输入密码之后提示无SU权限,即使密码正确也不好使
6).sed -i 's/#auth\t\tsufficient\tpam_wheel.so/auth\t\tsufficient\tpam_wheel.so/g' '/etc/pam.d/su'
修改/etc/pam.d/su文件将字符串“#auth\t\tsufficient\tpam_wheel.so”替换成“auth\t\tsufficient\tpam_wheel.so”
7).验证免密码切换到root用户
6. 给每个机器的hadoop用户加上免密码切换root用户#
配置好每个机器的root ssh免密钥登录
然后在nn1.hadoop机器上切换到root用户
把批量执行脚本用rz上传到root用户的根目录下
用unzip hadoop_op1.zip把文件解压出来
删除没用的只留下以下有用的,并对有用的脚本加上可执行权限chmod -R +x ~/hadoop_op1
修改脚本 vim ssh_all.sh,将使用用户修改为root用户
修改脚本vim scp_all.sh,将使用用户修改为root用户
注:在Linux中wheel组就类似于一个管理员的组。将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户
剥夺普通用户切换root用户
用ssh_all.sh脚本批量修改 /etc/pam.d/su 文件,找到auth required pam_wheel.so use_uid 这一行,将行首的“#”去掉。
~/hadoop_op1/ssh_all.sh sed -i \'s/#auth\t\trequired\tpam_wheel.so/auth\t\trequired\tpam_wheel.so/g\' \'/etc/pam.d/su\'
使用~/hadoop_op1/ssh_all.sh head /etc/pam.d/su 查看每个机器上是否修改成功
修改 /etc/login.defs 文件,在最后一行增加“SU_WHEEL_ONLY yes”语句。
~/hadoop_op1/ssh_all.sh "echo \"SU_WHEEL_ONLY yes\" >> /etc/login.defs"
使用~/hadoop_op1/ssh_all.sh tail /etc/login.defs 查看每个机器上是否修改成功
指定某用户能切换到root用户,就将他加到wheel组里
~/hadoop_op1/ssh_all.sh usermod -a -G wheel hadoop
从wheel组移出就不能切换到root用户了
~/hadoop_op1/ssh_all.sh gpasswd -d hadoop wheel
查看wheel组下的用户,也就是能切换到root的用户有那些
使用~/hadoop_op1/ssh_all.sh groupmems -g wheel -l查看每个机器上是否添加成功
解释:如果换成一个不属于wheel组的用户时,执行了su命令后,即使输入了正确的root密码,也无法登录为root用户--普通用户登录为root用户的权限被完全剥夺了
切换到root用户时免密登录
修改 /etc/pam.d/su 文件,找到auth sufficient pam_wheel.so trust use_uid 这一行,将行首的“#”去掉。
~/hadoop_op1/ssh_all.sh sed -i \'s/#auth\t\tsufficient\tpam_wheel.so/auth\t\tsufficient\tpam_wheel.so/g\' \'/etc/pam.d/su\'
使用~/hadoop_op1/ssh_all.sh head /etc/pam.d/su查看每个机器上是否修改成功
7. 在hadoop用户状态下,如何在每个机器上使用root权限去执行命令#
切换到hadoop用户下,并用rz上传exe.sh脚本
然后使用~/hadoop_op1/scp_all.sh ~/hadoop_op1/exe.sh /home/hadoop/
把exe.sh复制到每个机器上
然后使用~/hadoop_op1/ssh_all.sh ls /home/hadoop/每个机器上文件是否被分发成功
使用vim将ssh_root.sh里的ssh用户更改成hadoop
然后使用ssh_root.sh测试一下每台机器是否能从hadoop用户切换到root权限
~/hadoop_op1/ssh_root.sh groups,每台机器切换到root用户并打印root用户所属组
8. 修改每个机器的HOSTS文件#
在nn1.hadoop机器上使用hadoop用户将/etc/hosts文件拷贝到/tmp目录下
cp /etc/hosts /tmp
使用~/hadoop_op1/scp_all.sh /tmp/hosts /tmp/,把nn1.hadoop上配置好的host拷贝到每台机器的/tmp目录下
使用~/hadoop_op1/scp_all.sh ~/hadoop_op1/up/hosts_op.sh /tmp/,把hosts_op.sh脚本拷贝到每台机器的/tmp目录下
使用~/hadoop_op1/ssh_all.sh ls -all /tmp/确认这两个文件是否拷贝成功,并查看hosts_op.sh脚本是否拥有执行权限
使用 ~/hadoop_op1/ssh_all.sh mv /tmp/hosts /tmp/hosts_log,把每台机器上的tmp目录下的hosts文件重命名为hosts_log
使用 ~/hadoop_op1/ssh_all.sh ls /tmp/ 查看是否重命名成功
使用~/hadoop_op1/ssh_root.sh /tmp/hosts_op.sh,把每个机器上的hosts文件进行配置好的,也就是hosts_log的内容
使用~/hadoop_op1/ssh_root.sh cat /etc/hosts,查看每台机器上的hosts文件是否修改成功
也可以使用~/hadoop_op1/ssh_all.sh ping -c 1 nn1.hadoop,查看每台机器是否能ping通nn1.hadoop,如果能ping通表示hosts修改成功并生效
来自海牛部落-青牛,http://hainiubl.com/topics/80