提交新活动

谢谢!您的提交已收到!
哎呀!提交表单时出错了。

提交新闻报道

谢谢!您的提交已收到!
哎呀!提交表单时出错了。

订阅新闻稿

谢谢!您的提交已收到!
哎呀!提交表单时出错了。
2018年3月21日

Dask 0.17.2 版本发布

作者

此工作由 Anaconda Inc.Moore Foundation 的数据驱动发现倡议提供支持。

我很高兴宣布 Dask 0.17.2 版本发布。这是一个包含新特性和稳定性改进的次要版本。本篇博文概述了自2月12日发布 0.17.0 版本以来值得注意的变化。

您可以通过 conda 安装 Dask

conda install dask

或者从 PyPI 通过 pip 安装

pip install dask[complete] --upgrade

完整的更新日志在此处提供

以下是一些值得注意的变化

Tornado 5.0

Tornado 是一个 Dask 严重依赖的并发网络编程流行框架。Tornado 最近发布了一个主要版本更新,其中包含了对 Dask 的一些重要特性以及几个 bug。

新的 IOStream.read_into 方法允许 Dask 通信(或使用此 API 的任何人)更高效地通过网络传输大型数据集,减少复制次数。这使得 Dask 能够利用现代超级计算机上的高性能网络。在 Cheyenne 系统上,我们对此进行了测试,通过此更改(使用少量 worker 进程),我们能够达到 Infiniband 网络提供的全部 3GB/s 带宽。

非常感谢 Antoine PitrouBenDarnell 在这方面所做的努力。

同时,更新到 Tornado 5.0 也出现了一些意料之外的问题。更广泛地使用 bytearrays 而非 bytes 导致了 Snappy 和 Python 2 等压缩库出现问题,因为它们不期望这些类型。在 distributed.__version__ == 1.21.3 版本中有一个短暂的时间窗口,如果存在 Tornado 5.0,此功能会被启用,但如果 Snappy 也存在,则会表现异常。

HTTP 文件系统

Dask 利用一个 类似文件系统的协议来访问远程数据。这就是为什么以下命令能够工作的原因:

import dask.dataframe as dd

df = dd.read_parquet('s3://...')
df = dd.read_parquet('hdfs://...')
df = dd.read_parquet('gcs://...')

现在我们添加了 http 和 https 文件系统,用于直接从 Web 服务器读取数据。如果 Web 服务器支持范围查询,这些文件系统也支持随机访问。

df = dd.read_parquet('https://...')

与 S3、HDFS、GCS 等类似,您也可以在 Dask 开发之外使用这些工具。这里我们读取 Pandas 许可证的前二十个字节:

from dask.bytes.http import HTTPFileSystem
http = HTTPFileSystem()
with http.open('https://raw.githubusercontent.com/pandas-dev/pandas/master/LICENSE') as f
print(f.read(20))

b'BSD 3-Clause License'

感谢 Martin Durant 完成了这项工作并通常管理 Dask 的字节处理。更多信息请参阅远程数据文档

修复了 Dask DataFrame Shuffle 中的一个正确性 Bug

我们发现并解决了一个 dask.dataframe 的 shuffle 中的正确性 bug,该 bug 导致在连接和具有许多分区的 groupby-apply 等复杂操作期间丢失一些行。

更多信息请参阅 dask/dask #3201

集群超类和智能自适应部署

有许多 Python 子项目可以帮助您在不同的集群资源管理器(如 Yarn、SGE、Kubernetes、PBS 等)上部署 Dask。这些项目现在已经趋于一致,拥有大致相同的 API,我们已将其合并到 distributed.deploy.Cluster 中一个一致的接口中,以便下游项目可以继承。

现在我们拥有了一致的接口,我们已经开始投入更多精力来作为一个整体改进这些系统的接口和智能性。这包括像以下这样令人愉悦的 IPython 小部件:

以及改进的自适应部署逻辑。自适应部署允许集群根据当前工作负载自动伸缩。如果您最近提交了大量工作,调度程序将估算其持续时间并请求适当数量的 worker 以快速完成计算。计算完成后,调度程序将释放 worker 返回系统以释放资源。

此处的逻辑已得到显著改进,包括以下方面:

  • 您可以指定自适应性的最小和最大限制
  • 调度程序估算计算持续时间并相应地请求 worker
  • 返还 worker 时会有一些额外的延迟,以避免滞后或重复请求和返还 worker 的情况

相关项目

一些相关项目的新闻

  • 年轻的 daskernetes 项目更名为 dask-kubernetes。这取代了一个先前用于在 Google Cloud Platform 上启动 Dask 的项目(该项目尚未发布)。该项目已更名为 dask-gke
  • 一个新项目 dask-jobqueue 已经启动,用于在传统的批处理队列系统(如 PBS、SLURM、SGE、TORQUE 等)上启动 Dask 集群。该项目源于 Pangeo 合作。
  • 一个 Dask Helm chart 已添加到 Helm 的稳定通道中

致谢

以下人员自2月12日 0.17.0 版本发布以来为 dask/dask 仓库做出了贡献

  • Anderson Banihirwe
  • Dan Collins
  • Dieter Weber
  • Gabriele Lanaro
  • John Kirkham
  • James Bourbeau
  • Julien Lhermitte
  • Matthew Rocklin
  • Martin Durant
  • Max Epstein
  • nkhadka
  • okkez
  • Pangeran Bottor
  • Rich Postelnik
  • Scott M. Edenbaum
  • Simon Perkins
  • Thrasibule
  • Tom Augspurger
  • Tor E Hagemann
  • Uwe L. Korn
  • Wes Roach

以下人员自2月12日 1.21.0 版本发布以来为 dask/distributed 仓库做出了贡献

  • Alexander Ford
  • Andy Jones
  • Antoine Pitrou
  • Brett Naul
  • Joe Hamman
  • John Kirkham
  • Loïc Estève
  • Matthew Rocklin
  • Matti Lyra
  • Sven Kreiss
  • Thrasibule
  • Tom Augspurger