集群之间文件同步(for Linux)(三)

2023-11-05

1. 准备工作

1.1 防护墙设置

1. 关闭各主机的防火墙

systemctl stop firewalld

2. 禁止防火墙开机自启动

systemctl disable firewalld

1.3 重启服务

reboot

1.4 查看防火墙状态

systemctl status firewalld

1.5 关闭Selinux

vim /etc/sysconfig/selinux

将 SELINUX=enforcing 改成 SELINUX=disabled

1.2 各集群系统文件夹创建

hadoop103与hadoop104 两个系统分别在/opt目录下创建两个目录module与software

 

1.3 修改/etc//hosts文件

问题: 

集群中的每一个虚拟机都要修改/etc//hosts文件,添加所有的虚拟机到文件中其他虚拟机访问

问题解决:

# 在/etc/hosts文件中添加集群主机IP地址+hostname+别名
[root@hadoop102 ~]$ vim /etc/hosts

# 添加的内容
192.168.100.102 hadoop102 hadoop102
192.168.100.103 hadoop103 hadoop103
192.168.100.104 hadoop104 hadoop104

2. scp (secure copy) 安全拷贝

2.1 scp定义

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

2.2 基本语法

scp      -r      $pdir/$fname         $user@host:$pdir/$fname
命令     递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

2.3 案例

前提: 
1. 有三台服务器集群(hadoop102,hadoop103,hadoop104)
2. 都已经创建好的/opt/module、/opt/software两个目录,并且已经把这两个目录修改为atguigu:atguigu
3. 其中hadoop102中已安装有jdk与hadoop,现在要拷贝到另外两台服务器中。

案例一: 在hadoop102机器上拷贝jdk到hadoop103机器中

# 将hadoop102服务器的jdk拷贝到hadoop103的/opt/module/目录下
[root@hadoop102 module]$ scp -r jdk1.8.0_131/ root@hadoop103:/opt/module/
需要输入hadoop103的密码
hadoop103拷贝结果

案例二: 在hadoop103机器上拉取hadoop102的jdk到本机中

# 将hadoop102服务器的jdk拉取到hadoop103的/opt/module/目录下
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/hadoop-3.1.3 ./
需要输入hadoop102的密码
hadoop103拉取结果​​


案例三: 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中

# 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/* root@hadoop104:/opt/module/
需要先输入hadoop102的密码,再输入hadoop104的密码

3. rsync远程同步工具

3.1 rsync定义

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别: 用rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp是把所有文件都复制过去。

3.2 rsync基础语法

rsync      -av      $pdir/$fname         $user@host:$pdir/$fname
命令       递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称
选项参数说明
选项 功能
-a 归档拷贝
-v 显示复制过程

3.3 案例

(a)删除hadoop103中/opt/module/hadoop-3.1.3/下的wciput与 wcoutput文件

[root@hadoop103 hadoop-3.1.3]$ rm -rf wcinput wcoutput

查看hadoop目录

(b)同步hadoop102中的/opt/module/hadoop-3.1.3/到hadoop103中,恢复这两个文件。

注意: 在hadoop102主机上发起同步

[root@hadoop102 module]$ rsync -av hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3/

4. xsync 集群分发

4.1 需求分析

