Presto does not manage storage itself, but instead focuses on fronting those data sources with a single access point, with the option to federate (join) different sources in a single query.
TIL that Presto is available in EMR.
The big thing it adds is that it isn't stuck to any storage format. It has a connector that lets you load data into it from basically anything, from mysql dbs to hdfs files to whatever. So you can do cross database joins and just not care about where the data lives. You can also output to almost any database too.
Impala, Presto etc don't fit that model at all - they follow the Volcano model.
In this mode, they are not pure functional - if a task fails, there is no way to reproduce the output of that task.
The func within the map() was guaranteed to produce the same output for the same input across multiple attempts on failure or concurrently (for speculation).
Because of this, they can be faster as they do not wait for a task to be complete to run a subsequent stage & can pipeline better, but at the cost of failing all queries running on a node during a crash.
There are no retries for anything. This was deemed acceptable, if your hardware is reliable and the response to a failed query is just to "run it again", rather than per-node query recovery.
The reason for proper node failure tolerance for Spark/Tez/Flink etc are because they follow the functional model as closely as possible with exceptions for non-deterministic functions (say, UUID() in a SQL call).
The advantage of the failure tolerance is that these tools can push the whole cluster towards a single query performance when it is otherwise idle, because preemption can recover capacity out of a running system, if a higher priority query enters the system at a later point in time.
Edit: thinking about it more, how could Presto accomplish joins and other SQL operations without a shuffle? Seems very similar to Spark SQL, which is just syntactic sugar for multi-stage MapReduces.
Then it does a bunch of techniques, one of witch is map reduce, to do computation.
Its like you took a distributed SQL server and made it never have its own storage outside of memory. Instead it operates on wherever the data is living.
Hive makes a terrible data warehouse no matter how SQL compatible it is.