centos7搭建hadoop集群之rsync和xsync[通俗易懂]

centos7搭建hadoop集群之rsync和xsync[通俗易懂]文章记录于各个服务器(或者虚拟机等)已经配置了ssh免密登录,可执行下面操作,未配置ssh免密登录,可参考:https://blog.csdn.net/yhblog/article/details/84029535此文章是基于centos7minimal版本的,纯净系统,所以还需要安装rsync工具(确保所有节点都必须安装rsync)否则报错:安装成功:启动rsync服务sys…

大家好,又见面了,我是你们的朋友全栈君。

文章记录于各个服务器(或者虚拟机等)已经配置了ssh免密登录,可执行下面操作,未配置ssh免密登录,可参考:https://blog.csdn.net/yhblog/article/details/84029535


此文章是基于centos7minimal版本的,纯净系统,所以还需要安装rsync工具(确保所有节点都必须安装rsync)
否则报错:
在这里插入图片描述

安装成功:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动rsync服务
systemctl start rsyncd.service
systemctl enable rsyncd.service

运行结果:
在这里插入图片描述


rsync(remote synchronization):意为把本机上的文件或者目录远程同步到其他服务器,通过过程中只会把需要同步的文件与远程服务器上的存放目录做对比(如果存在相同的文件或者目录会进一步比较其中的内容),远程服务器上没有的或者内容不同的才会同步过去,远程服务器上原来就有的也原封不动的存在

  • 原始操作命令: rsync -rvl local_file_path remote_username@remote_ip:remote_file_path
    注:remote_username为远程服务器上的在线用户,remote_ip可以换做主机名,前提是本机和远程服务器做了hosts映射

如:rsync -rvl /opt/module york@192.168.221.129:/opt/module
注:rsync -rvl 后面可以跟相对路径和绝对路径,但如果使用相对路径需要先进入到填写的路径的父目录(最好使用绝对路径)
在这里插入图片描述

  • 使用xsync脚本循环同步文件到各个目标节点的相同目录下(需要用户具有root权限或者直接使用root用户创建xsync)
    1.sudo创建xsync文件(root用户可直接创建)
    在这里插入图片描述
    2.创建需要同步测试的文件(分发到主机hadoop2和hadoop3)
    在这里插入图片描述
    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='d -P $(dirname $p1); pwd'
echo pdir=$pdir

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

#5 循环,这里host根据自己的节点数和主机名设置
for((host=2; host<4; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
  • 执行脚本
    在这里插入图片描述
  • 必须更改读写权限(使用sudo也不行)
    在这里插入图片描述
  • 执行成功(用root身份使用xsync命令,这里需要一次输入各个目标节点(需要分发文件的服务器)的root密码才能实现发送)
    在这里插入图片描述
    其他节点查看文件:
    在这里插入图片描述
    在这里插入图片描述
    注意:
  • 1.确保各个节点都安装了rsync工具并启动(针对minimal版本,因为此版本任何工具都需手动安装),可参考:https://blog.csdn.net/cdnight/article/details/78861543

  • 2.xsync用root用户执行时,在执行过程中需要输入其他节点的root用户密码,过于繁琐,可事先给本机root用户配置ssh,通过ssh-copy-id到其他节点,实现免密登录,然后执行xsync命令就不需要输入其他各个节点的root用户密码了,可参考:https://blog.csdn.net/yhblog/article/details/84029535
    下图是具有root权限的york用户,对york用户配置了ssh,可以直接执行不用输入其他用户密码:(如果除了root用户,其他用户不能执行xsync命令,就切换到root用户执行
    在这里插入图片描述
    在这里插入图片描述

  • rsync可以将文件远程同步到其他节点的特定目录下,而xsync一般是将本机上的文件所在目录位置远程同步到其他节点相同的目录下,不过上面xsync源码可以更改存放路径,如:本机文件位置是/opt/software/demo.txt,那么远程同步后,其他节点接收文件后的存放位置也是/opt/software,然后/opt/software目录有刚同步的文件demo.txt
    在这里插入图片描述
  • 3.远程同步后其他节点接收文件后,此文件的使用权限是root,其他用户必须具有root权限或者更改文件的使用权限,因为使用xsync命令时是root用户使用的(这是取决于上面脚本的内容,脚本里面取了user变量值,其他目标节点都有一个共同的用户,便于执行操作

    在这里插入图片描述
    比如下面是york用户使用的,则远程同步后文件的使用权限是york(当然,root具有最高权限,也可以操作任何文件):
    在这里插入图片描述
    在这里插入图片描述
    远程同步后各个目标节点接收文件后所属者:
    在这里插入图片描述
    在这里插入图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137184.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis逻辑删除[通俗易懂]

    mybatis逻辑删除[通俗易懂]github地址https://github.com/heng1234/mybatis_pluspom.xml<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.apache.org/POM/4.0.0″xmlns:xsi=”http://www.w3.org/2001/XMLSche…

    2022年6月2日
    25
  • java 自定义的类加载器_Java如何自定义类加载器[通俗易懂]

    java 自定义的类加载器_Java如何自定义类加载器[通俗易懂]我们可以编写自己的用于特殊目的的类加载器,这使得我们可以在向虚拟机传递字节码之前执行定制的检查。如何自定义类加载器如果想要编写自己的类加载器,只需要两步:继承ClassLoader类覆盖findClass(StringclassName)方法ClassLoader超类的loadClass方法用于将类的加载操作委托给其父类加载器去进行,只有当该类尚未加载并且父类加载器也无法加载该类时,才调用fin…

    2025年9月21日
    8
  • Java单例模式实现的两种方式和应用场景

    Java单例模式实现的两种方式和应用场景单例模式的定义个人理解,单例是指单个实例,在整个应用程序当中有且仅有一个实例存在,该实例是通过代码指定好的(自行创建的)。为什么要使用解决在高并发过程中,多个实例出现逻辑错误的情况。在特定的业务场景下避免对象重复创建,节约内存。实现的两种方式饿汉式顾名思义,不管有没有使用到该对象,只要程序启动成功,该单实例对象就存在。代码如下:/***饿汉式*/publicclassSingletonHungry{privatestaticSingletonHung

    2022年8月11日
    7
  • linux ftp命令大全,linux ftp命令详解[通俗易懂]

    linux ftp命令大全,linux ftp命令详解[通俗易懂]1.连接ftp服务器格式:ftp[hostname|ip-address]a)在linux命令行下输入:ftp192.168.1.1b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。c)也可以先输入ftpftp>d)然后在输入要连接的IPftp>open192.168.1.12.下载文件下载文件通常用get和mget这两条命令。a)get格式:get…

    2022年9月21日
    2
  • JMS activeMQ

    JMS activeMQ

    2022年3月3日
    35
  • 完全干净卸载mysql教程

    完全干净卸载mysql教程引言很多人因为第一次安装mysql导致安装错误,或者安装的数据库版本太高,比如mysql8.0版本,出现了很多问题,导致数据库无法使用,或者一些图形界面无法操作,想要卸载,重装稳定的mysql数据库,却是一件麻烦的事情,接下来教大家如何卸载有问题的mysq版本不限l,希望帮到大家,分为五步!个人微信公众号:源码客栈感兴趣可以关注下,更多视频资料教程!第一步卸载Mysql相关的应用程序打开控制面板-》找到程序和功能,看到所有和mysql相关的应用程序,右击卸载掉,有些人可能有workbench

    2022年6月16日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号