(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
        (a) rsync 命令原始拷贝:

                rsync -av /opt/module root@hadoop103:/opt/module/

        (b)期望脚本: 命令后直接跟文件名就可直接为集群中的其他服务器同步。
                xsync 要同步的文件名称
        (c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)            

                [root@hadoop102 ~]$ echo $PATH

4.2 脚本实现

上面已经查看了环境配置,其中有一个/root/bin目录,我们查看/root目录下并没有该bin目录,我们可以先创建一个bin目录,在bin目录中创建文件编写内容,就可实现全局生效。


(a) 在/root/bin 目录下创建 xsync文件

[root@hadoop102 bin]$ vim xsync

在该文件中编写如下代码:

# !/bin/bash

# 1. 判断参数个数(是否小于1,小于1直接退出)
if [ $# -lt 1 ]
then 
    echo Not Enough Arguemnet!
    exit;
fi

# 2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ===================== $host =====================
    # 3. 遍历所有目录,挨个发送
    for file in $@
    do
        # 4. 判断文件是否存在
        if [ -e $file ]
            then
                # 5. 获取父目录
                pdir=$(cd -P $(dirname $file);pwd)
                # 6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

添加文件权限

chmod 777 xsync

4.3测试

(a)分发bin目录:xsync文件各系统一份

[root@hadoop102 ~]$ xsync bin

(b)将hadoop102书写的JDK与Hadoop的配置环境文件分发到其他服务器中

hadoop102书写的配置文件目录

 

 在hadoop102主机上分发/etc/profile.d/目录下的my_env.sh配置文件 

xsync /etc/profile.d/my_env.sh

 5. 免密登录

 5.1 免密登录原理 

把自己服务器的公钥发送给其他服务器,那么访问别人的服务器就可以免密访问别人的服务器。

5.2 查看.ssh文件

该文件是在/root目录下的隐藏文件 ,切换到家目录

# -la 查看文件的所有文件/目录包含隐藏文件/目录
[root@hadoop102 ~]$ ls -la

因为xsync文件执行过ssh命令,所以会有一个.ssh文件

 查看.ssh文件

查看known_hosts文件,该文件记录有谁访问过

[root@hadoop102 .ssh]$ cat known_hosts

 5.3 配置无密访问

配置102 无密访问103,104

(a)生成102 的私钥与公钥

# 生成公钥与私钥,需要敲三次回车
[root@hadoop102 .ssh]$ ssh-keygen -t rsa

再次查看 .ssh目录,又多了两个目录id_rsa(私钥)与id_rsa.pub(公钥)

 查看id_rsa(私钥)

查看id_rsa.pub(公钥)

 (b)发送公钥到其他服务器

将102上的公钥拷贝到103

[root@hadoop102 .ssh]$ ssh-copy-id hadoop103

第一次需要密码之后就不需要了

测试能否能直接连接

 向104发送公钥

对自己也发一份(自己访问时也需要密码)

 配置完会多一个文件 authorized_keys,存储着其他服务器的公钥,用于免密访问

 查看authorized_keys文件

 其他两台服务器重复上边操作

6. 查看集群所有服务器的运行进程

命令

[root@hadoop102 ~]# vim /bin/jpsall

文件内容

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
    echo ========================= $host =========================
    ssh $host jps
done

例如:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集群之间文件同步(for Linux)(三) 的相关文章

随机推荐

  • laravel 8实现 订单表按月份水平分表

    实现思路 1 设计基础表orders 2 通过后台代码创建今年6月份订单表 order 202206 今年7月份订单表 order 202207 创建表的时候需要进行判断 如果表存在 则不需要创建 这个后台代码会被多次使用并可以重复使用 选
  • Android 开发最佳实践

    https github com futurice android best practices blob master translations Chinese README cn md 组织好它们 在layoutout XMLs布局时
  • windows 向 iPad导入文件

    iPad导入 步骤 截图 步骤 Windows 下载 iTunes 打开 iTunes 账户 gt 授权 gt 对这台电脑授权 然后输入账户密码登陆 找到当前设备 gt 文件共享 gt 找到对应程序 gt 添加文件 截图
  • elementPlus自动按需导入图标

    最近在使用Vue3重构自己的项目 需要用到elementPlus里面的图标 vite中已经配置了elementPlus中的组件自动按需引入 看看图标引入的相关文档 没道理为了图标又全局引入elementPlus吧 于是就有了图标自动按需引入
  • es or查询

    跨索引查询 SearchRequest request new SearchRequest index1 index2 想实现类似于 select from table where a 1 and b 1 or startTime gt 2
  • 数据结构与算法(十)图的入门

    图的实际应用 在现实生活中 有许多应用场景会包含很多点以及点点之间的连接 而这些应用场景我们都可以用即将要学习的图这种数据结构去解决 地图 我们生活中经常使用的地图 基本上是由城市以及连接城市的道路组成 如果我们把城市看做是一个一个的点 把
  • 传输层的TCP和UDP

    TCP IP 中有两个具有代表性的传输层协议 分别是 TCP 和 UDP TCP 是面向连接的 可靠的流协议 流就是指不间断的数据结构 当应用程序采用 TCP 发送消息时 虽然可以保证发送的顺序 但还是犹如没有任何间隔的数据流发送给接收端
  • 【MySQL SQL语句】DROP TABLE简述

    标准语法 DROP TEMPORARY TABLE IF EXISTS tbl name tbl name RESTRICT CASCADE DROP TABLE 删除一个或多个表 你必须对每个表具有DROP权限 注意 使用此语句时要小心操
  • 打开Vue项目时出现“error:03000086:digital envelope routines::initialization error”的解决方法

    首先看用 VSCode 打开 Vue项目 清除 npm 缓存 因为 npm 有缓存时 常常出现安装依赖不成功的现象 并且一旦出现问题 报错信息很完善 但根据报错信息一项一项去解决 却很容易陷入解决不了关键问题的死循环当中 找不出原因 控制台
  • 瑞芯微RK3128的gpio控制--输入输出和中断

    第一章 gpio的dts设置 1 输出引脚 reset gpios lt gpio0 GPIO D1 GPIO ACTIVE HIGH gt 以上参数分别对应 引脚的名称 第几组gpio 第几个引脚 工作模式 注 以上配置对应为 GPIO0
  • 20.状态模式

    状态模式 一 状态模式 1 状态模式 1 状态模式 State Pattern 它主要用来解决对象在多种状态转换时 需要对外输出不同的行为的问题 状态和行为是一一对应的 状态之间可以相互转换 2 当一个对象的内在状态改变时 允许改变其行为
  • NodeJs创建应用基本流程

    1 创建根目录 2 初始化package json npm init y 3 创建入口文件app js var express require express var path require path var app express ap
  • 【LeetCode】55. 跳跃游戏(给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。)、45. 跳跃游戏 II

    55 跳跃游戏 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个位置 示例 1 输入 2 3 1 1 4 输出 true 解释 从位置 0 到 1 跳 1 步 然
  • java.lang.IndexOutOfBoundsException: Index: 6, Size: 6异常出现的可能原因

    我出现这个异常的情况是 xml中修改了sql语句 然后调用接口时报了这个异常 1 首选确认写的sql无误 在数据库中直接查询 能够成功 2 我的解决方法和问题所在是 修改了sql语句 比如说原来的sql中查出了A字段 和这个sql对应的实体
  • 一、Conflux 网页钱包创建

    相信每一位新加入的小伙伴都有一个疑问 去中心化的钱包到底是什么 如何拥有一个自己钱包 如何使用这个钱包吧 下面我将会为大家讲解如何创建钱包 导入钱包 使用钱包三个方面讲解下 一 创建钱包 首先大家进入钱包网站登录页面 大家可以将该网址收藏
  • JVM 类加载机制、双亲委派

    JVM类加载的步骤 加载 gt 连接 gt 初始化 gt 使用 gt 卸载 其中连接包括 验证 gt 准备 gt 解析三个阶段 下面介绍每个部分的作用 加载 加载是类加载过程中的一个阶段 这个阶段会在内存中生成一个代表这个类的 java l
  • 做视频剪辑可以在哪里接单赚钱?

    如果你自己会一点剪辑技术 想赚点钱还是挺容易的 可以接单剪辑视频 可以做视频账号等等 不说轻松月入过万 每天100 300还是可以做到的 那会视频剪辑可以通过哪些方式赚钱呢 有哪些渠道呢 今天这期内容大周花了一晚上总结了一些赚钱的渠道 分享
  • vue axios跨域 Request Method: OPTIONS问题

    今天做跨域登录功能遇到这个问题 后端已做跨域处理 当跨域请求为post时候 请求的method变为了options 其实跨域分为 简单跨域请求和复杂跨域请求 简单跨域请求是不会发送options请求的 复杂跨域请求会发送一个预检请求opti
  • spring学习笔记(20)数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中 往往是一台 或多台 服务器向无数客户程序提供服务 当服务器查询数据库获取数据时 如果没有采用必要的隔离机制 可能会存在数据库事务的并发问题 下面是一些常见的并发问题分类 1 第一类丢失更新 撤销一个事务 其
  • 集群之间文件同步(for Linux)(三)

    1 准备工作 1 1 防护墙设置 1 关闭各主机的防火墙 systemctl stop firewalld 2 禁止防火墙开机自启动 systemctl disable firewalld 1 3 重启服务 reboot 1 4 查看防火墙