Hadoop 数据仓库建设实践(理论结合实践)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: Hadoop 数据仓库建设实践(理论结合实践)

前言


前面和大家分享了,维度建模的理论基础,包括维度表设计的方法论和深入剖析了事实表,今天就理论结合实践,和大家聊聊完整的一个数仓构建的过程!


数据的重要性和战略意义毋庸置疑,目前业界也都在热火朝天地将大数据战略落地和用于实战。


在这个过程中,我们首要的问题就是数据平台的搭建,主要包括物理和逻辑两个方面:


物理数据平台的搭建包括 硬件、大数据工具和技术的选型、购买、搭建 等;


逻辑数据平台的搭建则包含 数据平台架构设计、数据规范制定、数据开发实施和维护 等。


物理平台的搭建可以购买成熟的独立商业解决方案,也可以 DIY (自己购买服务器、存储等各种硬件平台、并购买商用数据处理软件和工具或者选用开源的数据处理框架,如 Hadoop、Hive、Kettle 等,自己自由组合搭建数据平台)。


但是数据平台已然成为了一个机构和组织的关键基础设施,已经像“水电煤”一样不可或缺了。


既然是“水电煤”,那么还需要自己“发电”和“供水”吗?为什么要自己搭建物理数据平台并负责维护呢?目前技术的发展实际上也给出了否定的答案,未来的数据和数据平台就如同业务系统一样,都会在云端(可能是公有云,也可能是专有云)。随需随用,所以基于云的数据平台解决方案势必会成为主流。


业务背景


我们就假设某虚拟的、全国连锁的大型零售超市 FutureRetailer 为对象(国外的对标公司为沃尔玛、家乐福、乐购等),为其搭建基于 Hadoop 的数据仓库。之所以选择零售业务,是因为大家都非常熟悉其业务,包括全国连锁业务形态、收银台购物流程、商品供应、商品库存管理等。


并且 FutureRetailer 在全国的各个城市内运营着数以千计的超市 ,根据城市的人口规模和大小不同,门店也不同,比如对于一线或者重点二线城市,其门店可能数以十计甚至几十计,在某些三四级城市或者乡镇来说,可能只有一个甚至没有。其每一个门店都包含了完整各类商品包含杂货、日常生活用品、水果生鲜、肉类、蔬菜、冷冻食品、花卉等。


所以,对于 FutureRetailer 来说,数据仓库平台对其至关重要。因为数据平台是其数据化运营的前提和基础,基于数据仓库平台生成的各种销售报表和库存报表是公司管理层和各个城市运营人员以及门店运营人员决策的主要依据。



整个公司的整体销售趋势如何?


是否应该对某些滞销的商品进行促销?


客户是否在流失?


某些畅销商品是否应该及时补货 如何择自营商品从而利润最大化?


以上这些我们都需要通过及时、准确和精炼过的数据来支持。


同时对于 FutureRetailer 来说,过去的数据分析只是一个方面,更为重要的是对于未来的预测和分析。比如未来商品销售估计,并据此制订采购计划 。随着新零售的兴起,未来的消费者需要的是更为个性化的服务和产品,如何将这种个性化的商品和服务提供给消费者?



马爸爸也说过:“纯电商时代过去了,未来十年是新零售的时代”。


对 FutureRetailer 来说,未来的购物也许将会是如下情景:


1 )一位资深 FutureRetailer 会员,其近年来购买商品的种类、型号、时间 、支付方式、会员卡基本信息、住址、联系方式,以及由此生成的会员购买商品档次评级、消费评级、退款评价等都被数据平台详细记录。


2 )会员步入超市或者开车进入超市停车场, FutureRetailer 车牌识别系统、视频系统或者 WiFi 网络(如果会员通过手机接人)捕获到会员来访,预测会员可能的购买清单,井有针对性地生成促销和优惠信息 。比如,会员上次拿起某件商品仔细查看了商品价格但没有购买,那么 FutureRetailer 此次将推荐另一个高性价比的同款商品给会员。


3 )会员到收银台结账, FutureRetailer 会预测下次会员的来访时间,并更新采购计划和清单等。


上述所有智能化的、个性化的购买行为必须借助数据平台的支撑。


Hadoop 数据仓库架构设计


首先介绍基于 Hadoop 的数据仓库逻辑架构,在 Hadoop 数据仓库的实际设计中,通常出于可维护性、性能成本以及使用便捷性考虑,会对数据仓库中的表进行分层。


来自于源头操作性系统的数据表通常会原封不动地存储一份,这称为 ODS ( Operation Data Store )层 。ODS 层通常也被称为准备区( staging area ),它们是后续数据仓库层(即基于 Kimball 维度建模生成的事实表和维度表层,以及基于这些事实表和明细表加工的汇总层数据)加工数据的来源。同时 ODS 层也存储着历史的增量或者全量数据。


