Fault-tolerant scheduling and data placement for scientific workflow processing in geo-distributed clouds