• Hadoop入门(三):本地运行模式和完全分布模式,集群分发脚本、远程同步、集群分发


    文档:hadoop文档

    三种模式与区别

    在这里插入图片描述

    本地模式

    基本步骤:
    在这里插入图片描述
    创建文件夹,进入文件夹,创建word.txt文件。编写内容:
    在这里插入图片描述
    演示如下:
    在这里插入图片描述
    执行jar文件,只想wordcount案例,指定输入(wcinput/)输出(wcout)路径:

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce examples-3.2.4.jar  wordcount   wcinput/    wcout
    
    • 1

    注意:输出路径名称是不存在的,如果存在就会冲突报错。比如wcout

    执行成功:
    在这里插入图片描述
    查看各个字符出现次数:
    在这里插入图片描述
    再重新编辑一下txt文件测试:
    在这里插入图片描述
    回到文件夹,执行:

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar  wordcount wcinput/  wcout2
    
    • 1

    执行完查看wcout2文件夹内容,可见计数很成功:
    在这里插入图片描述

    完全分布式运行模式(重点)

    我们只是在hadoop102上配置好了相关环境,接着需要把jdk,hadoop克隆过去到另外两台,因此需要编写集群分发脚本
    在这里插入图片描述

    编写集群分发脚本(安全拷贝)

    在这里插入图片描述
    在 hadoop102 上,将hadoop102中software/jdk-18.0.2.1目录拷贝到hadoop103上

    scp -r  jdk-18.0.2.1  chuan@hadoop103:/home/chuan/software
    
    • 1

    执行如下:
    在这里插入图片描述

    去hadoop103查看一下:
    在这里插入图片描述
    上面的方法是把文件推送到另外的服务器,再来试试从别的服务器拉取到自己服务器。比如从hadoop102拉取hadoop文件到hadoop103上(./表示当前路径):

    scp -r chuan@hadoop102:/home/chuan/software  ./
    
    • 1

    执行成功:
    在这里插入图片描述
    hadoop103查看下目录:
    在这里插入图片描述

    此时已经实现hadoop102到hadoop103转移了。同理处理hadoop104,这里直接一次性把文件夹全部传送过去,不一个个传送了(记得hadoop104也要创建software文件夹,前面的演示我没有创建):

    scp -r chuan@hadoop102:/home/chuan/software/* chuan@hadoop104:/home/chuan/software
    
    • 1

    如下:
    在这里插入图片描述
    在这里插入图片描述
    到hadoop104查看下:
    在这里插入图片描述
    最后记得soursce一下jdk和hadoop
    在这里插入图片描述

    远程同步

    如果只是个别文件变化,不需要全部拷贝,使用rsync远程同步即可。

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

    语法:
    在这里插入图片描述
    比如把hadoop102上的wcout2删除:
    在这里插入图片描述
    现在希望把hadoop102上的hadoop同步到hadoop103上:

    rsync -av hadoop-3.2.4/ chuan@hadoop103:/home/chuan/software/hadoop-3.2.4/
    
    • 1

    如下:
    在这里插入图片描述
    验证hadoop103上已经没有了:
    在这里插入图片描述

    集群同步分发

    基于同步功能,希望只要做一个更改,就可以其它几个hadoop服务器全部实现同步。

    脚本实现:
    在这里插入图片描述
    创建xsync
    在这里插入图片描述

    xsync中添加内容,内容添加后记得添加权限:

    #!/bin/bash 
     
    #1. 判断参数个数 
    # 判断参数是否小于1
    if [ $# -lt 1 ]   
    then 
        echo Not Enough Arguement! 
        exit; 
    fi 
    
    #2. 遍历集群所有机器 
    # 对102103104都进行分发
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    测试:

    xsync /home/chuan/bin
    
    • 1

    连续输入几次密码即可:
    在这里插入图片描述
    验证传输成功:
    在这里插入图片描述

  • 相关阅读:
    JavaScript连等赋值的理解
    闩锁和锁(Latches and Locks)
    基于C语言的泛类型循环队列
    Python 最好用的8个VS Code扩展
    【LeetCode】49. 字母异位词分组
    设计模式-观察者模式
    2022-09-07 mysql/stonedb-多线程遍历元组问题分析
    IIC协议
    SpringAMQP之队列和交换机
    Leetcode—125.验证回文串【简单】
  • 原文地址:https://blog.csdn.net/weixin_46211269/article/details/126543813