news 2026/6/22 4:04:24

在线教育之采集系统 day03

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在线教育之采集系统 day03

3.3服务器和JDK准备

3.3.1服务器准备

安装如下文档配置步骤,分别安装hadoop102、hadoop103、hadoop104三台主机。

Hadoop完全分布式部署https://blog.csdn.net/2301_80395772/article/details/160481864?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

3.3.2阿里云服务器准备(可选)

阿里云服务器部署https://blog.csdn.net/2301_80395772/article/details/162175333?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

3.3.3 编写集群分发脚本xsync

1xsync集群分发脚本

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

(2)需求分析

①rsync命令原始拷贝:

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

②期望脚本:

xsync要同步的文件名称

③说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。

(3)脚本实现

①在用的家目录/home/atguigu下创建bin文件夹

[atguigu@hadoop102 ~]$ mkdir bin

②在/home/atguigu/bin目录下创建xsync文件,以便全局调用

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin [atguigu@hadoop102 ~]$ 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具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

④测试脚本

[atguigu@hadoop102 bin]$ xsync xsync

3.3.4 SSH无密登录配置

说明:这里面只配置了hadoop102、hadoop103到其他主机的无密登录;因为hadoop102未外配置的是NameNode,hadoop103配置的是ResourceManager,都要求对其他节点无密访问。

(1)hadoop102上生成公钥和私钥:

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(2)将hadoop102公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102 [atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103 [atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

(3)hadoop103上生成公钥和私钥:

[atguigu@hadoop103 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(4)将hadoop103公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102 [atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103 [atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104

3.3.5JDK准备

1卸载现有JDK(3台节点)

[atguigu@hadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps [atguigu@hadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps [atguigu@hadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

(1)rpm -qa:表示查询所有已经安装的软件包

(2)grep -i:表示过滤时不区分大小写

(3)xargs -n1:表示一次获取上次执行结果的一个值

(4)rpm -e --nodeps:表示卸载软件

2Xftp工具将JDK导入到hadoop102的/opt/software文件夹下面

点击图标打开 Xftp

左侧窗口对应 windows 文件系统,右侧窗口对应 Linux 文件系统,找到对应目录,将 JDK 拖动到右侧窗口即可完成上传。

3)在Linux系统下的opt目录中查看软件包是否导入成功

[atguigu@hadoop102 software]# ls /opt/software/

看到如下结果:

jdk-8u212-linux-x64.tar.gz

4解压JDK到/opt/module目录下

[atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

5配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件

[atguigu@hadoop102 module]# sudo vim /etc/profile.d/my_env.sh

添加如下内容,然后保存(:wq)退出

#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin

(2)让环境变量生效

[atguigu@hadoop102 software]$ source /etc/profile.d/my_env.sh

6测试JDK是否安装成功

[atguigu@hadoop102 module]# java -version

如果能看到以下结果、则Java正常安装

java version "1.8.0_212"

7)分发JDK

[atguigu@hadoop102 module]$ xsync /opt/module/jdk1.8.0_212/

8)分发环境变量配置文件

[atguigu@hadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh

9)分别在hadoop103、hadoop104上执行source

[atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh [atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh

3.3.6环境变量配置说明

Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc,~/.bash_profile等,下面说明上述几个文件之间的关系和区别。

bash的运行模式可分为loginshellnon-login shell

例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell。而当我们执行以下命令sshhadoop103 command,在hadoop103执行command的就是一个non-login shell。

这两种shell的主要区别在于,它们启动时会加载不同的配置文件,loginshell启动时会加载/etc/profile,~/.bash_profile~/.bashrcnon-loginshell启动时会加载~/.bashrc

而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段:

因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 4:00:09

Java文件GZIP压缩解压生产实践:缓冲区、编码、校验与监控

1. 这不是“Hello World”,而是生产环境里每天都在发生的文件瘦身术Java GZIP Example — Compress and Decompress File,光看标题,很多人会下意识划走:又一个教科书式示例?不就是调个GZIPOutputStream吗?但…

作者头像 李华
网站建设 2026/6/22 3:55:54

网盘直链解析神器:一键解锁九大网盘高速下载通道

网盘直链解析神器:一键解锁九大网盘高速下载通道 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

作者头像 李华
网站建设 2026/6/22 3:53:54

WVP-GB28181-Pro:构建跨品牌视频监控系统的终极解决方案

WVP-GB28181-Pro:构建跨品牌视频监控系统的终极解决方案 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支…

作者头像 李华
网站建设 2026/6/22 3:45:51

基于Stein变分梯度下降的多智能体分布估计算法:原理、实现与应用

1. 从“单打独斗”到“群策群力”:组合优化问题的求解范式演进在工业排产、物流路径规划、芯片布局这些经典的组合优化问题面前,我们常常感到一种“力不从心”。传统的精确算法,比如分支定界,在面对几十上百个节点的旅行商问题时&…

作者头像 李华
网站建设 2026/6/22 3:43:31

LLMbench:基于概率可视化的AI文本比较分析平台实战指南

1. 项目概述:当AI文本生成遍地开花,我们如何“看见”差异?最近两年,大语言模型(LLM)的应用已经渗透到我们工作的方方面面,从写周报、润色邮件,到生成代码、创作营销文案。但随之而来…

作者头像 李华
网站建设 2026/6/22 3:41:47

200. 极简PyTorch实现原生DDPM:轻量化UNet+详尽注释,直接运行无需改参

摘要 扩散模型(Diffusion Models)是当前生成式AI领域最核心的技术之一,在图像生成、音频合成、分子设计等任务中展现出超越GAN和VAE的生成质量。本文从数学原理出发,系统讲解去噪扩散概率模型(DDPM)的核心机制,提供一份完整可运行的PyTorch代码实现,并针对训练不稳定、…

作者头像 李华