离线数仓搭建

离线数仓搭建

😀首先本文章只负责怎么去搭建,而不负责怎么讲解详细的内容需要详细内容请前往:
离线数仓6.0
请先把Hadoop全家桶搭建完毕:
阿里云安装Hadoop基础

1.开始文件准备和准备工作

下载地址:
文件1
文件2

Untitled

Untitled

Untitled

命令脚本记得给权限,参考脚本

#!/bin/bash

# 获取当前目录下所有以 .sh 结尾的脚本文件
scripts=$(ls *.sh)

# 给每个脚本赋予执行权限
for script in $scripts; do
    chmod 777 "$script"
    echo "已给予 $script 执行权限"
done

echo "所有脚本已批量赋予执行权限"

记得给权限

Untitled

这三个不用管,所以开始前我们需要确定有这些文件和配置

2.MySQL建表

创建一个数据库gmall

Untitled

运行sql文件

Untitled

Untitled

Untitled

为Maxwell进行MySQL的配置

sudo vim /etc/my.cnf

#数据库id
server-id = 1
#启动binlog,该参数的值会作为binlog的文件名
log-bin=mysql-bin
#binlog类型,maxwell要求为row类型
binlog_format=row
#启用binlog的数据库,需根据实际情况作出修改
binlog-do-db=gmall

创建数据库

CREATE DATABASE maxwell;
CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell';
GRANT ALL ON maxwell.* TO 'maxwell'@'%';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

修改Maxwell配置文件

cd /opt/module/maxwell
cp config.properties.example config.properties
vim config.properties
#Maxwell数据发送目的地,可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
producer=kafka
# 目标Kafka集群地址
kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
#目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=topic_db

# MySQL相关配置
host=hadoop102
user=maxwell
password=maxwell
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

# 过滤gmall中的z_log表数据,该表是日志数据的备份,无须采集
filter=exclude:gmall.z_log
# 指定数据按照主键分组进入Kafka不同分区,避免数据倾斜
producer_partition_by=primary_key

3.数据同步

3.1 Datax设置

cd /opt/module/gen_datax_config
vim configuration.properties
mysql.username=root
mysql.password=000000
mysql.host=hadoop102
mysql.port=3306
mysql.database.import=gmall
mysql.tables.import=activity_info,activity_rule,base_trademark,cart_info,base_category1,base_category2,base_category3,coupon_info,sku_attr_value,sku_sale_attr_value,base_dic,sku_info,base_province,spu_info,base_region,promotion_pos,promotion_refer
is.seperated.tables=0
hdfs.uri=hdfs://hadoop102:8020
import_out_dir=/opt/module/datax/job/import

执行

java -jar datax-config-generator-1.0-SNAPSHOT-jar-with-dependencies.jar
 ll /opt/module/datax/job/import

Untitled

3.2 全量表同步

 mysql_to_hdfs_full.sh all 2022-06-08

等一会时间,让数据跑一会

我们会发现多出来17张表

Untitled

3.3增量表同步

vim /opt/module/maxwell/config.properties
mock_date=2022-06-08
mxw.sh start
mysql_to_kafka_inc_init.sh all

观察发现

Untitled

多出来13张表,也就是说,现在有30张表

4 数据模拟准备

4.1.先将HDFS上/origin_data路径下之前的数据删除

Untitled

4.2.数据准备

 vim application.yml 
 cluster.sh
 mxw.sh stop

Untitled

运行lg.sh模拟数据

接下来将修改为

#业务日期
mock.date: "2022-06-05"
#是否重置业务数据
mock.clear.busi: 0
#是否重置用户数据
mock.clear.user: 0
# 批量生成新用户
mock.new.user: 0

再次运行lg.sh

到后面将时间修改为06,07分别运行lg.sh

4.3.删除/origin_data/gmall/log目录

将时间修改为08并执行lg.sh

Untitled

Untitled

4.4.全量表同步

mysql_to_hdfs_full.sh all 2022-06-08

Untitled

4.5.清空MySQL中的maxwell数据库的表

use maxwell;
drop table maxwell.bootstrap;
drop table maxwell.columns;
drop table maxwell.databases;
drop table maxwell.heartbeats;
drop table maxwell.positions;
drop table maxwell.schemas;
drop table maxwell.tables;
vim /opt/module/maxwell/config.properties

Untitled

启动Maxwell

mysql_to_kafka_inc_init.sh all

Untitled

4.6.DataGrip 中注释乱码问题

use metastore;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

5.Hive表的创建

5.1 ODS

执行ods.sql的内容

然后执行下面命令

hdfs_to_ods_log.sh 2022-06-08

5.2 DIM

执行DIM.sql

1.先执行到这两个线条上面,然后上传date_info.txt到/warehouse/gmall/tmp/tmp_dim_date_info

 hadoop fs -put date_info.txt /warehouse/gmall/tmp/tmp_dim_date_info

Untitled

其余的直接执行

5.3 DWD

执行dwd.sql

5.4 DWS

执行dws.sql

5.5 ADS

执行ads.sql

5.6 MySQL创建表

执行MySQL建库建表.sql

5.7 报表导出

5.7.1 编写DataX

vim /opt/module/gen_datax_config/configuration.properties

mysql.username=root
mysql.password=000000
mysql.host=hadoop102
mysql.port=3306
mysql.database.import=gmall
# 从HDFS导出进入的 MySQL 数据库名称
mysql.database.export=gmall_report
mysql.tables.import=activity_info,activity_rule,base_trademark,cart_info,base_category1,base_category2,base_category3,coupon_info,sku_attr_value,sku_sale_attr_value,base_dic,sku_info,base_province,spu_info,base_region,promotion_pos,promotion_refer
# MySQL 库中需要导出的表,空串表示导出库的所有表
mysql.tables.export=
is.seperated.tables=0
hdfs.uri=hdfs://hadoop102:8020
import_out_dir=/opt/module/datax/job/import
# DataX 导出配置文件存放路径
export_out_dir=/opt/module/datax/job/export

cd **/opt/module/gen_datax_config**
java -jar datax-config-generator-1.0-SNAPSHOT-jar-with-dependencies.jar 
ll /opt/module/datax/job/export/

Untitled

6.最终数据的开始

注意:对自己机器有信心的话,直接执行脚本,没信心的话,执行一个,重启或者等待几分钟执行下一个

6.1 修改时间

vim /opt/module/applog/application.yml

Untitled

6.2 启动全部进程

cd /home/hadoop/bin/
cluster.sh start
hi.sh start

查看进程:

Untitled

6.3 开始

lg.sh
./yxhHDFS.sh 2022-06-09 

等吧,每个半个小时起步或者一个小时,是搞不定的

Untitled

7.可视化报表

7.1安装Miniconda

下载

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

执行

 bash Miniconda3-latest-Linux-x86_64.sh

指定安装路径 /opt/module/miniconda3

添加环境变量和刷新一遍,然后在关闭窗口重新开一遍

取消激活base环境

conda config --set auto_activate_base false

创建环境

conda create --name superset python=3.8.16
conda activate superset
python -V

Untitled

7.2下载依赖

sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel

更新pip

pip install --upgrade pip -i https://pypi.douban.com/simple/

上传base.txt到任意目录下,且cd到该目录

安装superset

 pip install apache-superset==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple -r base.txt

7.3配置Superset元数据库

CREATE DATABASE superset DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

create user superset@'%' identified WITH mysql_native_password BY 'superset';

grant all privileges on *.* to superset@'%' with grant option;

修改superset配置文件

Untitled

更具自己的地址来修改

vim /home/hadoop/.conda/envs/superset/lib/python3.8/site-packages/superset/config.py

vim中查找方法

?SQLALCHEMY_DATABASE_URI

执行两次就到我们需要的位置

Untitled

# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI = 'mysql://superset:superset@hadoop102:3306/superset?charset=utf8'

7.4安装python msyql驱动

conda install mysqlclient
 export FLASK_APP=superset
superset db upgrade

SupersetSet初始化

superset fab create-admin
superset init
pip install gunicorn -i https://pypi.douban.com/simple/

Untitled

随便输入记得住就行
启动

 superset.sh start

Untitled

当当进来了

8. 开始绘图

8.1 配置数据源

Untitled

Untitled

Untitled

mysql://superset:superset@hadoop102:3306/gmall_report?charset=utf8

Untitled

**Table配置**   

Untitled

Untitled

按需求添加自己需要的

Untitled

开始绘图

Untitled

Untitled

Untitled

Untitled

我没跑数据,所以就这一点

剩下的图

全国图:

Untitled

Untitled

品牌下单统计图:

Untitled
Untitled

物品饼图:

Untitled

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、项目简介 本项目教程以国内电商巨头实际业务应用场景为依托,同时以阿里云ECS服务器为技术支持,紧跟大数据主流场景,对接企业实际需求,对电商数仓的常见实战指标进行了详尽讲解,让你迅速成长,获取最前沿的技术经验。 二、项目架构 版本框架:Flume、DateHub、DataWorks、MaxCompute、MySql以及QuickBI等; Flume:大数据领域被广泛运用的日志采集框架; DateHub:类似于传统大数据解决方案中Kafka的角色,提供了一个数据队列功能。对于离线计算,DataHub除了供了一个缓冲的队列作用。同时由于DataHub提供了各种与其他阿里云上下游产品的对接功能,所以DataHub又扮演了一个数据的分发枢纽工作; 据上传和下载通道,提供SQL及MapReduce等多种计算分析服务,同时还提供完善的安全解决方案; DataWorks:是基于MaxCompute计算引擎,从工作室、车间到工具集都齐备的一站式大数据工厂,它能帮助你快速完成数据集成、开发、治理、服务、质量、安全等全套数据研发工作; QuickBI & DataV:专为云上用户量身打造的新一代智能BI服务平台。 三、项目场景 数仓项目广泛应用于大数据领域,该项目技术可以高度适配电商、金融、医疗、在线教育、传媒、电信、交通等各领域; 四、项目特色 本课程结合国内多家企业实际项目经验。从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建基于阿里云服务器的大数据集群。采用阿里云ECS服务器作为数据平台,搭建高可用的、高可靠的Flume数据采集通道,运用阿里云DateHub构建中间缓冲队列并担任数据分发枢纽将数据推送至阿里自主研发的DataWorks对数据进行分层处理,采用MaxCompute作为处理海量数据的方案,将计算结果保存至MySQL并结合阿里的QuickBI工作做最终数据展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值