Scalable Distributed Document Search System with Caching and Parallel Query Processing
This project implements a scalable distributed document search system using PySpark for distributed data processing, vector embeddings for semantic search, and systems-level optimizations such as concurrency, caching, and scheduling.
-
query_processor.py: Implements the multi-query processing system with threading, scheduling strategies (FIFO and priority-based), caching (LRU), and support for both single-node and distributed (PySpark) execution. -
benchmark.py: Runs experiments to evaluate system performance under different configurations, measuring latency and throughput.
- Install Python dependencies:
pip install -r requirements.txt
Execute the benchmark script to run experiments:
python benchmark.pyThis will run three experiments:
- Scheduling Strategies: Compare FIFO vs Priority-based scheduling.
- Caching Impact: Compare performance with and without LRU caching.
- Distributed Processing: Compare single-node vs PySpark distributed execution.