1. 首页 > Hadoop教程 > 正文

大数据教程FG108-Hadoop数据仓库分层建模实战

目录大纲

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 存储方案设计

# 创建HDFS目录结构
[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 数据仓库分层设计

# 创建ODS层表
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流程设计

# 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 电商数据仓库建模

案例背景

某电商平台需要构建数据仓库,实现用户行为分析、销售分析、库存管理等功能。

实施步骤

  1. 设计数据仓库分层架构
  2. 创建ODS层存储原始数据
  3. 创建DWD层进行数据清洗和标准化
  4. 创建DWS层进行数据汇总
  5. 创建DM层面向特定业务主题
  6. 开发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查询性能
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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息