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

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

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

deploy.sh的源码:

  1. #!/bin/bash
  2. #set -x
  3.  
  4. if [ $# -lt 3 ]
  5. then
  6. echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
  7. echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
  8. exit
  9. fi
  10.  
  11. src=$1
  12. dest=$2
  13. tag=$3
  14. if [ 'a'$4'a' == 'aa' ]
  15. then
  16. confFile=/home/hadoop/tools/deploy.conf
  17. else
  18. confFile=$4
  19. fi
  20.  
  21. if [ -f $confFile ]
  22. then
  23. if [ -f $src ]
  24. then
  25. for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
  26. do
  27. scp $src $server":"${dest}
  28. done
  29. elif [ -d $src ]
  30. then
  31. for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
  32. do
  33. scp -r $src $server":"${dest}
  34. done
  35. else
  36. echo "Error: No source file exist"
  37. fi
  38.  
  39. else
  40. echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
  41. fi

  

runRemoteCmd.sh的源码

  1. #!/bin/bash
  2. #set -x
  3.  
  4. if [ $# -lt 2 ]
  5. then
  6. echo "Usage: ./runRemoteCmd.sh Command MachineTag"
  7. echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"
  8. exit
  9. fi
  10.  
  11. cmd=$1
  12. tag=$2
  13. if [ 'a'$3'a' == 'aa' ]
  14. then
  15.  
  16. confFile=/home/hadoop/tools/deploy.conf
  17. else
  18. confFile=$3
  19. fi
  20.  
  21. if [ -f $confFile ]
  22. then
  23. for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
  24. do
  25. echo "*******************$server***************************"
  26. ssh $server "source /etc/profile; $cmd"
  27. done
  28. else
  29. echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
  30. fi

  

depoly.conf文件

  1. #第一列是linux的hostname,后面的列是该服务器支持的功能。
  2. namenode1,all,namenode,resourcemanager,
  3. namenode2,all,namenode,resourcemanager,
  4. datanode1,all,datanode,zookeeper,journalnode,resourcemanager,
  5. datanode2,all,datanode,zookeeper,journalnode,resourcemanager,
  6. 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. MySQL-linux系统下面的配置文件

    一般linux 上都放在 /etc/my.cnf   ,window 上安装都是默认可能按照上面的路径还是没找到, window 上  可以登录到mysql中  使用   show variables ...

  2. learning java AWT EventQs

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Ac ...

  3. AJAX备忘

    基础 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX ...

  4. RookeyFrame 隐藏 首次加载菜单 的伸缩动画

    一进入系统,然后点击菜单“系统管理”,会看到展开的“系统设置”菜单,又缩回去了,每次都会有(处女座看到就想改). 隐藏这个动画的JS:jquery.easyui.min.js,这个JS里面有个方法“_ ...

  5. (26)打鸡儿教你Vue.js

    weex框架的使用 1.weex开发入门 2.weex开发环境搭建 3.掌握部分weex组件模块 4.了解一些vue基本常见语法 5.制作一个接近原生应用体验的app weex介绍 安装开发环境 We ...

  6. Dart 日期时间 DateTime

    1.获取当前时间 var now = new DateTime.now(); print(now); // 2019-06-20 16:59:05.560543 2.设置时间 var d =new D ...

  7. C# 清除sqlite密码

    C# 清除sqlite密码 .创建空的sqlite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = ...

  8. 常用命令备忘 xargs

    xargs 作为使用率很高的命令,但是长久不用就会模糊了记忆,所以要记录下来. 获取所有的cobbler相关的布尔值然后全部设置为真 getsebool -a|grep cobbler|awk '{p ...

  9. Large-Scale Oil Palm Tree Detection from High-Resolution Satellite Images Using Two-Stage Convolutional Neural Networks(worldview油棕树检测)

    不是目标检测也不是语义分割,两步CNN指的是,采集的数据是一堆点,以点为中心的65*65和17*17图像范围大小来判断这个点是否是油棕树.第一步就是判断65*65的范围是否为(油棕树植被群,其他植被/ ...

  10. [ZJOI2007][BZOJ1060]时态同步

    Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...