The Auron accelerator for big data engine (e.g., Spark, Flink) leverages native vectorized execution to accelerate query processing. It combines the power of the Apache DataFusion library and the scale of the distributed computing framework.
Auron takes a fully optimized physical plan from distributed computing framework, mapping it into DataFusion's execution plan, and performs native plan computation.
The key capabilities of Auron include:
- Native execution: Implemented in Rust, eliminating JVM overhead and enabling predictable performance.
- Vectorized computation: Built on Apache Arrow's columnar format, fully leveraging SIMD instructions for batch processing.
- Pluggable architecture:: Seamlessly integrates with Apache Spark while designed for future extensibility to other engines.
- Production-hardened optimizations: Multi-level memory management, compacted shuffle formats, and adaptive execution strategies developed through large-scale deployment.
Based on the inherent well-defined extensibility of DataFusion, Auron can be easily extended to support:
- Various object stores.
- Operators.
- Simple and Aggregate functions.
- File formats.
We encourage you to extend DataFusion capability directly and add the supports in Auron with simple modifications in plan-serde and extension translation.
To build Auron, please follow the steps below:
- Install Rust
The native execution lib is written in Rust. So you're required to install Rust (nightly) first for compilation. We recommend you to use rustup.
- Install JDK
Auron has been well tested on jdk8/11/17.
-
Check out the source code.
-
Build the project.
use ./auron-build.sh for building the project. execute ./auron-build.sh --help for help.
After the build is finished, a fat Jar package that contains all the dependencies will be generated in the target
directory.
You can use the following command to build a centos-7 compatible release:
SHIM=spark-3.3 MODE=release JAVA_VERSION=8 SCALA_VERSION=2.12 ./release-docker.shThis section describes how to submit and configure a Spark Job with Auron support.
-
Move the Auron JAR to the Spark client classpath (normally spark-xx.xx.xx/jars/).
-
Add the following configs to spark configuration in
spark-xx.xx.xx/conf/spark-default.conf:
spark.auron.enable true
spark.sql.extensions org.apache.spark.sql.auron.AuronSparkSessionExtension
spark.shuffle.manager org.apache.spark.sql.execution.auron.shuffle.AuronShuffleManager
spark.memory.offHeap.enabled false
# suggested executor memory configuration
spark.executor.memory 4g
spark.executor.memoryOverhead 4096- submit a query with spark-sql, or other tools like spark-thriftserver:
spark-sql -f tpcds/q01.sqlTPC-DS 1TB Benchmark (for details, see https://auron-project.github.io/documents/benchmarks.html):
We also encourage you to benchmark Auron and share the results with us. 🤗
Mail List is the most recognized form of communication in the Apache community. Contact us through the following mailing list.
| Name | Scope | ||
|---|---|---|---|
| [email protected] | Development-related discussions | Subscribe | Unsubscribe |
If you meet any questions, connect us and fix it by submitting a 🔗Pull Request.
Auron is licensed under the Apache 2.0 License. A copy of the license can be found here.