配置Hadoop集群环境准备

发布于:2025-05-13 ⋅ 阅读:(11) ⋅ 点赞:(0)
  • Hadoop的运行模式

一共有三种:

  1. 本地运行。
  2. 伪分布式
  3. 完全分布式
  • Hadoop的完全分布式运行
  1. 要模拟这个功能,我们需要做好如下的准备。

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

    2)安装JDK配置环境变量

    3)安装Hadoop配置环境变量

    4)配置集群

    5)单点启动

    6配置ssh

    7群起并测试集群

    其中,第1项我们在之前克隆虚拟机的环节中已经完成了。现在我们来看看按照JDK和Hadoop并配置环境变量的工作。有两种思路:

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

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

    scp拷贝软件到服务器

    scp可以实现服务器与服务器之间的数据拷贝。

    基本语法

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

    命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

    来,我们一起看下案例实操。假设你在三台虚拟机(hadoop102、hadoop103、hadoop104)都已经创建好的/opt/module,/opt/software两个目录,在hadoop102这台机器中已经安装了jdk和hadoop。现在需要把102上的jdk拷贝到103中。

    具体操作是:

    1. 启动虚拟机

    2. 进入到hadoop102。

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

    注意:这的hadoop103是虚拟机的名称,如果没有设置hosts则需要改成IP地址。

    拓展:scp根据所在的位置不同命令也支持不同的操作,例如:

    在A机器上,拉取B机器上的内容。

    在A机器上,把文件传到B机器上

    在A机器上,把B机器上的文件传递到C机器上

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

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

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

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

    (四)rsync远程同步-配置文件

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

    rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

    (1)基本语法

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

    命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

      选项参数说明

    选项

    功能

    -a

    归档拷贝

    -v

    显示复制过程

    (2)案例实操

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

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

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

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

    xsync集群分发脚本

    (1)需求:循环复制文件到所有节点的相同目录下

    (2)需求分析:

    (a)rsync命令原始拷贝:

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

    (b)期望脚本:

    xsync要同步的文件名称

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

    [root@hadoop102 ~]$ echo $PATH

    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/root/.local/bin:/home/root/bin:/opt/module/jdk1.8.0_212/bin

    (3)脚本实现

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

    [root@hadoop102 opt]$ cd /home/root

    [root@hadoop102 ~]$ mkdir bin

    [root@hadoop102 ~]$ cd bin

    [root@hadoop102 bin]$ vim 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

    此时,我们去查看文件

    颜色是灰色的,不具备执行权限。修改脚本 xsync 具有执行权限

    chmod +x xsync

    或者是chmod 777 xsync

    测试脚本

    [root@hadoop102 ~]$ xsync /home/root/bin

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

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

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

    [root@hadoop102 ~]$ xsync /etc/profile.d/my_env.sh

    (六)ssh命令切换主机让环境变量生效

    从当前主机切换到另一台主机:ssh root@192.168.10.101

    运行命令让环境变量生效。

    source /etc/profile


网站公告

今日签到

点亮在社区的每一天
去签到