数据仓库层(DW层)是 Hadoop 数据平台的主体内容。


数据仓库层的数据是 ODS 层数据经过 ETL 清洗、转换、加载生成的。 Hadoop 数据仓库的 DW 层通常都是基于 Kimball 的维度建模理论来构建的,并通过 维度一致性 和 数据总线 来保证各个子主题的维度一致性。


DW 层的数据一定是清洗过的、干净的、一致的、规范的、准确的数据。数据平台的下游用户将会直接使用 DW 层数据,而 ODS 层数据原则上不允许下游用户直接接触和访问。


此外,处于性能、重复计算和使用便捷性考虑, DW 层数据除了保存基于 Kimball 维度建模的最细校度的事实表和维度表(即 DW 层的明细层),还会基于它们生成一层汇总数据(即 DW 的汇总层)。


汇总层的设计 主要是出于性能以及避免重复计算考虑。实际数据仓库的汇总层如何设计以及主要对哪些维度进行汇总等,需要根据业务需求以及明细层实际汇总频率来确定,原则上,业务使用频繁的维度需要对这些维度建立汇总层,汇总的指标可以和业务需求方共同设计完成。


在 DW 层的基础上,各个业务方或者部门可以建立自己的 数据集市( Data Mart ),此层一般称为 应用层 。应用层的数据来源于 DW 层,原则上不允许应用层直接访问 ODS 层,相比 DW 层,应用层只包含部门或者业务方自己关心的明细层和汇总层数据。


不同于 DW 层字段和指标的通用性,应用层可以包含自己业务或者部门特殊的指标或者字段,但是如果需要横向和其他部门对比, 必须采用公共层公用的指标和字段 。


采用上述“ ODS 层→ DW 层→应用层”的数据仓库逻辑架构如图所示:


项目实际中,采用上述分层架构可以有以下好处:


屏蔽源头系统业务变更、系统变更对于下游用户的影晌: 如果源头系统业务发生变更,相关的变更由 DW 层来处理,对下游用户透明,无须改动下游用户的代码和逻辑。


屏蔽源头业务系统的复杂性: 源头系统可能极为繁杂,而且表命名、字段命名 、字段含义等可能五花八门,通过 DW 层来规范和屏蔽所有这些复杂性,保证下游数据用户使用数据的便捷和规范。


避免重复计算和存储: 通过汇总层的引人,避免了下游用户逻辑的重复计算, 节省了用户的开发时间和精力,同时也节省了计算和存储。

数据仓库的可维护性: 分层的设计使得某一层的问题只在该层得到解决,无须更改下一层的代码和逻辑。


Hadoop 数据仓库规范设计


对于一个公司或者组织来说,使用数据的用户可能成百上千,如何降低大家对于数据使用的沟通成本、如何通过规范大家的行为来降低使用数据的风险,这些问题是必须加以考虑的。


我们在实际实践中,通常用数据仓库的规范来达到此目的。数据仓库的规范包括很多方面,如数据的命名规范、开发规范、流程规范、安全规范和质量规范等,下面将结合 FutureRetail 业务介绍常用的命名、开发和流程规范。


命名规范


命名的规范主要分为表命名的规范和字段命名的规范。


其中表命名的规范是为了让数据所有相关方对表包含的信息有一个共同的认知,比如属于哪一层(ODS、DWD、DWS、ADS)?哪个业务领域(销售、库存、促销)等?哪个维度(商品、买家、卖家、类目等)?哪个时间跨度(天、月、年、实时)?增量还是全量?


基于此,数据平台建设者应该首先规定数据仓库分层、业务领域、常见维度和时间跨度等的英文缩写,并据此给出表的命名规范。



开发规范

开发规范主要用于规范和约束数据开发人员和使用人员的习惯,以最大限度地降低数据的使用风险,并同时保证用户遵守最佳实践 毕竟数据代码并不仅是给自己看的,很多时候也需要供他人阅读和参考, 尤其是处理问题的时候。


开发规范主要包含以下几个方面。


主数据任务的分类和存放(即目录结构的划分) :公共代码如何存放,个人代码如何存放,项目和产品的代码如何分类存放,实际项目中需要对此进行统筹规划并保证每个人都遵守,以使得用户很容易找到对应项目、产品或者各个层次的代码( ODS 、DWD、DWS、ADS)。


代码的编程规范: 比如任务注释的规范必须包含哪些部分 代码的对齐规范、代码的开发约定等。


最佳实践 :在数据仓库的开发实践中,有些最佳实践(比如货币金额都约定用分来表示、灵活运用时间分区、数据类型定义规范等)都需要用开发规范来约束用户的行为,以确保最佳实践得以落地。


流程规范


流程规范用于规范开发流程行为,以保证数据交付进度和质量,降低交付风险。


