「开源软件」开源软件中的大数据管理技术| 大数据系统软件国家工程实验室黄向东团队研究成果


「开源软件」开源软件中的大数据管理技术| 大数据系统软件国家工程实验室黄向东团队研究成果
本文插图

「开源软件」开源软件中的大数据管理技术| 大数据系统软件国家工程实验室黄向东团队研究成果
本文插图

随着众多大数据管理技术的发展 , 基于此类技术的开源大数据管理软件快速涌现 。 《开源软件中的大数据管理技术》一文以Hadoop、Parquet、Cassandra、IoTDB等系统为例 , 介绍了存储系统中的LSM结构、列式存储 , 副本机制中的副本一致性、纠删码技术 , 分布式协议等大数据管理技术的原理及优缺点 , 并对大数据管理的发展趋势及未来研究方向进行了详细的分析 。
研究背景
近10年来 , 大数据管理技术的发展日新月异 。 2008年 , 以宽表系统为代表 , 分布式、非关系模型等数据管理技术逐渐被广泛接受 。 2009年 , NoSQL潮流兴起 , 进一步推动了基于非关系模型、面向特定应用需求的数据管理技术的发展 。
随着新技术的提出 , 若干基于这些技术的开源大数据管理软件快速涌现 , 在这些开源软件中 , 最为活跃的当属Apache软件基金会生态中的大数据管理软件 。
研究内容
数据库的存储引擎负责缓冲区管理、磁盘数据管理、磁盘数据查询等 , 是数据库的核心模块 。 存储引擎设计的好坏直接影响数据库的读写性能 。 通常来说 , 存储引擎的设计取决于目标负载 , 针对不同负载要求可以采用不同的存储管理方式 。
针对“读多写少”的负载 , 传统关系数据库常采用B+树来管理数据 。 然而 , 近年来写入请求占总请求的比例在逐年上涨 , 逐渐占据了主导地位 。 基于B+树的方案在目前较为普及的基于机械硬盘的服务器上存在严重的IO瓶颈 。 基于数据顺序追加与数据整理的LSM-Tree(log-structured merge tree)方法是解决B+树在写入时引入大量随机I/O导致机械硬盘出现性能瓶颈问题的一个有效手段 。
LSM结构在新的数据写入时会先在内存中进行缓存 , 并在内存中数据达到一定量时 , 将数据整块顺序写入到磁盘 , 而非B树一样修改原有的数据结构 。
然而 , LSM在查询性能上也存在着巨大的缺陷——磁盘上的数据块之间既不能保证有序 , 又不能保证无重复 , 查询时需要对多个数据块进行归并 , 引入了量的随机I/O 。
合并操作提高了数据的连续性 , 减少了数据的冗余程度 , 缓解了LSM-Tree查询时的性能问题 。 但是合并本身既包含对老数据的读也包含对新数据的写 , 本身会占用大量的系统资源 , 从而削弱了LSM的写入优势 。 因此 , 许多工作从减少合并次数、提高合并并行度、减少单次合并的I/O开销 , 优化合并调度策略减少对常规业务的影响等方面着手 , 提出了各自对LSM-Tree的改进 。
人们注意到 , 在大数据分析应用中 , 行式的文件结构存在着难以实现高压缩、处理低选择率的查询I/O效率低等问题 。
在大数据生态发展过程中 , 大量列式文件格式被发明 , 它们被用于各种分析系统和应用当中 。 虽然通用的列式存储文件格式能够很好地应对多数应用场景 , 但是面对特定数据类型时 , 这些通用文件格式难以做到针对这些数据类型的高压缩率 , 高读写速率 。 为此 , 像Apache TsFile这类针对特定场景下的数据(时序数据)的文件存储格式也应用而生 。
除了提出新的文件结构外 , 目前针对存储结构的研究主要关注如何面对动态变化的负载 , 自动地寻找最佳的存储结构或索引结构 , 从而避免系统管理员手动调整存储结构 。
数据分区作为分布式存储系统的基本功能 , 其分区结果好坏制约了系统的读写性能 。 传统的关系数据分区策略包括水平分区和垂直分区 。 分布式数据库多采用水平分区 , 并基于分布式哈希表(DHT)或查找表的方式进行分区定位 。
集群弹性扩展是分布式系统的特色之一 , 扩展时的数据分区修改也成为值得研究的主题之一 。 而随着实际应用中集群规模的不断扩大 , 云原生数据库的兴起 , 数据分区与数据迁移的优化依然是分布式数据管理的研究热点 。


推荐阅读