An adaptive placement framework for efficient near-data stream processing over data source-edge-cloud systems