Integration with dask/distributed (xarray backend design)
See original GitHub issueDask (https://github.com/dask/dask) currently provides on-node parallelism for medium-size data problems. However, large climate data sets will require multiple-node parallelism to analyze large climate data sets because this constitutes a big data problem. A likely solution to this issue is integration of distributed (https://github.com/dask/distributed) with dask. Distributed is now integrated with dask and its benefits are already starting to be realized, e.g., see http://matthewrocklin.com/blog/work/2016/02/26/dask-distributed-part-3.
Thus, this issue is designed to identify the steps needed to perform this integration, at a high-level. As stated by @shoyer, it will
definitely require some refactoring of the xarray backend system to make this work cleanly, but that’s OK – the xarray backend system is indicated as experimental/internal API precisely because we hadn’t figured out all the use cases yet."
To be honest, I’ve never been entirely happy with the design we took there (we use inheritance rather than composition for backend classes), but we did get it to work for our use cases. Some refactoring with an eye towards compatibility with dask distributed seems like a very worthwhile endeavor. We do have the benefit of a pretty large test suite covering existing use cases.
Thus, we have the chance to make xarray big-data capable as well as provide improvements to the backend.
To this end, I’m starting this issue to help begin the design process following the xarray mailing list discussion some of us have been having (@shoyer, @mrocklin, @rabernat).
Task To Do List:
- Verify asynchronous access error for
to_netcdf
output is resolved (e.g., https://github.com/pydata/xarray/issues/793) - LRU-cached file IO supporting serialization to robustly support HDF/NetCDF reads
Issue Analytics
- State:
- Created 7 years ago
- Comments:59 (54 by maintainers)
Top GitHub Comments
Closing this old issue. The final checkbox in @pwolfram’s original post was completed in #2261.
Yes, this sounds quite promising to me.
Using OpenDAP for communication is also possible, but if all we need to do is pass around serialized
xarray.Dataset
objects using pickle or even bytes from netCDF files seems more promising.