数仓采集_服务器选择(阿里云)

本地的虚拟机快要搞吐了,项目一大根本带不动,准备搞个阿里云的测试环境来玩玩。

准备三台服务器

抢占式阿里云也挺适合的呀,早不知道,又在闲鱼浪费几百块。。。

公网ip:	47.106.23.153(hadoop102)  
公网ip:	120.77.85.26(hadoop103)	 
公网ip:	120.79.81.126(hadoop104)

设置安全组

数据采集服务架构 数据采集服务器配置_hadoop

搭建集群前的准备

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的速度。就离谱。。。