一、项目介绍
1、项目背景
现在是互联网的时代, 每个人的生活中都会使用到互联网的各种应用, 我们会进行网络购物, 会进行新闻浏览, 视频浏览, 微信聊天等等, 当我们在使用互联网的时候, 我们的所有的数据都需要通过运行商(电信, 移动,联通)进行数据的发送和接收, 对于每一个访问, 运营商都可以获取到对应的请求信息, 我们可以通过对网络请求的信息分析, 及时掌握互联网的动态和行业前沿, 并且根据用户的请求访问数据, 我们可以分析互联网行业的发展现状和每个城市的互联网的发展程度等等. 通过对于互联网的发展的相关指标分析, 可以为政府部门, 商业公司提供一些决策分析的数据。
离线数仓:spark + hive
实时数仓:flink
2、项目的价值
1)企业价值
- 为相关统计部门提供数据支持, 比如上网的用户时长, 上网的用户人数, 上网模式的占比等等
- 为行业发展的预测提供数据支撑
- 为企业发展提供数据支撑, 分析每个网站的访问情况
2)学习价值
- 完整的大数据项目实战流程
- 最新的大数据生态技术 Hadoop3.1.3, Spark3, Hive3.1.2
- 数据仓库的设计和建设
3、项目的最终效果
4、项目的系统流程分析
大数据平台开发 -- 帮助企业自研大数据平台
数仓(离线数仓、实时数仓)
BI工程师 (报表开发) 数据分析
ETL工程师
大数据运维
售前工程师(技术专家)
5、数据格式说明
完整一条日志记录格式
{
"client_ip": "139.212.175.95",
"device_type": "mobile",
"time": 1659959785000,
"type": "5G",
"device": "cf287649b5b1443c903b7405fa08cb07",
"url": "https://www.yy.com/travel"
}
二、大数据环境搭建
Vmware 是什么? 帮助我们在windows上安装另一个操作系统的软件。(虚拟盒子virtual Box,mac系统 pd)
Centos7.xxxx.iso --> 镜像文件,类似于操作系统安装盘
以下这个图是centos安装过之后的系统,只能打开。
1、集群规划
安装jdk的时候,先安装biz01,然后将其拷贝到hadoop01~03上。
jps命令如果识别不了,是jdk的问题。
biz01上安装了mysql5.7。
搭建了大数据hadoop平台。(训练-->linux 使用越来越熟练,体会到脚本的力量)。
河南企业:牧原、蜜雪冰城、锅圈、双汇、宇通、中原银行(中原消费金融)、富士康 等。技术脱虚向实。
关于虚拟机的安装:
以上图:14 修改为114
2、统一环境配置
2.1 IP地址设置
- 修改Ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 设置为静态ip static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33" # 网卡的名称
DEVICE="ens33" # 设备的名称
ONBOOT="yes" # 设置为yes, 表示开机启动
IPADDR="192.168.233.130" # ip地址
PREFIX="24" # 子网掩码
GATEWAY="192.168.233.2" # 网关
DNS1="114.114.114.114" # DNS
- 重启网络服务
systemctl restart network
- 测试网络
ping www.baidu.com
如果可以ping通公网: 说明 ip地址和网关都配置正确
如果通过 ip addr 不能查看到ip地址, 说明配置有错误
如果可以ping通内网 192.168.46.1 但是不能ping通外网的话, 则说明网关配置有错误
ctrl + c 退出
2.2 设置主机名
- 编辑主机名配置文件
vi /etc/hostname
hadoop01
2.3 设置域名映射解析
- 编辑hosts文件
vi /etc/hosts
192.168.46.145 hadoop01 hadoop01
192.168.46.146 hadoop02 hadoop02
192.168.46.147 hadoop03 hadoop03
192.168.46.148 biz01 biz01
2.4 关闭防火墙和Selinux
- 关闭防火墙
systemctl stop firewalld 停止防火墙
systemctl disable firewalld 开机不启动防火墙
- 关闭Selinux
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
至此第一台服务器设置完成,进行克隆clone
2.4.1 三台服务器的克隆
将第一台关闭,然后右键,克隆
修改hadoop01、hadoop02、hadoop03 的ip 以及主机名
vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ip
修改完之后记得重启网络 systemctl restart network
修改主机名 vi /etc/hostname --> hadoop01
reboot 重启虚拟机
hadoop02 和 03 操作都是一样的
首先第一步查看自己的IP号段是多少:
修改IP地址:
如果以上还是解决不了问题,怎么办?
2.4.2 可以使用远程连接工具连接你的虚拟机
连接四台服务器。
2.5 配置免密登录
- 在所有节点生成公钥和私钥 biz01
ssh-keygen -t rsa
后面直接所有的交互都敲回车 即可
- 拷贝公钥到每台服务器
ssh-copy-id biz01
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
- 验证ssh登录
ssh hadoop01
exit # 退出ssh登录
ssh-keygen -t rsa
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
2.6 配置服务器节点时钟同步
- 在所有节点安装ntpdate
yum install -y ntpdate
ntpdate time1.aliyun.com
- 同步时间脚本
#!/bin/bash
# 定义阿里云 NTP 服务器地址
ALI_NTP_SERVER="ntp1.aliyun.com"
# 定义要同步时间的主机列表
HOSTS=("hadoop01" "hadoop02" "hadoop03")
for host in "${HOSTS[@]}"; do
echo "Syncing time on $host"
ssh -n $host "ntpdate -u ${ALI_NTP_SERVER}"
done
chmod u+x sync-date.sh
如果有问题,请修改为阿里云的yum地址:
修改阿里云的镜像文件:
1、cd /etc/yum.repos.d/
2、备份⼀下:mv CentOS-Base.repo CentOS-Base.repo.bak
3、下载阿⾥云镜像到本地:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4、清除yum的缓存
yum clean all
yum makecache
5、yum install -y ntpdate
2.7 安装常用软件
在四台虚拟机上全部运行如下命令,下载软件。
yum install -y vim
yum install -y net-tools
yum install -y lrzsz
yum install -y rsync
yum install -y wget
2.8 创建统一目录
在四台虚拟机上全部运行如下命令:
mkdir -p /bigdata/{soft,server}
/bigdata/soft 安装文件的存放目录 存放软件安装包
/bigdata/server 软件安装的目录 存放软件安装的实际位置
2.9 定义同步数据脚本
安装软件rsync
yum install -y rsync --因为以前安装过了,此处不需要安装
配置同步脚本[hadoop01]
mkdir /root/bin
cd /root/bin
vim xsync
#!/bin/bash
#1 获取命令输入参数的个数,如果个数为0,直接退出命令
paramnum=$#
echo "paramnum:$paramnum"
if (( paramnum == 0 )); then
echo no params;
exit;
fi
# 2 根据传入参数获取文件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name
#3 获取输入参数的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取用户名称
user=`whoami`
#5 循环执行rsync
current=`hostname`
nodes=$(cat /root/bin/works)
for host in $nodes; do
echo ------------------- $host --------------
if [ "$host" != "$current" ];then
rsync -rvl $pdir/$file_name $user@$host:$pdir
fi
done
给脚本赋权限:
chmod u+x xsync
创建works文件[hadoop01]
cd /root/bin
vi works
hadoop01
hadoop02
hadoop03
2.10 添加环境变量【hadoop01】
vi /etc/profile.d/custom_env.sh
#!/bin/bash
#root/bin
export PATH=$PATH:/root/bin
source /etc/profile
设置文件执行权限
chmod u+x /root/bin/xsync
2.11、测试同步脚本
3、 jdk环境安装 [hadoop01]
3.1 把安装的软件上传到/bigdata/soft 目录
- 解压到指定目录
-C :指定解压到指定目录
tar -zxvf /bigdata/soft/jdk-8u241-linux-x64.tar.gz -C /bigdata/server/
3.2 创建一个软链接
cd /bigdata/server
ln -s jdk1.8.0_241/ jdk1.8
3.3 配置环境变量
vi /etc/profile.d/custom_env.sh
export JAVA_HOME=/bigdata/server/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
重新加载配置文件
source /etc/profile
3.4 测试验证
java -version
3.5 同步至所有节点
# 同步到biz01, hadoop01, hadoop02, hadoop03
xsync /etc/profile.d/custom_env.sh
xsync /bigdata/server/jdk1.8.0_241
xsync /bigdata/server/jdk1.8
通过如下命令同步软件到biz01 下:
scp -r /etc/profile.d/custom_env.sh biz01:/etc/profile.d/custom_env.sh
scp -r /bigdata/server/jdk1.8.0_241 biz01:/bigdata/server/jdk1.8.0_241
在biz01 创建软链接
cd /bigdata/server
ln -s jdk1.8.0_241/ jdk1.8
4、MySQL数据库安装
4.1 卸载已经安装的MySQL数据库
## 查询MySQL相关的依赖
rpm -qa |grep mysql
rpm -qa | grep mariadb
## 如果存在, 则通过rpm -e --nodeps 进行卸载
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
4.2 获取rpm在线安装仓库文件[/bigdata/soft]
cd /bigdata/soft
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
4.3 安装mysql的仓库文件
rpm -ivh mysql80-community-release-el7-6.noarch.rpm
4.4 修改mysql仓库的配置文件
cd /etc/yum.repos.d/
mysql-community.repo: 用于指定下载哪个版本的安装包
mysql-community-source.repo: 用于指定下载哪个版本的源码
`禁用8.0的版本, 启用5.7的版本`
4.5 安装MySQL5.7
## 导入签名的信息key
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
## 安装5.7
yum install -y mysql-community-server
4.6 启动数据库
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
4.7 登录数据库
## 查看初始密码
less /var/log/mysqld.log |grep pass
## 登录数据库
mysql -uroot -p
右键复制密码
4.8 修改MySQL数据库密码策略
set global validate_password_length=4;
set global validate_password_policy=0;
4.9 创建远程登录用户
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#创建一个远程登录用户
create user 'root'@'%' identified by '123456';
## 设置远程登录权限
grant all privileges on *.* to 'root'@'%';
exit 退出mysql客户端
4.10 设置服务器编码为utf8
vi /etc/my.cnf
## 在mysqld下面设置
character_set_server=utf8
## 重启服务
systemctl restart mysqld
可以使用一些mysql的客户端软件,比如 SQLog、Navicat MySQL、DataGrip
5、Hadoop集群安装
5.1 集群规划
hadoop01 |
hadoop02 |
hadoop03 |
|
角色 |
主节点 |
从节点 |
从节点 |
NameNode |
√ |
||
DataNode |
√ |
√ |
√ |
ResourceManager |
√ |
||
NodeManager |
√ |
√ |
√ |
SecondaryNameNode |
√ |
||
Historyserver |
√ |