1. A computing device implemented method for data retrieval from a distributed storage environment, comprising: allocating data storage locations of a hierarchical memory cache module and a mass storage module; determining a data prefetch policy from among a plurality of data prefetch policies by a data module and selecting one of the plurality of data prefetch policies to perform a read operation to minimize future data retrieval operations, dynamically changing the data prefetch policy from among the plurality of data prefetch policies as needed according to the read operation during each of a plurality of data retrieval operations to predict future data access patterns and selecting more data than requested in the data prefetch policy, wherein each read operation dynamically learns an amount of data chunks to prefetch dependent on a location of the data in a hierarchy of memory; determining and selecting at least one of the plurality of data prefetch policies to perform a data retrieval operation by determining if data exists in the hierarchical memory cache module; determining if data exists in a first memory of the hierarchical memory cache module, wherein if the data is not located in the first memory of the hierarchical memory cache module: accessing a second memory of the hierarchical memory cache module using the at least one of the plurality of data prefetch policies, and determining if data exists in the second memory of the hierarchical memory cache module; wherein if the data is not located in the lower level memory cache module, dynamically changing the at least one of the plurality of data prefetch policies if needed, accessing a mass storage module according to the cache prefetch policy, and selecting the at least one of the plurality of data prefetch policies determined by the data module based on whether data exists in the second memory or the mass storage module if the data does not exist in the first memory.