Hadoop之编写集群分发脚本

目录

1.scp 安全拷贝

2.rsync 远程同步工具

3.xsync集群分发脚本(名字可以随便起)


我们在搭建Hadoop完全分布式集群的过程中,要修改很多配置文件或者是安装很多软件,在这个过程中,如果集群数量很大,我们不能把每个节点都编辑一遍,这样既费时又容易出错。因此本文将讲解一个集群分发脚本,只要在一个节点编辑好,再通过分发脚本发送给其他节点就可以了。

(注意:这里因为xsync脚本代码的问题,我把主机名hadoop01、hadoop03和hadoop04分别改成hadoop101、hadoop103和hadoop104,前面相应的配置文件如slaves、hosts、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、windows主机映射文件也要修改)

1.scp 安全拷贝

(1)定义

  scp可以实现服务器与服务器之间的数据拷贝。(from hadoop01 to hadoop03)

(2)基本语法

scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname

命令   递归       要拷贝的文件路径/名称             目的用户@主机:目的路径/名称
                  (永远都是源数据)                (后面永远是目的地数据)

(3)例子

  ①在hadoop01上,将hadoop01(/usr/text)上的个文件拷贝到hadoop03(/usr/text)上

[root@hadoop01 usr]# scp -r text root@hadoop03:/usr

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

②在hadoop03上,将hadoop01(/usr/text)上的个文件拷贝到hadoop03(/usr/text)上

[root@hadoop03 text]# scp -r root@hadoop01:/usr/text ./

./是拷贝到当前目录

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

③在hadoop03上,将hadoop01(/usr/text)上的个文件拷贝到hadoop04(/usr/text)上

[root@hadoop03 usr]# scp -r root@hadoop01:/usr/text root@hadoop04:/usr

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

 

  注意:拷贝过来的文件,可以根据需要修改所有者和所有者组。如果是拷贝配置文件,别忘source一下/etc/profile。

2.rsync 远程同步工具

(1)定义

  rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。​​​​​​​

(2)rsync和scp的区别

  用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新,scp是把所有文件都复制过去

(3)基本语法

rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令     选项参数   要拷贝的文件路径/名称             目的用户@主机:目的路径/名称
                      (源数据)                         (目的地址)

(4)参数列表

选项功能
-r

递归

-v显示复制过程
-l拷贝符号连接

(5)例子

  把hadoop01上的/usr/text/里新建的文件(3333)目录同步到hadoop03中/usr/text下

[root@hadoop01 usr]# rsync -rvl /usr/text/ root@hadoop03:/usr/text

3.xsync集群分发脚本(名字可以随便起)

(1)需求:循环复制文件到所有节点的相同目录下

(2)创建:在/usr/local/bin目录下创建了xsync文件

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

(3)修改脚本 xsync 具有执行权限

[root@hadoop101 bin]# chmod 777 xsync

(4)调用脚本形式

xsync 文件名称
[root@hadoop101 bin]# xsync /usr/text

至此,分发成功!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Ansible实施DevOps 2有助于实现更高效的软件开发和运维流程。Ansible是一款开源的自动化工具,它提供了一种简单而强大的方式来自动化配置管理、应用部署和任务协调。 首先,使用Ansible可以实现基础设施即代码(Infrastructure as Code)。通过编写Ansible Playbooks,可以将整个基础设施的配置进行版本控制,并将其文档化。这样,团队成员可以更容易地理解和复制该基础设施。使用Ansible还可以轻松地在不同环境(例如开发、测试和生产)之间进行配置代码的复用,减少了配置的冗余和手动操作的错误。 其次,Ansible可以实现自动化部署。使用Ansible Playbooks,可以减少手动操作,从而降低了人为错误的风险。通过定义各个部署步骤和依赖关系,可以确保每个部署流程的一致性和可靠性。此外,Ansible还支持滚动更新,在保持应用的可用性的同时逐步更新。 此外,Ansible具有良好的扩展性和灵活性。能够与各种不同的工具和平台集成,例如CI/CD工具、云平台和容器管理器(如Docker和Kubernetes)。这使得在DevOps中使用Ansible更加方便,可以根据需要定制个性化的自动化流程。 最后,Ansible还提供了丰富的日志和报告功能,可以帮助团队追踪和分析各个任务的执行情况,以及及时发现和解决问题。这些日志和报告可以与监控和告警系统集成,以最大限度地减少对人工干预的需求,提高故障排查和修复的效率。 总而言之,使用Ansible实施DevOps 2可以帮助团队提高软件开发和运维效率,减少人为错误,并实现更好的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值