hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步

时间:2022-11-21 07:56:13


整个大数据的技术生态体系

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop就是java写的,所以必须要安装jdk

真实的工作是准备服务器,而不是虚拟机。

最小化的虚拟机,需要最少2G的内存

模板机,比较干净。

最小化的比图形化的省资源。

启动虚拟机,登录root用户 123321登陆进去。使用ifconfig查看自己的ip,使用xshell根据获取的ip去安装插件

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


获取到192.168.202.130这个ip地址,使用这个ip去用xshell软件远程登陆,那里很方便去配置敲命令。

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


安装必要的插件使用yum去联网下载

sudo yum install -y epel-releasesudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

模板机是不需要修改ip和主机名的。但是改一下/etc/hosts下的文件内容。以后克隆的时候就已经有了很方便。

192.168.1.100 hadoop100

192.168.1.101 hadoop101

192.168.1.102 hadoop102

192.168.1.103 hadoop103

192.168.1.104 hadoop104

192.168.1.105 hadoop105

192.168.1.106 hadoop106

192.168.1.107 hadoop107

192.168.1.108 hadoop108

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


修改windows的映射

修改window10的主机映射文件(hosts文件)

(a)进入C:\Windows\System32\drivers\etc路径

(b)拷贝hosts文件到桌面

(c)打开桌面hosts文件并添加如下内容

192.168.1.100 hadoop100

192.168.1.101 hadoop101

192.168.1.102 hadoop102

192.168.1.103 hadoop103

192.168.1.104 hadoop104

192.168.1.105 hadoop105

192.168.1.106 hadoop106

192.168.1.107 hadoop107

192.168.1.108 hadoop108在模板机去关闭防火墙和自动启动服务

sudo systemctl stop firewalld

sudo systemctl disable firewalld

创建一个atguigu用户,密码1234565,之后再为这个用户去改它的root权限。

vim /etc/sudoers

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


之后强制退出,因为这个是一个只读文件,:wq!

使用root用户创建两个目录

/opt/software和/opt/module

software:安装程序(压缩包)

module:安装以后的程序

这两个目录还是 root的,我么需要把这两个的所属组和所属主都修改成atguigu.将来作为atguigu用来操作这两个目录就很方便了,具有读写的功能。

sudo chown atguigu:atguigu /opt/module /opt/software

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


对刚才建立的模板机关机,然后在克隆一个hadoop101

开机,登录对hadoop101进行部分修改

主机名,ip

vim /etc/hostname

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


之后对hadoop101重启reboot

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


使用atguigu用xshell登录hadoop101

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


整个hadoop阶段全部使用atguigu用户,平时下意识看一下登录用户是不是atguigu.

使用xftp同样连接hadoop101,大文件尽量使用ftp去传。小文件可以拖拽。

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


安装jdk

将jdk解压到/opt/module

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


安装好jdk之后,再去配置jdk的环境变量

linux中所有的环境变量的配置文件在/etc/profile下

但是所属组和主都是root,所以,只能加上sudo 去操作

sudo vim /etc/profile

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


但是最好在/etc/profile.d下面建立自己的.sh文件

因为/etc/profile里面会自动去读取我们的/etc/profile.d下面的.sh文件。/etc/profile文件一般不建议去修改

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步

创建一个自己定义的my_env.sh去配置环境变量(使用sudo)

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


注意:把原来的path引用过来,千万别把人家的删了

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


使用source去重新加载/etc/profile

因为/etc/profile这个文件会去循环调用/etc/profile.d

里面的所有.sh脚本

echo $JAVA_HOME

echo $PATH

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


如果显示不出来我们配置的环境变量,想着重新开一个xshell链接和重启一下虚拟机,如果还不行,那就是配置错了。

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


安装hadoop3.1.3

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


配置hadoop的环境变量

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


同样还是去source一下

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


hadoop的三种运行模式

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


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

准备三台客户机

写集群分发脚本,因为以后的集群里面有很多节点,实现同步,我们在机器1里面修改了之后,通过分发脚本到其他机器,实现同步,这样就不需要人工重新再去修改其他机器的。

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


写这个分发脚本,首先涉及到的小技术

scp和rsync

先说一下scp安全拷贝

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


rsync更加智能一些。

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步


分发脚本的书写:

hadoop学习从建立模板客户机到编写分发脚本实现集群里所有机器的同步

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