Hadoop入门(八)——本地运行模式+完全分布模式案例详解,实现WordCount和集群分发脚本xsync快速配置环境变量 (图文详解步骤2021)[通俗易懂]

Hadoop入门(八)——本地运行模式+完全分布模式案例详解,实现WordCount和集群分发脚本xsync快速配置环境变量 (图文详解步骤2021)[通俗易懂]Hadoop运行模式1)Hadoop官方网站:http://hadoop.apache.org/2)Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。完全分布式模式:多台服务器组成分布式环境。生产环境使用。本地运行模式(官方WordCount案例)1

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

Hadoop入门(八)——本地运行模式+完全分布模式案例详解,实现WordCount和集群分发脚本xsync快速配置环境变量 (图文详解步骤2021

系列文章传送门

这个系列文章传送门:
Hadoop入门(一)——CentOS7下载+VM上安装(手动分区)图文步骤详解(2021)
Hadoop入门(二)——VMware虚拟网络设置+Windows10的IP地址配置+CentOS静态IP设置(图文详解步骤2021)
Hadoop入门(三)——XSHELL7远程访问工具+XFTP7文件传输(图文步骤详解2021)
Hadoop入门(四)——模板虚拟机环境准备(图文步骤详解2021)
Hadoop入门(五)——Hadoop集群搭建-克隆三台虚拟机(图文步骤详解2021)
Hadoop入门(六)——JDK安装(图文步骤详解2021)
Hadoop入门(七)——Hadoop安装(图文详解步骤2021)
Hadoop入门(八)——本地运行模式+完全分布模式案例详解,实现WordCount和集群分发脚本xsync快速配置环境变量 (图文详解步骤2021)
Hadoop入门(九)——SSH免密登录 配置
Hadoop入门(十)——集群配置(图文详解步骤2021)
Hadoop入门(十一)——集群崩溃的处理方法(图文详解步骤2021)
Hadoop入门(十二)——配置历史服务器及日志的聚集(图文详解步骤2021)
Hadoop入门(十三)——集群常用知识(面试题)与技巧总结
Hadoop入门(十四)——集群时间同步(图文详解步骤2021)
Hadoop入门(十五)——集群常见错误及解决方案

Hadoop 运行模式

1)Hadoop 官方网站:http://hadoop.apache.org/
在这里插入图片描述

2)Hadoop 运行模式包括: 本地模式伪分布式模式以及 完全分布式模式
在这里插入图片描述

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

本地运行模式 (官方 WordCount案例 )

1 ) 创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹

[leokadia@hadoop102 hadoop-3.1.3]$ mkdir wcinput

2 ) 在 wcinput 文件下创建一个 word.txt 文件

[leokadia@hadoop102 hadoop-3.1.3]$ cd wcinput

3 ) 编辑 word.txt 文件

[leokadia@hadoop102 wcinput]$ vim word.txt
➢ 在文件中随便输入一些内容
➢ 保存退出::wq
在这里插入图片描述

4 ) 回到 Hadoop 目录/opt/module/hadoop-3.1.3

[leokadia@hadoop102 ~]$ cd /opt/module/hadoop-3.1.3

5 ) 执行程序

[leokadia@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

当然,你要是不确定,不放心自己的程序中是否有hadoop-mapreduce-examples-3.1.3.jar,你可以依次进入文件夹查看,博主就做过这种事情。
在这里插入图片描述

6 ) 查看结果

[leokadia@hadoop102 hadoop-3.1.3]$ cat wcoutput/part-r-00000
看到如下结果:

19-1	1
HFUT,	1
Hadoop	1
Leokadia	1
She	1
a	1
class	1
computer	1
experiment	1
in	1
innovation	1
is	3
learning	1
sophomore	1
whose	1

在这里插入图片描述

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

分析:
1)准备 3 台客户机(关闭防火墙、静态 IP、主机名称)
2)安装 JDK
3)配置环境变量
4)安装 Hadoop
5)配置环境变量

注,以上步骤我们均在hadoop102上搞定了

6)配置集群
7)单点启动
8)配置 ssh
9)群起并测试集群

步骤1,2,3,4,5之前我们均已经在102上搞定了

虚拟机准备

详见前几篇文章

编写集群分发脚本 xsync

1 )scp (secure copy ) 安全 拷贝

(1)scp 定义
scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
(2)基本语法
在这里插入图片描述

(3)案例实操

前提:在 hadoop102、hadoop103、hadoop104 都已经创建好的/opt/module、
/opt/software 两个目录,并且已经把这两个目录修改为 leokadia:leokadia
[leokadia@hadoop102 ~]$ sudo chown leokadia:leokadia -R /opt/module

