数仓实战

1. 概念

电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

技术选型:
电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

搭建环境

三台ECS创建wts用户:

useradd wts
passwd wts
输入两边密码
cd /home   有无wts?

让wts有sudoer权力:

[root@hadoop100 ~]# vim /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
wts ALL=(ALL) NOPASSWD:ALL

配置windows下hosts映射:不多说了
配置三个ecs之间的映射:不多说了

阿里云ECS云服务器–选择的是抢占式 很便宜
P23课(电脑不够,云服务器来凑;开虚拟机的话后期16G内存根本不够)

电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

前面根据之前学的mapreduce配置,其中配置三台云服务器之间的免密码登录的时候遇到了点小问题:
1.首先要在三台云服务器里面设置映射:vim /etc/hosts
把相关的私有IP(上图)写进去
2.然后才可以配置之间的免密码登录

生成日志

把材料中的四个文件拖进/opt/module/applog下面
运行:java -jar gmall2020-mock-log-2021-01-22.jar

写集群日志生成脚本lg.sh,脚本统一写在~/bin目录下

#!/bin/bash
for i in hadoop102 hadoop103; do
    echo "========== $i =========="
    ssh $i "cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar >/dev/null 2>&1 &"
done

lg.sh脚本applog文件夹分发到hadoop102 103上面,
(删除hadoop104的applog,要求部署在102和103上面;同时删除刚刚在102运行产生的log日志)
效果:启动脚本,102和103上产生log日志…

集群所有进程查看脚本

同理在~/bin下创建脚本:vim xcall.sh

#! /bin/bash

for i in hadoop102 hadoop103 hadoop104
do
    echo --------- $i ----------
    ssh $i "$*"
done

分发到三个集群,效果:

电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

用户行为数据采集

安装和解压hadoop,配置hadoop
五个地方要配置(core,hdfs,yarn,mapreduce,workers)
另外还要配置历史服务器日志聚集

下面:
配置全部完成,第一次格式化,第二次启动hadoop
报错了,如下:

电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP参考大哥:ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. 其中的方式二解决

最终的效果:红色的区域和老师启动不太一样,但是jps是一样的。(这个方法没有解决yarn的报错,不知道为什么,留着。。。)
电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

hadoop103上启动yarn:
报错:

电商数仓——(师承尚硅谷)大数据实战项目-LMLPHP

参考:启动start-yarn.sh报错ERROR: Attempting to operate on yarn resourcemanager as root ERROR: but there is no

解决方法:
到 sbin 目录下 更改 start-yarn.sh 和 stop-yarn.sh 信息,在两个配置文件的第一行添加:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

有报错:jps运行正常,ping三台ECS云服务器的公IP也是同的,但是hadoop102:9870页面打不开
解决办法汇总:

1.Windows下ping一下hadoop102是否通?有问题大概率是windows下的hosts映射
2.虚拟环境,防火墙关了
3.检查hdfs-site.xml 配置web页面的那一块是否写对了

4如果你也是和我一样的阿里云服务ECS,你的安全组端口,要自己配一下9870的端口.(我就是这个问题)

zookeeper

解压改名安装配置

1.   创建zkData 给三台机器各自的myid
2. 配置conf,zoo.cfg

修改数据存储路径到zkData里面
配置设置server.A=B:C:D

群起zookeeper:

#!/bin/bash

case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 启动 ------------
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 停止 ------------
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
	done
};;
"status"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 状态 ------------
		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
	done
};;
esac

777 该权限,后就可以使用

07-25 12:47