在线教育之采集系统 day03 3.3服务器和JDK准备3.3.1服务器准备安装如下文档配置步骤分别安装hadoop102、hadoop103、hadoop104三台主机。Hadoop完全分布式部署https://blog.csdn.net/2301_80395772/article/details/160481864?spm1011.2415.3001.10575sharefrommp_manage_link3.3.2阿里云服务器准备可选阿里云服务器部署https://blog.csdn.net/2301_80395772/article/details/162175333?spm1011.2415.3001.10575sharefrommp_manage_link3.3.3 编写集群分发脚本xsync1xsync集群分发脚本1需求循环复制文件到所有节点的相同目录下2需求分析①rsync命令原始拷贝rsync -av /opt/module roothadoop103:/opt/②期望脚本xsync要同步的文件名称③说明在/home/atguigu/bin这个目录下存放的脚本atguigu用户可以在系统任何地方直接执行。3脚本实现①在用的家目录/home/atguigu下创建bin文件夹[atguiguhadoop102 ~]$ mkdir bin②在/home/atguigu/bin目录下创建xsync文件以便全局调用[atguiguhadoop102 ~]$ cd /home/atguigu/bin [atguiguhadoop102 ~]$ 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具有执行权限[atguiguhadoop102 bin]$ chmod x xsync④测试脚本[atguiguhadoop102 bin]$ xsync xsync3.3.4 SSH无密登录配置说明这里面只配置了hadoop102、hadoop103到其他主机的无密登录因为hadoop102未外配置的是NameNodehadoop103配置的是ResourceManager都要求对其他节点无密访问。1hadoop102上生成公钥和私钥[atguiguhadoop102 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件id_rsa私钥、id_rsa.pub公钥2将hadoop102公钥拷贝到要免密登录的目标机器上[atguiguhadoop102 .ssh]$ ssh-copy-id hadoop102 [atguiguhadoop102 .ssh]$ ssh-copy-id hadoop103 [atguiguhadoop102 .ssh]$ ssh-copy-id hadoop1043hadoop103上生成公钥和私钥[atguiguhadoop103 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件id_rsa私钥、id_rsa.pub公钥4将hadoop103公钥拷贝到要免密登录的目标机器上[atguiguhadoop103 .ssh]$ ssh-copy-id hadoop102 [atguiguhadoop103 .ssh]$ ssh-copy-id hadoop103 [atguiguhadoop103 .ssh]$ ssh-copy-id hadoop1043.3.5JDK准备1卸载现有JDK3台节点[atguiguhadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps [atguiguhadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps [atguiguhadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps1rpm -qa表示查询所有已经安装的软件包2grep -i表示过滤时不区分大小写3xargs -n1表示一次获取上次执行结果的一个值4rpm -e --nodeps表示卸载软件2用Xftp工具将JDK导入到hadoop102的/opt/software文件夹下面点击图标打开 Xftp左侧窗口对应 windows 文件系统右侧窗口对应 Linux 文件系统找到对应目录将 JDK 拖动到右侧窗口即可完成上传。3在Linux系统下的opt目录中查看软件包是否导入成功[atguiguhadoop102 software]# ls /opt/software/看到如下结果jdk-8u212-linux-x64.tar.gz4解压JDK到/opt/module目录下[atguiguhadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/5配置JDK环境变量1新建/etc/profile.d/my_env.sh文件[atguiguhadoop102 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/bin2让环境变量生效[atguiguhadoop102 software]$ source /etc/profile.d/my_env.sh6测试JDK是否安装成功[atguiguhadoop102 module]# java -version如果能看到以下结果、则Java正常安装java version 1.8.0_2127分发JDK[atguiguhadoop102 module]$ xsync /opt/module/jdk1.8.0_212/8分发环境变量配置文件[atguiguhadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh9分别在hadoop103、hadoop104上执行source[atguiguhadoop103 module]$ source /etc/profile.d/my_env.sh [atguiguhadoop104 module]$ source /etc/profile.d/my_env.sh3.3.6环境变量配置说明Linux的环境变量可在多个文件中配置如/etc/profile/etc/profile.d/*.sh~/.bashrc~/.bash_profile等下面说明上述几个文件之间的关系和区别。bash的运行模式可分为loginshell和non-login shell。例如我们通过终端输入用户名、密码登录系统之后得到就是一个login shell。而当我们执行以下命令sshhadoop103 command在hadoop103执行command的就是一个non-login shell。这两种shell的主要区别在于它们启动时会加载不同的配置文件loginshell启动时会加载/etc/profile~/.bash_profile~/.bashrc。non-loginshell启动时会加载~/.bashrc。而在加载~/.bashrc实际是~/.bashrc中加载的/etc/bashrc或/etc/profile时都会执行如下代码片段因此不管是login shell还是non-login shell启动时都会加载/etc/profile.d/*.sh中的环境变量。