流程规范主要分为需求流程规范和开发流程规范,常见的需求流程规范如图:



常见的开发流程规范如图:



FutureRetailer 数据仓库构建实践


作为一家全国性的大型零售超市,FutureRetailer 总部的职能部门以及 FutureRetailer 各个区域、城市对于各自业务领域都有强烈的数据需求。


我们在前面介绍了 Kimball 维度建模理论为基础构建的数据仓库,在维度建模环节我们会采用有序的四个环节来设计各个业务主题的数据仓库(即 选择业务过程、定义粒度、确定维度和确定事实),同时维度建模用 维度一致性 和 数据总线架构 来保证各个子主题维度数据的一致性。


首先划分 FutureRetailer 的业务主题,很容易将主题划分为 销售域、库存域、客户服务域、采购域 等,其次就是 确定每个主题域的事实表和维度表。


对于上述每个主题域,比如销售,需要选择 最细粒度的数据,很容易确定销售数据域的最细粒度事务为购物小票的子项、库存域的最细粒度为商品SKU的库存等。


确定粒度之后,相关的维度也已基本确定。但是我们要根据 Hadoop 反规范和扁平化的设计思想,还需要确定哪些字段需要反规范化和扁平化到相关的维度表中。


最后一步就是确定需要的事实表,而且应该明确需要哪种类型的事实表,是事务事实表,还是周期快照事实表以及累计快照事实表?如同维度表的反规范化和扁平化设计一样,也要将使用频率高的维度字段反规划化和扁平化到事实表中。


上面描述了构建 FutureRetailer 的数据仓库的整体过程,后面还会以商品维度表和销售事实表为例,给大家分别介绍构建维度表和事实表的设计,包含示例结果,设计原因等, 其他域的事实表和维度表的设计到时以此为依据即可。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
存储 分布式计算 Hadoop
基于docker的Hadoop环境搭建与应用实践(脚本部署)
本文介绍了Hadoop环境的搭建与应用实践。对Hadoop的概念和原理进行了简要说明,包括HDFS分布式文件系统和MapReduce计算模型等,主要通过脚本的方式进行快捷部署,在部署完成后对HDFS和mapreduce进行了测试,确保其功能正常。
|
6月前
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
1085 0
|
23天前
|
机器学习/深度学习 存储 SQL
数据仓库革新:Snowflake在云数据平台中的创新实践
【10月更文挑战第27天】Snowflake作为云原生数据仓库的领导者,以其多租户、事务性、安全的特性,支持高度可扩展性和弹性,全面兼容SQL及多种数据类型。本文探讨了Snowflake在现代化数据仓库迁移、实时数据分析、数据存储与管理及机器学习集成等领域的创新实践和应用案例,展示了其在云数据平台中的强大优势和未来潜力。
36 2
|
24天前
|
存储 运维 Cloud Native
数据仓库革新:Snowflake在云数据平台中的创新实践
【10月更文挑战第26天】随着大数据时代的到来,数据仓库正经历重大变革。本文探讨了Snowflake在云数据平台中的创新应用,通过弹性扩展、高性能查询、数据安全、多数据源接入和云原生架构等最佳实践,展示了其独特优势,帮助企业提升数据处理和分析效率,保障数据安全,降低运维成本,推动业务快速发展。
42 2
|
1月前
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
56 0
|
3月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
103 1
|
4月前
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
4月前
|
存储 数据采集 分布式计算
阿里巴巴数据仓库实践:从离线到实时的一体化探索
阿里巴巴的数据仓库实践从离线到实时的一体化探索,不仅为企业自身业务的快速发展提供了有力支撑,也为行业树立了标杆。通过不断优化技术架构、提升数据处理能力、加强数据治理和安全管理,阿里巴巴的实时数仓将为企业创造更大的价值,推动数字化转型的深入发展。未来,随着技术的不断进步和业务的持续拓展,阿里巴巴的实时数仓实践将展现出更加广阔的应用前景和发展空间。
|
4月前
|
分布式计算 运维 大数据
混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践。
除了资源效率和成本的优势外,混合云模式还为斗鱼带来了可量化的成本、增值服务以及额外的专业服务。阿里云的专业团队可以为斗鱼提供技术咨询和解决方案,帮助斗鱼解决业务难题。此外,计算资源的可量化也使得斗鱼能够清晰地了解资源使用情况,为业务决策提供依据。
|
4月前
|
数据采集 存储 数据管理
OneData:阿里巴巴的数据仓库之旅与统一数据治理实践
OneData 为解决大数据时代的挑战提供了一条可行的道路,对于其他企业和组织来说具有重要的参考意义。随着技术的不断进步和应用场景的扩展,OneData 的未来发展值得期待。

热门文章

最新文章

下一篇
无影云桌面