您的位置:首页 > 大数据

海牛大数据教你Hadoop 如何批量操作多台服务器

2018-01-03 14:32 411 查看


原文地址:http://hainiubl.com/topics/80#reply42




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修改成功并生效

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: