目录大纲
Part01-基础概念与理论知识
1.1 数据仓库概述
数据仓库是一个面向主题的、集成的、非易失的、随时间变化的数据集合,用于支持管理决策。在大数据时代,数据仓库需要处理海量数据,提供高效的分析能力。更多视频教程www.fgedu.net.cn
1.2 数据仓库分层架构
- ODS层(操作数据存储):存储原始数据,保持数据的原始形态
- DWD层(数据仓库明细层):对ODS层数据进行清洗和标准化
- DWS层(数据仓库汇总层):对DWD层数据进行汇总和聚合
- DM层(数据集市层):面向特定业务主题的数据集合
- APP层(应用层):为具体应用提供数据支持
1.3 数据建模方法
常用的数据建模方法包括:星型模型、雪花模型、星座模型等。不同的建模方法适用于不同的业务场景。学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 硬件资源规划
[root@fgedu.net.cn ~]# hadoop dfsadmin -report
Configured Capacity: 1099511627776 (1024.0 GB)
Present Capacity: 879609302016 (819.2 GB)
DFS Remaining: 703687441664 (655.4 GB)
DFS Used: 175921860352 (163.8 GB)
DFS Used%: 20.0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
2.2 存储方案设计
[root@fgedu.net.cn ~]# hdfs dfs -mkdir -p /user/fgedu/dw/ods
[root@fgedu.net.cn ~]# hdfs dfs -mkdir -p /user/fgedu/dw/dwd
[root@fgedu.net.cn ~]# hdfs dfs -mkdir -p /user/fgedu/dw/dws
[root@fgedu.net.cn ~]# hdfs dfs -mkdir -p /user/fgedu/dw/dm
[root@fgedu.net.cn ~]# hdfs dfs -mkdir -p /user/fgedu/dw/app
# 设置目录权限
[root@fgedu.net.cn ~]# hdfs dfs -chmod -R 755 /user/fgedu/dw
2.3 数据仓库架构设计
推荐使用分层架构设计,结合Hive、Spark等工具实现数据仓库的构建和管理。风哥提示:合理的架构设计可以提高数据仓库的可维护性和查询效率。
Part03-生产环境项目实施方案
3.1 数据仓库分层设计
hive> CREATE EXTERNAL TABLE ods.user_behavior (
user_id STRING,
item_id STRING,
behavior STRING,
timestamp BIGINT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LOCATION ‘/user/fgedu/dw/ods/user_behavior’;
# 创建DWD层表
hive> CREATE TABLE dwd.user_behavior (
user_id STRING,
item_id STRING,
behavior STRING,
timestamp BIGINT,
dt STRING
)
PARTITIONED BY (dt STRING);
# 创建DWS层表
hive> CREATE TABLE dws.user_behavior_summary (
dt STRING,
user_count BIGINT,
item_count BIGINT,
behavior_count BIGINT
)
PARTITIONED BY (dt STRING);
3.2 数据模型实现
hive> CREATE TABLE dm.sales_fact (
sale_id STRING,
customer_id STRING,
product_id STRING,
store_id STRING,
date_id STRING,
amount DOUBLE,
quantity INT
)
PARTITIONED BY (dt STRING);
# 创建维度表
hive> CREATE TABLE dm.customer_dim (
customer_id STRING,
customer_name STRING,
age INT,
gender STRING,
location STRING
);
hive> CREATE TABLE dm.product_dim (
product_id STRING,
product_name STRING,
category STRING,
price DOUBLE
);
hive> CREATE TABLE dm.store_dim (
store_id STRING,
store_name STRING,
location STRING
);
hive> CREATE TABLE dm.date_dim (
date_id STRING,
year INT,
month INT,
day INT,
quarter INT
);
3.3 ETL流程设计
#!/bin/bash
# etl_process.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 导出环境变量
export HADOOP_HOME=/bigdata/app/hadoop
export HIVE_HOME=/bigdata/app/hive
export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH
# 定义日期
DATE=$(date +%Y-%m-%d)
# ODS to DWD
hive -e “INSERT OVERWRITE TABLE dwd.user_behavior PARTITION (dt=’$DATE’)
SELECT
user_id,
item_id,
behavior,
timestamp,
FROM_UNIXTIME(timestamp, ‘yyyy-MM-dd’) AS dt
FROM ods.user_behavior
WHERE FROM_UNIXTIME(timestamp, ‘yyyy-MM-dd’) = ‘$DATE’;”
# DWD to DWS
hive -e “INSERT OVERWRITE TABLE dws.user_behavior_summary PARTITION (dt=’$DATE’)
SELECT
dt,
COUNT(DISTINCT user_id) AS user_count,
COUNT(DISTINCT item_id) AS item_count,
COUNT(*) AS behavior_count
FROM dwd.user_behavior
WHERE dt = ‘$DATE’
GROUP BY dt;”
# 检查执行结果
if [ $? -eq 0 ]; then
echo “ETL process successful”
else
echo “ETL process failed”
exit 1
fi
Part04-生产案例与实战讲解
4.1 电商数据仓库建模
案例背景
某电商平台需要构建数据仓库,实现用户行为分析、销售分析、库存管理等功能。
实施步骤
- 设计数据仓库分层架构
- 创建ODS层存储原始数据
- 创建DWD层进行数据清洗和标准化
- 创建DWS层进行数据汇总
- 创建DM层面向特定业务主题
- 开发ETL流程实现数据流转
实施效果
数据仓库上线后,报表生成时间从原来的2小时减少到15分钟,分析效率提升了87.5%。from bigdata视频:www.itpux.com
4.2 金融数据仓库建模
#!/bin/bash
# financial_dw_modeling.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 导出环境变量
export HADOOP_HOME=/bigdata/app/hadoop
export HIVE_HOME=/bigdata/app/hive
export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH
# 创建金融数据仓库表
hive -f /bigdata/app/scripts/financial_dw_modeling.sql
# 检查执行结果
if [ $? -eq 0 ]; then
echo “金融数据仓库建模成功”
else
echo “金融数据仓库建模失败”
exit 1
fi
4.3 物流数据仓库建模
hive> CREATE TABLE dm.logistics_fact (
order_id STRING,
logistics_id STRING,
customer_id STRING,
warehouse_id STRING,
carrier_id STRING,
date_id STRING,
shipping_fee DOUBLE,
delivery_time INT
)
PARTITIONED BY (dt STRING);
# 创建维度表
hive> CREATE TABLE dm.warehouse_dim (
warehouse_id STRING,
warehouse_name STRING,
location STRING,
capacity INT
);
hive> CREATE TABLE dm.carrier_dim (
carrier_id STRING,
carrier_name STRING,
service_level STRING
);
# 加载数据
hive> INSERT INTO TABLE dm.logistics_fact PARTITION (dt=’2023-04-08′)
SELECT
order_id,
logistics_id,
customer_id,
warehouse_id,
carrier_id,
date_id,
shipping_fee,
delivery_time
FROM dwd.logistics
WHERE dt = ‘2023-04-08’;
Part05-风哥经验总结与分享
5.1 数据仓库建模最佳实践
- 分层设计:合理设计数据仓库分层,提高数据管理效率
- 标准化:统一数据格式和命名规范
- 增量更新:采用增量更新策略,减少数据处理量
- 数据质量:建立数据质量监控机制
- 元数据管理:建立完善的元数据管理体系
5.2 性能优化技巧
hive> set hive.exec.parallel=true;
hive> set hive.exec.parallel.thread.number=8;
hive> set hive.vectorized.execution.enabled=true;
hive> set hive.vectorized.execution.reduce.enabled=true;
hive> set hive.auto.convert.join=true;
hive> set hive.optimize.skewjoin=true;
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
5.3 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 数据质量差 | 原始数据存在问题 | 加强数据清洗和校验 |
| 查询性能慢 | 数据量过大或索引设计不合理 | 优化查询语句,合理分区 |
| ETL执行时间长 | 数据处理逻辑复杂或资源不足 | 优化ETL流程,增加资源配置 |
| 存储成本高 | 数据量过大,存储策略不合理 | 使用数据压缩,设置合理的存储策略 |
通过Hadoop生态系统构建的数据仓库,可以高效处理海量数据,为企业提供强大的数据分析能力,支持管理决策和业务发展。学习交流加群风哥QQ113257174
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
