Execution Graph: Streamlining Distributed Data Flows