数据仓库搭建
(1)修改主机名
vim /etc/hostname
(2)修改ip地址,并且重启服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33
node2 192.168.88.102
node3 192.168.88.103
node4 192.168.88.104
systemctl restart network
(3)关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld.service
(4)关闭 selinux
vim /etc/selinux/config
SELINUX=disabled
(5)关闭networkmanage服务
#查看NetworkManager状态
systemctl status NetworkManager
#停止NetworkManager
systemctl stop NetworkManager
#禁止NetworkManager开机启动
systemctl disable NetworkManager
(6)做时间同步
yum install ntp -y
vi /etc/ntp.conf
server ntp1.aliyun.com
-- 启动服务
systemctl start ntpd
systemctl enable ntpd
(3)可改可不改修改sshd:
修改sshd,让链接更加快:
sudo vim /etc/ssh/sshd_config
将UserNDs YES 注释打开,修改为userDNS No
重新启动
sudo systemctl restart sshd
(4)创建bin文件夹,存放后面的脚本
[itwise@node2 ~]$ mkdir bin
(5)在bin目录下创建,my_rsync.sh脚本,用来发放文件
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in node3 node4
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
(6)建立node2/3/4免密
免密逻辑:
6.1免密之前的准备
linux命令实现:
先连接一下其他用户,自动生成.ssh文件
到用户目录下
[itwise@node2 bin]$ cd /home/itwise/
[itwise@node2 ~]$ ll -a
[itwise@node2 ~]$ cd .ssh/
ssh-keygen -t rsa(3次回车)
ssh-copy-id (node2/node3/node4)
sudo /bin/systemctl restart sshd.service(三台都要重启)
ctrl+d 退出登录
3台机器都安装安装JDK
上传jdk压缩包到/opt/software
使用解压命令进行解压
tar -zxvf jdk-8u171-linux-x64.tar.gz
新建一个 配置变量环境/etc/profile.d/my_env.sh,并且应用分发:
[itwise@node2 profile.d]$ sudo vim /etc/profile.d/my_env.sh
source /etc/profile
分发jdk
my_rsync.sh /opt/module/jdk1.8.0_212/
发放配置文件到其他节点:
[itwise@node2 profile.d]$ scp my_env.sh root@node4:$PWD
[itwise@node2 profile.d]$ scp my_env.sh root@node3:$PWD
记得重置一下配置文件
source /etc/profile
2.上传处理数据
[itwise@node2 module]$ cd applog/
将日志文件内的文件上传
3.数据
3.1配置文件application.yml:
[itwise@node2 applog]$ vim application.yml
只修改一下日期
# 外部配置打开
logging.config: "./logback.xml"
#业务日期
mock.date: "2024-03-15"
#模拟数据发送模式
#mock.type: "http"
#mock.type: "kafka"
mock.type: "log"
#http模式下,发送的地址
mock.url: "http://hdp1/applog"
#kafka模式下,发送的地址
mock:
kafka-server: "hdp1:9092,hdp2:9092,hdp3:9092"
kafka-topic: "ODS_BASE_LOG"
#启动次数
mock.startup.count: 200
#设备最大值
mock.max.mid: 500000
#会员最大值
mock.max.uid: 100
#商品最大值
mock.max.sku-id: 35
#页面平均访问时间
mock.page.during-time-ms: 20000
#错误概率 百分比
mock.error.rate: 3
#每条日志发送延迟 ms
mock.log.sleep: 10
#商品详情来源 用户查询,商品推广,智能推荐, 促销活动
mock.detail.source-type-rate: "40:25:15:20"
#领取购物券概率
mock.if_get_coupon_rate: 75
#购物券最大id
mock.max.coupon-id: 3
#搜索关键词
mock.search.keyword: "图书,小米,iphone11,电视,口红,ps5,苹果手机,小米盒子"
3.2日志生成
执行java架包,会生成日志文件 log
[itwise@node2 module]$ cd applog/
[itwise@node2 applog]$ java -jar gmall2020-mock-log-2021-01-22.jar
生成文件:
-rw-rw-r--. 1 itwise itwise 790129 3月 15 14:23 app.2024-03-15.log
3.3使用脚本分发applog 根据搭建,只保留node2,node3上的applog
[itwise@node2 module]$ my_rsync.sh applog/
[itwise@node4 module]$ rm -rf applog/
3.4编写集群日志生产成脚本,并授权
在**/home/itwise/bin** 目录下创建脚本 my_log.sh**
[itwise@node2 bin]$ vim my_log.sh
#!/bin/bash
for i in node2 node3; do
echo "========== $i==开始生成日志 =========="
ssh $i "cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar >/dev/null 2>&1 &"
echo "========== $i==生成日志完成 =========="
done
[itwise@node2 bin]$ chmod 744 my_log.sh
注:
(1)/opt/module/applog/为 jar 包及配置文件所在路径
(2)/dev/null 代表 linux 的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
标准输入 0:从键盘获得输入 /proc/self/fd/0
标准输出 1:输出到屏幕(即控制台) /proc/self/fd/1
错误输出 2:输出到屏幕(即控制台) /proc/self/fd/2
4.集群所有进程查看脚本
1)在/home/itwise/bin 目录下创建脚本 xcall.sh
[itwise@node2 bin]$ vim xcall.sh
2)在脚本中编写如下内容
#! /bin/bash
for i in node2 node3 node4
do
echo --------- $i ----------
ssh $i "$*"
done
3)修改脚本权限
[itwise@node2 bin]$ chmod 777 xcall.sh
4)演示脚本
[itwise@node2 bin]$ my_xcall.sh jps
--------- node2 ----------
75754 Jps
--------- node3 ----------
110071 Jps
--------- node4 ----------
109851 Jps
my_xcall.sh ls /bin
i “$*”
done
[外链图片转存中...(img-qd6KB48r-1713832505017)]
3)修改脚本权限
[itwise@node2 bin]$ chmod 777 xcall.sh
4)演示脚本
[itwise@node2 bin]$ my_xcall.sh jps
--------- node2 ----------
75754 Jps
--------- node3 ----------
110071 Jps
--------- node4 ----------
109851 Jps
my_xcall.sh ls /bin