数仓采集_服务器选择(阿里云)
本地的虚拟机快要搞吐了,项目一大根本带不动,准备搞个阿里云的测试环境来玩玩。
准备三台服务器
抢占式阿里云也挺适合的呀,早不知道,又在闲鱼浪费几百块。。。
公网ip: 47.106.23.153(hadoop102)
公网ip: 120.77.85.26(hadoop103)
公网ip: 120.79.81.126(hadoop104)
设置安全组
搭建集群前的准备
vim /etc/hosts
# 修改hosts映射文件,添加如下内容
47.106.23.153 hadoop102
120.77.85.26 hadoop103
120.79.81.126 hadoop104
设置好之后,确认服务器之间能相互ping通。
配置免密登入
生成密钥对
[atguigu@hadoop102 hadoop-3.1.3]$ ssh-keygen -t rsa # 然后四次回车
[atguigu@hadoop102 ~]$ pwd
/home/atguigu
[atguigu@hadoop102 ~]$ ls -a # 生成的位置在.ssh
. .. .bash_logout .bash_profile .bashrc bin .ssh .viminfo
[atguigu@hadoop102 .ssh]$ ll
-rw-------. 1 atguigu atguigu 1679 9月 20 15:23 id_rsa # 私钥
-rw-r--r--. 1 atguigu atguigu 399 9月 20 15:23 id_rsa.pub # 公钥
-rw-r--r--. 1 atguigu atguigu 372 9月 19 23:28 known_hosts # 访问记录的文件
[atguigu@hadoop102 .ssh]$
将公钥拷贝到每个文件,自己也要
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104
# 在各自的.ssh目录下都会生成一个authorized_keys授权文件
# 现在,在102上如登入103就不用密码了
[atguigu@hadoop102 .ssh]$ ssh hadoop103
Last login: Mon Sep 20 11:03:39 2021 from 192.168.12.1
[atguigu@hadoop103 ~]$ # 直接登入到了103上
配置分发脚本
在 /home/atguigu/bin 目录下创建 my_rsync.sh分发脚本,内容如下
#!/bin/bash
# 入参校验
if [ $# -lt 1 ]
then
echo '参数不能为空'
exit
fi
# 遍历集群中的机器一次分发内容
for host in hadoop103 hadoop104
do
#依次分发
for file in $@
do
# 判断当前文件是否存在
if [ -e $file ]
then
#存在
#1.获取当前文件的父目录结构
pdir=$(cd -P $(dirname $file); pwd)
#2.获取当前的文件名
fname=$(basename $file)
#3.登入目标机器创建统一的目录结构
ssh $host "mkdir -p $pdir"
#4.依次把要分发的文件或目录进行分发
rsync -av $pdir/$fname $host:$pdir
else
#不存在
echo "$file 文件不存在"
exit
fi
done
done
查看各个机器java进程的脚本
在/home/atguigu/bin下创建 my_jps.sh
chmod 744 my_jps.sh
#!/bin/bash
echo "hadoop102,hadoop103,hadoop104进程启动情况"
for host in hadoop102 hadoop103 hadoop104
do
echo "=================$host jps情况================="
ssh $host /opt/module/jdk1.8.0_212/bin/jps
done
#! /bin/bash
# all.sh
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done
安装jdk
上传缺点这里就不说了,我这里使用的是jdk-8u212-linux-x64.tar.gz
#1.解压JDK到/opt/module目录下
[atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
#2.配置JDK环境变量,新建/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
#3.让环境变量生效
[atguigu@hadoop102 software]$ source /etc/profile
#4.测试JDK是否安装成功
[atguigu@hadoop102 module]# java -version
如果能看到以下结果、则Java正常安装
java version "1.8.0_212"
#5.分发JDK
[atguigu@hadoop102 module]$ my_rsync.sh /opt/module/jdk1.8.0_212/
#6.分发环境变量配置文件(切换root账号执行)
[atguigu@hadoop102 module]$ sudo my_rsync.sh /etc/profile.d/my_env.sh
#7.分别在hadoop103、hadoop104上执行source
[atguigu@hadoop103 module]$ source /etc/profile
[atguigu@hadoop104 module]$ source /etc/profile
配置生成日志的脚本
手写一个springboot:gmall2020-mock-log-2021-01-22.jar,专门用于生成现有的日志
[atguigu@hadoop102 applog]$ pwd/opt/module/applog
[atguigu@hadoop102 applog]$ ll
total 15288
-rw-r--r-- 1 atguigu atguigu 979 Sep 24 19:03 application.yml
-rw-r--r-- 1 atguigu atguigu 15640308 Oct 17 00:26 gmall2020-mock-log-2021-01-22.jar
-rw-r--r-- 1 atguigu atguigu 1039 Sep 24 19:03 logback.xml
-rw-r--r-- 1 atguigu atguigu 565 Sep 24 19:03 path.json
[atguigu@hadoop102 applog]$
以shell脚本的方式来跑:my_log.sh
试想现在都是分布式架构,日志肯定分布在不同的机器,所以我们我的模拟日志数据也分别放在hadoop102,hadoop103两台机器上,在/home/atguigu/bin下创建my_log.sh
#!/bin/bash
# 模拟生成用户行为数据的脚本(保证执行的时候要在applog这个目录下,因为存在配置文件)
# /dev/null 黑洞,直接扔了。1:标准输出,2:错误输出
for host in hadoop102 hadoop103
do
ssh $host 'cd /opt/module/applog ;java -jar gmall2020-mock-log-2021-01-22.jar 1>/dev/null 2>&1 &'
done
将/opt/module/applog分发到hadoop103
[atguigu@hadoop102 module]$ scp -r applog/ hadoop103:/opt/module/
执行my_log.sh就能在hadoop102,hadoop103上生成日志数据
至此,常规配置ok。使用阿里云方便是方便,但是也有不好的地方,就是上传速度太拉跨了,我还是选的100m的带宽。就无语,还跑了两次网吧去上传,而且还是只有250km/s的速度。就离谱。。。