1. A computer-implemented method for customizing data management for a distributed filesystem, the method comprising: collectively managing the data of the distributed filesystem using two or more cloud controllers, wherein collectively managing the data comprises: upon receiving in a cloud controller new data from a client, sending from the cloud controller an incremental metadata snapshot for the new data, wherein the incremental metadata snapshot is received by the other cloud controllers of the distributed filesystem; storing the data for the distributed filesystem in one or more cloud storage systems, wherein the cloud controllers cache and ensure data consistency for data stored in the cloud storage systems; and sending an incremental data snapshot containing the new data from the cloud controller to a cloud storage system; collectively presenting a unified namespace for the distributed filesystem to the clients of the distributed filesystem via the two or more cloud controllers, wherein the clients access the distributed filesystem via the cloud controllers, wherein the file data for the distributed filesystem is stored in the cloud storage system, wherein cloud controllers cache a subset of the file data from the remote cloud storage system that is being actively accessed by each respective cloud controller's clients, wherein new file data received by each cloud controller from its clients is written to the remote cloud storage system, wherein the metadata hierarchy in the cloud controller tracks the location of distributed filesystem data blocks in the remote cloud storage system and cached distributed filesystem data blocks in the cloud controller, wherein the cloud controller uses the metadata hierarchy to locate and download requested, uncached data blocks in the distributed filesystem from the remote cloud storage system; maintaining at each cloud controller a copy of the metadata for the files stored in the distributed filesystem, wherein changes to the metadata for the distributed filesystem are communicated to the set of cloud controllers for the distributed filesystem to ensure that the clients of the distributed filesystem share a consistent view of the files in the distributed filesystem; receiving at the cloud controller a locality policy that specifies one or more management policies that are applied to all of a set of two or more cloud controllers, wherein the set of two or more cloud controllers includes the cloud controller; wherein the locality policy specifies a high-priority file that should be pinned in a cache of the cloud controller; and managing data for the distributed filesystem on the set of two or more at cloud controllers based on the locality policy; wherein each cloud controller in the set of two or more cloud controllers downloads modified data for the high-priority file and pins the modified data for the high-priority file in the cloud controller's local cache for the distributed filesystem, thereby ensuring that the modified data for the high-priority file is immediately available to all of the clients of the set of two or more cloud controllers; and wherein the locality policy specifies one or more of a pre-condition that needs to be met before the cloud controller applies the locality policy and a time interval in which the cloud controller will apply the locality policy.