deploy.sh工具的目的是,将一个文件,发送到其他服务器上面去。

runRemoteCmd.sh工具的目的是,将一个命令,在多台服务器上执行。

depoly.conf是上面两个工具的配置文件。

deploy.sh的源码:

#!/bin/bash
#set -x if [ $# -lt 3 ]
then
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
exit
fi src=$1
dest=$2
tag=$3
if [ 'a'$4'a' == 'aa' ]
then
confFile=/home/hadoop/tools/deploy.conf
else
confFile=$4
fi if [ -f $confFile ]
then
if [ -f $src ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
scp $src $server":"${dest}
done
elif [ -d $src ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
scp -r $src $server":"${dest}
done
else
echo "Error: No source file exist"
fi else
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
fi

  

runRemoteCmd.sh的源码

#!/bin/bash
#set -x if [ $# -lt 2 ]
then
echo "Usage: ./runRemoteCmd.sh Command MachineTag"
echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"
exit
fi cmd=$1
tag=$2
if [ 'a'$3'a' == 'aa' ]
then confFile=/home/hadoop/tools/deploy.conf
else
confFile=$3
fi if [ -f $confFile ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
echo "*******************$server***************************"
ssh $server "source /etc/profile; $cmd"
done
else
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
fi

  

depoly.conf文件

#第一列是linux的hostname,后面的列是该服务器支持的功能。
namenode1,all,namenode,resourcemanager,
namenode2,all,namenode,resourcemanager,
datanode1,all,datanode,zookeeper,journalnode,resourcemanager,
datanode2,all,datanode,zookeeper,journalnode,resourcemanager,
datanode3,all,datanode,zookeeper,journalnode,resourcemanager,

  

[hadoop@namenode2 conf]$ type cd deploy.sh
cd is a shell builtin
deploy.sh is /home/hadoop/tools/deploy.sh

具体例子

快速启动各个组件:(下面的组件首先都要配置环境变量,不然路径就要完整)
首先添加环境变量,同时增加两个工具,deploy.sh 和runRemoteCmd.sh

将.bashrc文件发送到所有服务器的当前目录:
[hadoop@datanode1 ~]$ deploy.sh .bashrc ~ all
分发执行工具,前提是要先做ssh免密:

启动datanode1,datanode2,datanode3三台服务器上的zookeeper:
[hadoop@namenode1 ~]$ runRemoteCmd.sh "zkServer.sh start" zookeeper

启动hdfs:
[hadoop@namenode1 ~]$ start-dfs.sh
启动后查看状态:
[hadoop@namenode2 ~]$ hdfs haadmin -getServiceState nn1
[hadoop@namenode2 ~]$ hdfs dfsadmin -safemode get

启动hbase:
[hadoop@namenode1 ~]$ start-hbase.sh

给大家看下在一台服务器上启动三台服务器的zookeeper的效果:

[hadoop@datanode1 tmp]$ runRemoteCmd.sh "zkServer.sh start" zookeeper
*******************datanode1***************************
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
*******************datanode2***************************
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
*******************datanode3***************************
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@datanode1 tmp]$

Linux虚拟机的命令分发工具。的更多相关文章

  1. Linux虚拟机常用命令

    参考原文链接:(https://blog.csdn.net/fanyun_01/article/details/51083585) 一.Linux虚拟机常用命令 # virsh list //查看已打 ...

  2. linux常用的命令和工具

    screen     管理会话工具 与之相似的工具还有tmux # screen // 进入一个回话 .还可以给会话取名 screen -S modify_screen #vim screen.txt ...

  3. linux虚拟机Ubuntu命令配置

    # netstat -ntl  # 查看端口号,改成 0.0.0.0才能进行远程访问 # sudo service redis-server restart  # 修改后需要重启服务 python2和 ...

  4. dart2native 使用Dart 在macOS,Windows或Linux上创建命令行工具

    下载dart2.6以上 >dart2native --help 编写源文件 // bin\main.dart main(List<String> args) { print('hel ...

  5. 吻逗死(windows)系统下自动部署脚本(for java spring*)及linux命令行工具

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10051647.html (^^)(^^)自動部署腳本原本在上個公司就在使用,由於近期同事需要手動部署一個Spr ...

  6. VMware的linux虚拟机实现和windows的文件共享

    使用的centos7和windows10,在虚拟机centos7中是root身份.由于是第一次用没有界面的linux,可谓是困难重重…… 一 打开VMware,然后选中你的虚拟机,我的是centos7 ...

  7. 在Linux下使用命令行打印文件

    近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...

  8. 微软开放技术发布针对 Mac 和 Linux 的更新版 Azure Node.JS SDK 和命令行工具

    发布于 2013-12-04 作者 Eduard Koller 这次为我们使用Linux 的朋友带来了更多关于部署云上虚拟机的消息.今天,微软开放技术有限公司 (MS Open Tech),想与大家分 ...

  9. [转]Linux下网络常用命令和工具

    转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...

随机推荐

  1. 既然 transform 不适用于某些内联元素,那咱们就把这些元素变成 inline-block 或 block 就行了。

    既然 transform 不适用于某些内联元素,那咱们就把这些元素变成 inline-block 或 block 就行了.

  2. TPC-H 测试参考

    https://github.com/digoal/pg_tpch  ---明天以此为准 https://www.jianshu.com/p/83e670cf3ffb https://yq.aliyu ...

  3. LibreOJ #528. 「LibreOJ β Round #4」求和

    二次联通门 : LibreOJ #528. 「LibreOJ β Round #4」求和 /* LibreOJ #528. 「LibreOJ β Round #4」求和 题目要求的是有多少对数满足他们 ...

  4. BAT 定时将多个本地文件同步到共享目录

    copy.bat 具体执行脚本,需要修改共享目录访问用户名,密码,同步的文件类型 list.txt   前面为本地文件夹,后面为共享目录,中间以”,”进行分割 附件地址: https://files. ...

  5. [WEB安全]伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP

    0x01 简介 一个用于伪造ip地址进行爆破的BurpSuite插件,burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景. 0x02 功能 伪造指定ip 伪造本地ip 伪造随机ip 随 ...

  6. 浅谈Python-IO多路复用(select、poll、epoll模式)

    1. 什么是IO多路复用 在传统socket通信中,存在两种基本的模式, 第一种是同步阻塞IO,其线程在遇到IO操作时会被挂起,直到数据从内核空间复制到用户空间才会停止,因为对CPython来说,很多 ...

  7. 【洛谷】P2261 [CQOI2007]余数求和

    题面?? 点我获得题面QAQ 我这个咕儿终于在csp初赛前夕开始学习数论了! 我是绝对不会承认之前不学数学是因为去年刚开始学OI的时候就跟yyq他们学莫比乌斯反演然后自闭的 分析 对于k mod i, ...

  8. jquery中清空

    jQuery("#map_bmmc").empty();   function qingkong(){         $("#form1").find(&qu ...

  9. 设计模式-Iterator

    本文参(chao)考(xi)<图解设计模式> 结城浩 (作者) 杨文轩 (译者) 1.Iterator 模式 迭代器作用于集合,是用来遍历集合元素的对象. 迭代器模式提供一种方法顺序访问一 ...

  10. 【转】JDK5.0中JVM堆模型、GC垃圾收集详细解析

    基本概念 堆/Heap JVM管理的内存叫堆:在32Bit操作系统上有4G的限制,一般来说Windows下为2G,而Linux下为3G:64Bit的就没有这个限制.JVM初始分配的内存由-Xms指定, ...