做系统运维的时候,我们经常需要同时在多台机器上执行相同的命令,这个时候可以使用类似pssh,pdsh的并行执行shell的工具。
当然,之前在没有使用这些工具之前,如果有ssh无密码互访,我们可以自己写for循环来执行,但是自己写的for循环是串行,
pdsh是并发。
比如,当你接管一个新的大数据集群的时候,需要做的一件事情就是要熟悉所有的配置信息,以做到心中有数,在熟悉了主配置文件之后,
我们需要比对datanode节点的配置文件是否一致,这个时候,我们可以使用pdsh.
pdsh –w dn[1-50] ‘md5sum /app/hadoop/etc/hadoop/core-site.xml’ | dshbak –c
直接列出相同组的datanode列表和不同的,一下子就可以看清楚哪些是相同的,哪些是不同的。
或者在troubleshooting问题的时候,比对系统配置文件是否一致。
在安装pdsh包的时候,会自带有一个工具pdcp并行复制工具,可以帮助进行并行的文件分发。
比如你在dn1上修改了一个mapred-site.xml的文件,然后需要把这个文件纷发到其他dn节点,可以这么做
pdcp –w dn[2-100] /pathtohadoop/etc/hadoop/mapred-site.xml /pathtohadoop/etc/hadoop/
即可,非常方便易用。
还可以做类似系统内核更新,你可以使用pdcp先把安装包纷发出去,然后通过pdsh执行安装命令,一下完成所有机器的安装。