Dask 开发日志
这项工作得到了 Anaconda Inc 和 Moore Foundation 的数据驱动发现计划 (Data Driven Discovery Initiative) 的支持
为了提高透明度,我正努力更频繁地撰写博客,介绍 Dask 及相关项目目前的进展。这里的内容尚未准备好用于生产环境。这篇博文是仓促写成的,因此请勿期待精雕细琢的文笔。
Dask 及 Dask 相关项目目前的开发工作包括以下方面
- 可能改变我们的社区沟通模式
- 重写分布式调度器
- Dask 的 Kubernetes 和 Helm Charts
- 自适应部署修复
- 持续支持 NumPy 和 Pandas 的发展
- Dask-ML 中的谱聚类
社区沟通
Dask 社区沟通通常通过 Github issues 进行错误和功能跟踪,通过 Stack Overflow #dask 标签回答用户问题,以及使用一个不常用的 Gitter 聊天室。
另外,在 Anaconda Inc 工作的 Dask 开发者(我们大约有五名兼职人员)使用内部公司聊天工具和封闭的每周视频会议。我们现在正努力尽可能地从封闭系统中迁移出来。
关于未来方向的详细信息请参阅 dask/dask #2945。欢迎就该问题提出您的想法和评论。
调度器重写
当你开始构建拥有 1000 个工作节点的集群时,分布式调度器在某些工作负载下可能会成为瓶颈。在与 PyPy 和 Cython 开发团队合作后,我们决定重写调度器的部分代码,使其更易于通过这些技术进行加速。请注意,目前尚未发生实际加速,仅仅是对内部状态进行了重构。
以前,分布式调度器主要围绕着大量相互之间大量索引的 Python 字典、集合和列表。这既是出于低技术代码技术原因,也是出于性能原因(Python 核心数据结构速度快)。然而,像 PyPy 和 Cython 这样的编译器技术可以将 Python 对象访问优化到 C 语言的速度,因此我们正在尝试从 Python 数据结构转向 Python 对象,以了解这能有多大帮助。
这一改变在操作上是不可见的(完整的测试套件几乎没有变化),但将对调度器的内部状态产生重大影响。我们保留了一个兼容层,但那些围绕内部状态构建自己诊断工具的人应该检查一下新的变化。
Antoine Pitrou 在 dask/distributed #1594 中进行的持续工作
Dask 的 Kubernetes 和 Helm Charts
为了服务于 Pangeo 项目,以实现对大气和海洋数据的可扩展数据分析,我们一直在改进在云基础设施上启动 Dask 的工具,特别是利用 Kubernetes。
为此,我们正在为 Dask 制作一些灵活的 Docker 容器和 Helm Charts,并希望在未来几周内将它们与 JupyterHub 结合起来。
我自己在以下仓库中完成的工作。非常欢迎反馈。我在这里正在边干边学 Helm。
如果你在 Kubernetes 上使用 Helm,那么你可能想尝试以下操作
helm repo add dask https://dask.github.io/helm-chart
helm update
helm install dask/dask
这将安装一个完整的 Dask 集群和一个 Jupyter 服务器。Docker 容器包含入口点,可以轻松地使用自定义包更新其环境。
这项工作扩展了之前在旧包 dask-kubernetes 上的工作,但模块化程度更高,可以与其他系统一起使用。
自适应部署修复
自适应部署,即集群管理器根据当前工作负载自动扩缩 Dask 集群,最近进行了改进,包括修复了许多奇怪或不常见的行为相关的 bug。
由 Russ Bubley 在这里完成的工作
与 NumPy 和 Pandas 保持同步
NumPy 1.14 即将发布。Dask.array 不得不在 dask/dask #2694 中更新处理结构化 dtypes 的方式(Tom Augspurger 的工作)。
Dask.dataframe 正在获得同时在列和索引上进行合并/连接的能力,这是继 Pandas 0.22 中发布的类似功能之后的新增功能。Jon Mease 在 dask/dask #2960 中完成的工作
Dask-ML 中的谱聚类
Dask-ML 最近在 dask/dask-ml #91 中添加了一种近似且可扩展的谱聚类算法(画廊示例)。
博客评论由 Disqus 提供