这项工作由 Anaconda 公司提供支持。
我很高兴宣布 Dask 0.19.0 版本发布。这是一个包含错误修复和新功能的主要版本。上一个版本 0.18.2 于 7 月 23 日发布。这篇博文概述了自 6 月 14 日发布的 0.18.0 版本博文以来的显著变化。
您可以使用 conda 安装 Dask
conda install dask
或者从 PyPI 使用 pip 安装
pip install dask[complete] --upgrade
完整的更新日志可在此处获取
在过去两个月里,完成了大量工作,但大多数变化都是微小而分散的。与上游库(如 Numpy 和 Pandas)的稳定性、功能对等性以及性能都得到了显著提升,但这些改进难以浓缩成博文形式。
话虽如此,新版本中还有一些更令人兴奋的变化。
我们已放弃对 Python 3.4 的官方支持,并增加了对 Python 3.7 的官方支持。
在过去几个月里,Jim Crist 构建了一套工具,用于在 YARN(Hadoop 集群中使用的主要集群管理器)上部署应用程序。
Jim 在最近的两篇博文中介绍了 Skein 和 Dask-Yarn
一些高级工作负载需要直接管理和修改工作节点上的状态。像 Dask 这样基于任务的框架可以通过使用长时间运行任务来强制执行这种工作负载,但这是一种不舒服的体验。
为了解决这个问题,我们在 Dask 中添加了一个实验性的 Actor 框架,与标准的任务调度系统并行。这降低了延迟,消除了调度开销,并提供了直接修改工作节点上状态的能力,但失去了一些优点,如弹性和诊断。采纳 Actor 的想法是厚颜无耻地借鉴了 Ray 项目 :)
class Counter
def __init__(self)
self.n = 0
def increment(self)
self.n += 1
return self.n
counter = client.submit(Counter, actor=True).result()
>>> future = counter.increment()
>>> future.result()
1
您可以在 Actor 文档中阅读更多关于 actor 的信息。
Dask 仪表盘是理解分布式性能的关键工具。我们在本次发布中解决了一些让初学者困惑的易用性问题。
现在可以通过将计算包装在 get_task_stream 上下文管理器中来保存任务流记录。
from dask.distributed import Client, get_task_stream
client = Client(processes=False)
import dask
df = dask.datasets.timeseries()
with get_task_stream(plot='save', filename='my-task-stream.html') as ts
df.x.std().compute()
>>> ts.data
[{'key': "('make-timeseries-edc372a35b317f328bf2bb5e636ae038', 0)",
'nbytes': 8175440,
'startstops': [('compute', 1535661384.2876947, 1535661384.3366017)],
'status': 'OK',
'thread': 139754603898624,
'worker': 'inproc://192.168.50.100/15417/2'},
...
这提供了在此期间每个工作节点上完成的每个任务的开始和停止时间。它还将这些数据保存为 HTML 文件,您可以与他人分享。这对于团队内部沟通性能问题非常有价值。我通常将 HTML 文件作为 gist 上传,然后使用 rawgit.com 分享。
$ gist my-task-stream.html
https://gist.github.com/f48a121bf03c869ec586a036296ece1a
仪表盘的布局设计用于单屏幕使用,与 Jupyter notebook 并排显示。许多 Dask 开发者在使用笔记本电脑时都是这样操作的,但是许多用户并非如此,原因有二:
在这些情况下,仪表盘的样式会变得很奇怪。幸运的是,Luke Canavan 和 Derek Ludwig 最近大大改进了仪表盘的 CSS,使其可以在窄屏和宽屏之间切换。这是一张截图。
现在可以使用新更新的 dask-labextension 直接在 Jupyter Lab 中嵌入仪表盘窗格。
jupyter labextension install dask-labextension
这允许您直接在 JupyterLab 中布局自己的仪表盘。您可以组合来自不同页面的图表,控制它们的大小等等。您需要提供仪表盘服务器的地址(本地机器上默认为 http://localhost:8787),但之后一切都应该在会话之间保持不变。现在,当我打开 JupyterLab 并启动 Dask Client 时,我看到的是这样
感谢 Ian Rose 在此完成了大部分工作。
使用 Dask 的用户一直在 Dask 用户故事中撰写他们的经验。在过去几个月里,以下人员撰写并贡献了他们的经验
这些故事帮助人们了解 Dask 的适用场景和不适用场景,并提供了关于其在实践中如何使用的有用背景信息。我们欢迎对此项目做出进一步贡献。这对于更广泛的社区非常有价值。
Dask-Examples 仓库维护了在小型机器上使用 Dask 的易于运行的示例,适用于入门级笔记本电脑或小型云实例。这些示例托管在 mybinder.org 上,并集成到我们的文档中。最近出现了一些新的示例,尤其是在机器学习方面。我们鼓励大家点击下方链接试用它们。
自 6 月 14 日以来,以下人员为以下仓库做出了贡献
用于并行算法的核心 Dask 仓库
用于分布式计算的 dask/distributed 仓库
用于易于运行的示例的 dask/dask-examples 仓库