注:前面完全按我来的这部分不需要做,之前103,104克隆的时候就存在了

(a)在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上。

[leokadia@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 leokadia@hadoop103:/opt/module
在这里插入图片描述
输入yes
然后输入hadoop103的密码:
然后就开始拷贝了,经历一大串类似这样的
在这里插入图片描述
在hadoop103上即可看到jdk拷贝成功

在这里插入图片描述

刚刚我们的一通操作是将在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上。简单点说就是把hadoop102上的东西强行塞给hadoop103。那能不能在hadoop103上将hadoop102的东西强行拿过来呢?下面拷贝hadoop-3.1.3的时候我们就试试这种方法。

(b)在 hadoop103 上,将 hadoop102 中/opt/module/hadoop-3.1.3 目录拷贝到hadoop103 上。

[leokadia@hadoop103 ~]$ scp -r leokadia@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/
在这里插入图片描述
可以看到拷贝成功
在这里插入图片描述

其实不仅可以把hadoop102上的东西强行塞给hadoop103
在hadoop103上将hadoop102的东西强行拿过来
还可以用在 hadoop103 上操作,将 hadoop102 的东西塞给hadoop104

(c)在 hadoop103 上操作,将 hadoop102 中/opt/module 目录下所有目录拷贝到hadoop104 上。

[leokadia@hadoop103 opt]$ scp -r leokadia@hadoop102:/opt/module/* leokadia@hadoop104:/opt/module
过程同理
在这里插入图片描述
然后他会让你输入hadoop104的密码,输入后即可拷贝成功
在这里插入图片描述
不放心的话可以在hadoop104中验证一下

在这里插入图片描述

题外话——小Tip

由于博主之前为每台运行虚拟机预留的主机RAM( R )比较大
(不要喷,博主电脑是在转计算机之前瞎买的,比较垃圾)
因此同时开启三台虚拟机的时候,他会报出这样的错误:物理内存不足,无法使用配置的设置开启虚拟机

在这里插入图片描述
博主寻找过许多解决办法,最终找到一个最方便(智障)的方法供大家参考:
点击“编辑”———“首选项”,在弹出的对话框中选择左侧的“内存”,然后在最右侧选择“允许交换大部分虚拟机内存”即可,如下图所示
在这里插入图片描述

2 )rsync 远程同步工具

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

(1)基本语法
在这里插入图片描述

(2)案例实操

(a)删除 hadoop103 中/opt/module/hadoop-3.1.3/wcinput

[leokadia@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/
在这里插入图片描述

(b)同步 hadoop102 中的/opt/module/hadoop-3.1.3 到 hadoop103

希望将 hadoop102 中的hadoop-3.1.3 到 hadoop103
看是所有的内容都拷贝,还是只拷贝差异性内容

[leokadia@hadoop102 module]$ rsync -av hadoop-3.1.3/ leokadia@hadoop103:/opt/module/hadoop-3.1.3/
在这里插入图片描述
同步完成
在这里插入图片描述
在hadoop103中验证:同步成功
在这里插入图片描述

3 )xsync 集群分发 脚本

(1)需求:循环复制文件到所有节点的相同目录下
在家目录下创建一个文件,希望写一个脚本,一执行这个命令,a.txt就可以分发到相同的路径
(2)需求分析:
(a)rsync 命令原始拷贝:
rsync -av /opt/module leokadia@hadoop103:/opt/
(b)期望脚本:
xsync 要同步的文件名称
(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
[leokadia@hadoop102 ~]$ echo $PATH 查看 全局环境变量的路径

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/home/leokadia/.local/bin:/home/leokadia/bin

在这里插入图片描述
想在/home/leokadia/bin目录下将xsync 集群分发 脚本 放入,即可在全局使用这个脚本了
(其实也可以在家目录下创建这个脚本,在把这个脚本的路径放入全局变量环境)
(3)脚本实现

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

[leokadia@hadoop102 opt]$ cd /home/leokadia
[leokadia@hadoop102 ~]$ mkdir bin

[leokadia@hadoop102 ~]$ cd bin
[leokadia@hadoop102 bin]$ vim xsync
在这里插入图片描述

在该文件中编写如下代码

#!/bin/bash 
 
#1. 判断参数个数 
# 判断参数是否小于1
if [ $# -lt 1 ] 
then 
    echo Not Enough Arguement! 
    exit; 
fi 

#2. 遍历集群所有机器 
# 对102,103,104都进行分发
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

在这里插入图片描述

(b)修改脚本 xsync 具有执行权限

[leokadia@hadoop102 bin]$ chmod +x xsync

(c)测试脚本

[leokadia@hadoop102 ~]$ xsync /home/leokadia/bin
在这里插入图片描述
连输几次密码
在这里插入图片描述
在hadoop103,hadoop104上验证,发现脚本传输成功
在这里插入图片描述
在这里插入图片描述

(d)将脚本复制到/bin 中,以便全局调用

[leokadia@hadoop102 bin]$ sudo cp xsync /bin/

还记得之前我们hadoop103,hadoop104都没有配置hadoop和jdk的环境变量吗?
看下hadoop104目前的环境变量里的情况
在这里插入图片描述

在这里插入图片描述
发现确实没有配置

这个脚本的用处来了!
我们用这个脚本分发环境变量

(e)同步环境变量配置(root 所有者)

我们先用这条命令试一下:
[leokadia@hadoop102 ~]$ xsync /etc/profile.d/my_env.sh
在这里插入图片描述
查看hadoop103/104中的,发现根本没有my_env.sh文件
在这里插入图片描述
那我们加sudo试一下,发现根本找不到命令
在这里插入图片描述

为啥呢?
我加了sudo相当于我是root用户,但目前我现在脚本在家目录bin目录下,root账号使用不了这个路径。
那我们就加上这个绝对路径呗!
这次一定成!

[leokadia@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
在这里插入图片描述

在hadoop103,hadoop104下验证一下:
[leokadia@hadoop103 bin]$ sudo vim /etc/profile.d/my_env.sh
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
成功!

注意:让环境变量生效

[leokadia@hadoop103 bin]$ source /etc/profile
[leokadia@hadoop104 bin]$ source /etc/profile
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 2020年公认最快的dns_2021最快最稳定的dns排行

    2020年公认最快的dns_2021最快最稳定的dns排行简介:2020国内速度最快的dns推荐原版周公解梦分析梦见儿子死了的吉凶境遇安全,推荐长辈惠泽,推荐承受父祖之余德,前辈之提拔,而得大成功及发展,原命若喜水木者更佳。若凶数者:成又转败,陷于离乱变动,至晚年终归孤独失败,又早年有落水灾遇,生涯九死一生之命格。国内又须戒色变及刀杀之危。梦到蛇和蛇一头,速度暗示你可能会受到别人的欺骗,或受到别人欺骗。最快梦见蛇的心理学解梦从做梦内容的本义来说:推荐动物…

    2025年9月3日
    12
  • springboot mysql事物_SpringBoot事务详细简介[通俗易懂]

    springboot mysql事物_SpringBoot事务详细简介[通俗易懂]重要概念自动提交模式对于mysql数据库,默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果执行失败则隐式的回滚事务。对于正常的事务管理,是一组相关的操作处于一个事务之中,因此必须关闭数据库的自动提交模式,下面是查看方式:查看是否自动提交命令(ON表示开启自动提交,值为1,OFF表示关闭自动提交,值为0):showvari…

    2022年6月5日
    93
  • 常用的CSS[持续更新]

    常用的CSS[持续更新]

    2021年8月20日
    54
  • C++学习——数据类型(强制)转换详解

    C++学习——数据类型(强制)转换详解有时,编程的过程中需要将值从一种数据类型转换为另一种数据类型。C++ 提供了这样做的方法。如果将一个浮点值分配给一个 int 整型变量,该变量会接收什么值?如果一个 int 整数乘以一个 float 浮点数,结果将会是什么数据类型?如果一个 double 浮点数除以一个 unsigned int 无符号整数会怎么样?是否有办法预测在这些情况下会发生什么?答案是肯定的。当运算符的操作数具有不同的…

    2022年8月18日
    10
  • 有java安装包怎么安装(java安装包打不开)

    JavaJDK安装包获取和安装:JDK1.8.211官网下载地址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html注意:1.不要安装到C盘2.安装路径中不要出现任何的中文环境变量配置:Windows+E–>页面空白处鼠标右键–>属性系统页面…

    2022年4月17日
    40
  • 典型的电容有_电容的容量

    典型的电容有_电容的容量【硬见小百科】二十种电容分类详解!一、瓷介电容器(CC)【硬见小百科】二十种电容分类详解!1.结构用陶瓷材料作介质,在陶瓷表面涂覆一层金属(银)薄膜,再经高温烧结后作为电极而成。瓷介电容器又分1类电介质(NPO、CCG);2类电介质(X7R、2X1)和3类电介质(Y5V、2F4)瓷介电容器。2.特点1类瓷介电容器具有温度系数小、稳定性高、损耗低、耐压高等优点。最大容量不超过1…

    2022年8月22日
    6

发表回复

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

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