三、在分布式中如何优化大数据存储结构

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 三、在分布式中如何优化大数据存储结构

大数据的存储结构直接影响到分布式系统中数据的存储效率和处理应能。一般来说常见的存储结构有行式存储结构、列式存储结构和行列结合存储结构。在行式存储结构中数据从本地读取,加载速度快但是压缩效率低并且存在数据冗余。在列式存储结构中数据压缩率高,但是因为数据的跨节点访问所以增加了网络传输的开销。针对行式存储结构和列式存储结构的优缺点,提出了一种行列结合的存储结构。下面我们开始探讨一下这三种存储结构。


一、大数据处理要求

在所有的大数据系统中,对数据的处理要求无非就是三点:高速的数据加载、高速的查询处理和存储空间的高利用率。


1.1 高速的数据加载

数据的高速加载时大数据处理中的一个关键问题。在正常的查询时由于网络带宽、磁盘I/O在数据传输是一个瓶颈,因此缩短数据加载时间变得非常关键。


1.2 高速的查询处理

为满足大量用户同时向系统提交实时请求和高负载查询,因此这就要求底层数据结构在满足数据不断增长的同时,能够高效处理查询请求。


1.3 存储空间的高利用率

因为每时每刻数据量都在不断增长,因此要求系统在存储上就必须有很好的扩展能力。那么如何存放数据才能使得磁盘的利用率达到最高是关键问题。一般来说我们会用到动态高负载模式来处理,让系统在有限的存储空间下使用不可测的数据分析请求。


二、行式存储结构和列式存储结构的优缺点

2.1 行式存储结构

传统关系型数据库使用的存储结构就是行式存储结构,记录以行的形式存储在数据库关系表中。在分布式系统存储下,表按照行水平分割,每行中所有数据存放在同一个数据块中,数据块又有可能分布在不同的节点上,如果读取行中的第一列和第二列则需要先读取本地节点上所有符合条件的行,然后过滤出第一列和第二列。


行式存储结构的优点是数据加载速度快,所有数据优先从本地读取,不需要额外的网络开销。缺点是每行中所有列都放在了相同的数据块中,在读取一行数据时会读取当前行的所有列,这样就增加了额外的磁盘I/O开销。并且每一列存储的数据类型不能一样,在数据压缩时不同数据类型压缩效果会很大,这样会导致磁盘利用率低,同样也会导致磁盘I/O加大。


2.2 列式存储结构

列式存储结构将关系表按列垂直分割成多个子关系表,分割后的每组子关系表中的所有数据存放在同一个数据块中,每一列都是独立存储的。


列式存储结构的优点是只读取有用的列,能够避免额外的磁盘I/O开销,同一列中的数据类型相同,因此数据压缩时有很好的压缩比,提高了磁盘的空间利用率。缺点是由于列式存储按照列来垂直分割数据,因此不同的列可能分布在不同的节点上,读取不同的列会出现跨界点访问的问题,这样就增加了网络传输所消耗的时间。


下面是我列出的行式存储结构和列式存储结构的优缺点表格:

image.png

三、改进

3.1 行列结合存储结构

行列结合存储结构分别融合了行式存储和列式存储的优点,将关系表中的数据先按照水平划分成多个行组,每个行组存放在同一个数据块中,再在每个行组内将表按照列垂直划分成多个子关系表,每一列在进行数据压缩后存储在同一个数据块中。简单说就是:行组内按照列垂直存放在同一个数据块中,每列在数据压缩后独立存储在数据块中,每行中的所有列都存放在同一个数据块中。


3.2 优点

因为关系表被水平分割成多个行组,行组内按列垂直分割并存在同一个数据块中,如果要读取第一列和第二列,那么首先读取本地行组,然后在行组中选择第一列和第二列,这样就避免了不必要的磁盘I/O和网络消耗。并且由于行组内是按照列垂直分割的,每一列都具有相同的数据类型,因此在数据压缩时也能具有很好的数据压缩比,从而提高了磁盘空间的利用率。


3.3 问题

某些大数据框架存在数据块大小的限制,如果行组的存储空间比数据块最大大小要大,那么一个行组将会被存储到多个数据块中,多个数据块又有可能位于不同的节点上,因此在访问数据的时候有可能痴线跨节点访问,从而出现网络传出消耗。并且大部分大数据框架都具有备份功能,如果数据节点出现问题,因为行列结合存储结构的约束需要更长时间回复,维护成本也会增加。因此每个行组分割的大小不能超过数据块限制的最大大小。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
26天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
41 2
|
10天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
34 4
|
19天前
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
113 5
|
23天前
|
存储 算法 固态存储
大数据分区优化存储成本
大数据分区优化存储成本
28 4
|
25天前
|
存储 大数据 Serverless
大数据增加分区优化资源使用
大数据增加分区优化资源使用
22 1
|
12天前
|
SQL 分布式计算 算法
分布式是大数据处理的万能药?
分布式技术在大数据处理中广泛应用,通过将任务拆分至多个节点执行,显著提升性能。然而,它并非万能药,适用于易于拆分的任务,特别是OLTP场景。对于复杂计算如OLAP或批处理任务,分布式可能因数据交换延迟、非线性扩展等问题而表现不佳。因此,应先优化单机性能,必要时再考虑分布式。SPL等工具通过高效算法提升单机性能,减少对分布式依赖。
|
1月前
|
存储 NoSQL 大数据
大数据 数据存储优化
【10月更文挑战第25天】
75 2
|
2月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
35 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
算法
基于粒子群算法的分布式电源配电网重构优化matlab仿真
本研究利用粒子群算法(PSO)优化分布式电源配电网重构,通过Matlab仿真验证优化效果,对比重构前后的节点电压、网损、负荷均衡度、电压偏离及线路传输功率,并记录开关状态变化。PSO算法通过迭代更新粒子位置寻找最优解,旨在最小化网络损耗并提升供电可靠性。仿真结果显示优化后各项指标均有显著改善。