码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Hadoop运行模式、本地运行模式(官方WordCount)、完全分布式运行模式(开发重点)、scp、rsync 远程同步工具、xsync集群分发脚本


    文章目录

    • 3.Hadoop运行模式
      • 3.1本地运行模式(官方WordCount)
        • 3.1.1创建在hadoop-3.1.3文件下面创建一个testinput文件夹
        • 3.1.2在testinput文件下创建一个word.txt文件
        • 3.1.3编辑word.txt文件
        • 3.1.4回到Hadoop目录/opt/module/hadoop-3.1.3
        • 3.1.5执行程序
        • 3.1.6查看结果
      • 3.2完全分布式运行模式(开发重点)
        • 3.2.1虚拟机准备
        • 3.2.2编写集群分发脚本xsync
          • 3.2.2.1scp(secure copy)安全拷贝
            • 3.2.2.1.1scp定义
            • 3.2.2.1.2基本语法
            • 3.2.2.1.3实操
              • 3.2.2.1.3.1前提:在hadoop102、hadoop103、hadoop104都已经创建好的/opt/module、/opt/software两个目录,并且已经把这两个目录修改为summer:summer
              • 3.2.2.1.3.2在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上
              • 3.2.2.1.3.3在hadoop103上,将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上
              • 3.2.2.1.3.4在hadoop103上操作,将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上
          • 3.2.2.2rsync远程同步工具
            • 3.2.2.2.1基本语法
            • 3.2.2.2.2实操
              • 3.2.2.2.2.1删除hadoop103中/opt/module/hadoop-3.1.3/testinput和testoutput
              • 3.2.2.2.2.2同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103
          • 3.2.2.3xsync集群分发脚本
            • 3.2.2.3.1需求:循环复制文件到所有节点的相同目录下
            • 3.2.2.3.2需求分析
              • 3.2.2.3.2.1xsync命令原始拷贝
              • 3.2.2.3.2.2期望脚本
              • 3.2.2.3.2.3期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
            • 3.2.2.3.3脚本实现
              • 3.2.2.3.3.1在/home/summer/bin目录下创建xsync文件
              • 3.2.2.3.3.2修改脚本xsync具有执行权限
              • 3.2.2.3.3.3测试脚本
              • 3.2.2.3.3.4将脚本复制到/bin中,以便全局调用
              • 3.2.2.3.3.5同步环境变量配置(root所有者)

    3.Hadoop运行模式

    Hadoop官方网站:http://hadoop.apache.org/
    Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

    本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
    伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。
    完全分布式模式:多台服务器组成分布式环境。生产环境使用。

    在这里插入图片描述

    3.1本地运行模式(官方WordCount)

    3.1.1创建在hadoop-3.1.3文件下面创建一个testinput文件夹

    • [summer@hadoop102 hadoop-3.1.3]$ mkdir testinput

    在这里插入图片描述

    3.1.2在testinput文件下创建一个word.txt文件

    在这里插入图片描述

    3.1.3编辑word.txt文件

    wo wo
    zui zui
    shuai shuai
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.1.4回到Hadoop目录/opt/module/hadoop-3.1.3

    在这里插入图片描述

    3.1.5执行程序

    • [summer@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount testinput/ testoutput
      输入输出路径必须有,输出路径得需要不存在

    3.1.6查看结果

    在这里插入图片描述

    • [summer@hadoop102 testoutput]$ cat part-r-00000
      shuai 2
      wo 2
      zui 2

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

    分析:
    1)准备3台客户机(关闭防火墙、静态IP、主机名称)
    2)安装JDK
    3)配置环境变量
    4)安装Hadoop
    5)配置环境变量
    6)配置集群
    7)单点启动
    8)配置ssh
    9)群起并测试集群

    3.2.1虚拟机准备

    看我之前写的博客
    模板虚拟机环境准备http://t.csdn.cn/oACCG
    克隆虚拟机http://t.csdn.cn/3VXn2

    3.2.2编写集群分发脚本xsync

    3.2.2.1scp(secure copy)安全拷贝

    3.2.2.1.1scp定义

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

    3.2.2.1.2基本语法
    scp    -r        $pdir/$fname             $user@$host:$pdir/$fname
    命令   递归       要拷贝的文件路径/名称       目的地用户@主机:目的地路径/名称
    
    • 1
    • 2
    3.2.2.1.3实操
    3.2.2.1.3.1前提:在hadoop102、hadoop103、hadoop104都已经创建好的/opt/module、/opt/software两个目录,并且已经把这两个目录修改为summer:summer

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    如果有哪一台虚拟机没有将目录修改为summer:summer,或者没有创建好/opt/module、/opt/software两个目录看我之前的博客http://t.csdn.cn/EOONM,
    1.1.6
    在这里插入图片描述

    3.2.2.1.3.2在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上
    • [summer@hadoop102 module]$ scp -r jdk1.8.0_212/ summer@hadoop103:/opt/module/

    在这里插入图片描述
    在这里插入图片描述
    然后就等待拷贝成功

    在这里插入图片描述

    看到hadoop103已经有了jdk了,说明从hadoop102向hadoop103拷贝成功了

    3.2.2.1.3.3在hadoop103上,将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上
    • [summer@hadoop103 module]$ scp -r summer@hadoop102:/opt/module/hadoop-3.1.3 ./

    在这里插入图片描述

    在这里插入图片描述
    然后就等待拷贝成功

    在这里插入图片描述

    看到hadoop103已经有了hadoop了,说明hadoop103从hadoop102中的hadoop拿过来了

    3.2.2.1.3.4在hadoop103上操作,将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上
    • [summer@hadoop103 module]$ scp -r summer@hadoop102:/opt/module/* summer@hadoop104:/opt/module/
      在这里插入图片描述
      在这里插入图片描述
      然后就等待拷贝成功

    在这里插入图片描述

    看到hadoop104已经有了jdk和hadoop了,说明在hadoop102中从hadoop102中的jdk和hadoop拷贝到了hadoop104中了

    3.2.2.2rsync远程同步工具

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

    3.2.2.2.1基本语法
    rsync -av    $pdir/$fname $user@$host:$pdir/$fname
    命令  选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
    
    • 1
    • 2

    选项参数说明

    选项功能
    -a归档拷贝
    -v显示复制过程
    3.2.2.2.2实操
    3.2.2.2.2.1删除hadoop103中/opt/module/hadoop-3.1.3/testinput和testoutput
    • [summer@hadoop103 hadoop-3.1.3]$ rm -rf testinput/
    • [summer@hadoop103 hadoop-3.1.3]$ rm -rf testoutput/

    在这里插入图片描述

    3.2.2.2.2.2同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103
    • [summer@hadoop102 module]$ rsync -av hadoop-3.1.3/ summer@hadoop103:/opt/module/hadoop-3.1.3/

    在这里插入图片描述

    在这里插入图片描述
    然后就等待成功,这个比scp要快

    在这里插入图片描述

    3.2.2.3xsync集群分发脚本

    3.2.2.3.1需求:循环复制文件到所有节点的相同目录下
    3.2.2.3.2需求分析
    3.2.2.3.2.1xsync命令原始拷贝

    xsync -av /opt/module summer@hadoop103:/opt/

    3.2.2.3.2.2期望脚本

    xsync要同步的文件名称

    3.2.2.3.2.3期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

    [summer@hadoop102 ~]$ echo $PATH
    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/jdk1.8.0_212/bin:/home/summer/.local/bin: /home/summer/bin

    在这里插入图片描述

    3.2.2.3.3脚本实现
    3.2.2.3.3.1在/home/summer/bin目录下创建xsync文件

    [summer@hadoop102 ~]$ mkdir bin
    [summer@hadoop102 ~]$ cd bin
    [summer@hadoop102 bin]$ vim xsync

    在这里插入图片描述

    xsync文件内容为:
    在这里插入图片描述

    #!/bin/bash
    
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
       echo Not Enough Arguement!
       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
    
    • 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
    3.2.2.3.3.2修改脚本xsync具有执行权限
    • [summer@hadoop102 bin]$ chmod 777 xsync

    在这里插入图片描述

    3.2.2.3.3.3测试脚本
    • [summer@hadoop102 bin]$ xsync /home/summer/bin

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    3.2.2.3.3.4将脚本复制到/bin中,以便全局调用
    • [summer@hadoop102 bin]$ sudo cp xsync /bin/
    3.2.2.3.3.5同步环境变量配置(root所有者)
    • [summer@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env_hadoop-3.1.3.sh
    • [summer@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env_jdk_1.8.0_212.sh
      注意:如果用了sudo,那么xsync一定要给它的路径补全
      在这里插入图片描述
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    让环境变量生效

    • [summer@hadoop103 ~]$ source /etc/profile
    • [summer@hadoop104 ~]$ source /etc/profile
  • 相关阅读:
    Vue Router - 路由的使用、两种切换方式、两种传参方式、嵌套方式
    Mac软件下载网址
    web前端设计与开发期末作品_期末大作业-疫情
    跨路由器路由设置
    Starfish Os打造娱乐化元宇宙商业生态
    error response from daemon: unknown or invalid runtime name: docker-runc
    【CANoe】TX Self-ACK自应答配置与CPAL实现
    Blazor实战——Known框架多表增删改查
    正商职业学校预付费云平台系统 的设计与应用
    数字化产业研究报告
  • 原文地址:https://blog.csdn.net/Redamancy06/article/details/126141606
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号