[论文解读] Shark: SQL and Rich Analytics at Scale
Shark 是一个高性能的数据分析系统,通过容错的内存计算引擎将 SQL 查询处理与复杂分析(如机器学习)相结合。它利用带有列式存储和运行时动态查询重规划的弹性分布式数据集(RDD),在 SQL 和迭代式机器学习工作负载上,性能比 Hive 和 Hadoop 快达 100 倍,同时在长时间运行的查询中支持细粒度故障恢复。
Shark is a new data analysis system that marries query processing with complex analytics on large clusters. It leverages a novel distributed memory abstraction to provide a unified engine that can run SQL queries and sophisticated analytics functions (e.g., iterative machine learning) at scale, and efficiently recovers from failures mid-query. This allows Shark to run SQL queries up to 100x faster than Apache Hive, and machine learning programs up to 100x faster than Hadoop. Unlike previous systems, Shark shows that it is possible to achieve these speedups while retaining a MapReduce-like execution engine, and the fine-grained fault tolerance properties that such engines provide. It extends such an engine in several ways, including column-oriented in-memory storage and dynamic mid-query replanning, to effectively execute SQL. The result is a system that matches the speedups reported for MPP analytic databases over MapReduce, while offering fault tolerance properties and complex analytics capabilities that they lack.
研究动机与目标
- 解决基于 MapReduce 的系统在交互式和复杂分析工作负载下的性能瓶颈。
- 在统一的容错运行时环境中,实现 SQL 查询和迭代式机器学习算法的高效执行。
- 在长时间运行的查询中支持细粒度故障恢复,而无需完全重新执行。
- 结合 MPP 数据库的性能与 MapReduce 式引擎的容错性和分析表达能力。
- 通过原生支持 SQL 到机器学习的端到端流水线,消除系统间数据导出的需求。
提出的方法
- 通过在 Spark RDD 抽象中引入内存列式存储和列式压缩,优化关系型数据处理。
- 提出部分有向无环图执行(Partial DAG Execution, PDE),一种运行时优化技术,基于查询执行过程中收集的实时细粒度统计信息,动态重规划查询执行。
- 通过追踪 RDD 的血缘关系,实现确定性的细粒度故障恢复,通过在其他节点上重新计算丢失的数据分区,实现快速恢复。
- 通过将机器学习算法原生集成到与 SQL 查询相同的执行引擎中,支持复杂分析。
- 采用混合执行模型,结合 MapReduce 式的任务调度与数据库式优化技术,实现高效查询执行。
- 通过保持与 HiveQL 和 Hive 元存储的兼容性,实现与 Apache Hive 的无缝集成。
实验结果
研究问题
- RQ1一个系统能否在保留类似 MapReduce 式引擎的容错性和表达能力的同时,实现 MPP 数据库级别的 SQL 查询性能?
- RQ2内存列式存储和动态查询优化能否显著降低大规模数据处理中的延迟?
- RQ3在单一统一引擎中,是否可行同时支持复杂分析和 SQL 工作负载,并具备细粒度故障容忍能力?
- RQ4基于运行时实时统计信息的查询中段重规划,能否提升长时间运行的复杂查询的性能?
- RQ5该系统能否在不牺牲容错性或可扩展性的情况下,实现相比 Hadoop 和 Hive 的 100 倍性能提升?
主要发现
- Shark 在标准 SQL 查询上的查询执行速度比 Apache Hive 快达 100 倍,实际生产部署中报告的性能提升为 40–100 倍。
- 由于采用内存执行和迭代计算优化,逻辑回归等机器学习工作负载在 Shark 上的执行速度比在 Hadoop 上快达 100 倍。
- 部分有向无环图执行(PDE)技术能够在查询执行过程中实现动态查询优化,通过适应运行时收集的实际数据统计信息,提升性能。
- Shark 通过基于确定性血缘关系的重新计算机制,实现细粒度故障恢复,即使在长时间运行的查询中,通常也能在数秒内恢复丢失的数据分区。
- 列式内存存储减少了数据大小和 I/O 操作,显著提升了性能,尤其在高选择性和高聚合度的分析工作负载中表现突出。
- Shark 是首个原生将 SQL、机器学习和细粒度故障容忍能力集成于单一开源引擎的系统,消除了系统间数据移动的需求。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。