当前位置: 首页 > news >正文

Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步

一.hadoop的运行模式

二.scp命令————基本使用

三.scp命令———拓展使用

四.rsync远程同步

五.xsync脚本集群之间的同步


一.hadoop的运行模式

 hadoop一共有如下三种运行方式:

1. 本地运行。数据存储在linux本地,测试偶尔用一下。我们上一节课使用的就是本地运行模式hadoop100。

2. 伪分布式。在一台机器上模拟出 Hadoop 分布式系统的各个组件,各个组件在逻辑上是分离的,但是都运行在同一台物理机器上,以此来模拟分布式环境。

3. 完全分布式。数据存储在HDFS,多台服务器工作,企业中大量使用。

要在本地去模拟这个真实的场景功能,我们需要做好如下的准备

 1)准备3台客户机(关闭防火墙、静态IP、主机名称)

 2)安装javaJDK安装Hadoop配置环境变量

3)配置集群

4)单点启动

 5配置ssh

 6)群起并测试集群

现在我们来看看按照JDK和Hadoop并配置环境变量的工作。有两种思路:

1. 每台机器都去手动安装一次(上传jar包再去解压)。

2. 把一台机器装好,把module 拷贝到其他的机器。这样就不需要省略了上传和解压的工作了。 

二.scp命令————基本使用

现在要学一个新的命令: scp可以实现服务器与服务器之间的数据拷贝。

1.基本语法

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

说明

(1)-r: 表示递归拷贝。如果要拷贝的是文件夹,就把文件夹下的内容都拷贝

(2)$pdir/$fname: 要拷贝的文件路径/名称   

(3)$user@host:$pdir/$fname: 目的地用户@主机:目的地路径/名称

注意:要输入相应的账号和密码!

2.案例操作

来,我们一起看下案例实操

背景

假设你已经:

(1)台虚拟机(hadoop100、hadoop101都已经创建好了/opt/module,/opt/software两个目录

(2)hadoop100这台机器中已经安装了jdk和hadoop。

目标

现在的目标是:要把hadoop100上的jdk文件夹拷贝到hadoop101的相同的目录下

操作

我们一起看具体操作:

1. 启动虚拟机。把hadoop100hadoop101都启动

2. 进入到hadoop100

3. 命令:
scp -r /opt/module/jdk1.8.0_212/  root@hadoop101:/opt/module/jdk1.8.0_212/

三.scp命令———拓展使用

  1. 拉取。hadoop101上,拉取hadoop100机器上的内容(如下左图)

 

  1. 推送。hadoop100机器上,把文件推送hadoop101机器上(如上右图)
  2. 搭桥。hadoop101机器上,把hadoop100的文件传递到hadoop102

 

任务1在hadoop102上,将hadoop101中/opt/module/hadoop-3.1.3目录拷贝到hadoop102上。

分析:使用scp进行拉取

操作:

  1. 先登录到hadoop2
  2. 使用命令:

scp -r root@hadoop101:/opt/module/hadoop-3.1.3 /opt/module/

任务2在hadoop101上操作,将hadoop100中/opt/module目录下所有目录拷贝到hadoop102上。

分析:使用scp进行搭桥

操作:

  1. 登录hadoop101
  2. 使用命令:

scp -r root@hadoop100:/opt/module/* root@hadoop102:/opt/module

四.rsync远程同步

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

rsync和scp区别是:rsync只对差异文件做更新,scp是把所有文件都复制过去,所以它的效果更高一些

1. 基本语法

rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname

语法说明:

(1)-a:归档拷贝,尽可能让拷贝的文件之间保持一致。

(2)-v:显示拷贝过程。

(3)$pdir/$fname: 要拷贝的文件路径/名称

(4)$user@host:$pdir/$fname: 目的地用户@主机:目的地路径/名称

实操:

 rsync -av /opt/conf/ root@hadoop101:/opt/conf

第一步:在两台机器上准备文件。

hadoop100/opt/conf/ 建1.txt, 2.txt, 3.txt, 4.txt

做一次同步。

[root@hadoop100 ]$ rsync -av /opt/conf/ root@hadoop101:/opt/conf/

它会在hadoop101上创建conf目录。

第二步:在hadoop100中,添加新文件,5.txt, 6.txt, 7.txt

第三步:使用命令把新添加的文件同步到hadoop101中

命令如下:

[root@hadoop100 ]$ rsync -av /opt/conf/ root@hadoop101:/opt/conf/

请特别注意目录最后的尾/。有/表示拷贝这文件夹下的内容,没有/表示会拷贝这个文件夹

五.xsync脚本集群之间的同步

在root目录建立bin文件夹,在bin内建立xsync文件,并在文件中输入脚本

chmod +x xsync

2.步骤

(1)在/root/bin目录下创建xsync文件。在这个

(2)在该文件中编写如下代码。这个部分的代码不需要会写,能看懂,了解即可。

#!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

    echo Not Enough Arguement!

    exit;

fi

#2. 遍历集群所有机器

for host in hadoop100 hadoop101 hadoop102

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

 3修改执行权限。此时,我们去查看文件,可以看到它的颜色是灰色的,不具备执行权限(如下图)

接下来要通过命令: chmod +x xsync或者是chmod 777 xsync

重新查看它的颜色,它现在已经变成执行的脚本了(如下图)。

(4)测试使用。把这个脚本同步到其他的机器中。

[root@hadoop100 ~]$ xsync /root/bin/


课堂小结 

  1. scp的作用是什么?
  2. 如果当前在A机器上,要把A机器上的/etc/tst下的所有内容拷贝到B机器上的/etc/tst目录下,应该的命令应该怎么写?
  3. rsync与scp的区别是什么?

答案:

1.实现服务器和服务器之间数据拷贝

2.scp -r /etc/tst/B机器的用户名@主机名:/etc/tst

3.rsync和scp区别是:rsync只对差异文件做更新,scp是把所有文件都复制过去,所以它的效果更高一些

http://www.dtcms.com/a/61396.html

相关文章:

  • 时序数据库TimescaleDB基本操作示例
  • 米尔电子-LR3568-烧录鸿蒙
  • 倒排索引(Inverted Index)
  • 【从二维到一维:动态规划——01背包完全背包的空间优化之路】—— 经典例题解答,将问题转化为背包问题
  • 在线json转ArkTs-harmonyos
  • 《 YOLOv5、YOLOv8、YOLO11训练的关键文件:data.yaml文件编写全解》
  • 再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向
  • Java集合_八股场景题
  • C# backgroundworker类
  • [20250304] 关于 RISC-V芯片 的介绍
  • 游戏引擎学习第149天
  • 快速谱峭度算法解析
  • Ubuntu用户安装cpolar内网穿透
  • leetcode日记(88)对称二叉树
  • MySQL数据库操作
  • 应急响应--流量分析
  • HTML页面中divborder-bottom不占用整个底边,只占用部分宽度
  • Yashan DB 存储结构
  • 19. 大数据-技术生态简介
  • 前端非技术性场景面试题
  • 第4节: 静态路由与动态路由协议(RIP、OSPF)详解
  • 【javaEE】多线程(进阶)
  • Linux 离线部署Ollama和DeepSeek-r1模型
  • 做一做native层面消息实战Looper,Handler,Message
  • 第一章:欢迎来到 HTML 星球!
  • 嵌入式裸机设计--MCU常用裸机架构有哪些?
  • MySQL的安装及配置
  • abbd:`Nx`、`Lerna` 和 `Turborepo`
  • 内网anaconda如何使用代理,避免网络连接失败?
  • 【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)