1. A computer implemented method for resource allocation in distributed system, the method comprising: identifying a plurality of user data sets and associated properties; identifying a plurality of clusters and associated properties; identifying a distribution of replicas of the user data sets in the clusters; identifying resource allocation variables, said variables corresponding to the distribution of replicas of the user data sets in the clusters, distributing at least one user's user data set to clusters by defining decision variables as assignments of a plurality of the user's user data replicas to a combination of clusters and specifying inter-replica relations and conditions; modifying the resource allocation variables by redefining the decision variables as assignments restricted by a one-user replica-per-user-per-cluster constraint and transforming the inter-replica relations and conditions into separate replica relations and conditions based on the one-user replica-per-user-per-cluster constraint; and allocating a resource using the modified resource allocation variables.