使用dask的持久数据流

时间:2017-03-23 22:25:40

标签: python dataflow dask

我有兴趣使用具有与Pegasus项目类似的功能的持久分布式数据流:例如https://pegasus.isi.edu/。 你觉得有办法用dask吗?

我尝试实现一些适用于SLURM集群和dask的东西。 我将在下面详细描述我的解决方案,以便更好地指定我的用例。

这个想法是执行中等规模的任务(运行时间在几分钟到几小时之间),这些任务用图表指定,该图表可以具有持久性并且可以轻松扩展。 我基于dask的调度程序及其图形api实现了一些东西。 为了保持持久性,我写了两种装饰器:

  • one" memoize" decorator允许以可自定义的方式序列化复杂的参数,以及函数的结果(有点像dask用cachey或chest做,或者像spark一样用它的RDD对象)和
  • 一个"延迟"允许在集群上执行函数的装饰器(SLURM)。实际上,修改了函数API,以便将依赖关系的jobid作为参数,并在集群上返回创建的作业的jobid。函数也在文本文件中序列化" launch.py​​"使用群集的命令行API启动。

关联taskname-jobid保存在json文件中,该文件允许使用群集返回的任务的状态来管理持久性。 这种工作方式允许图形具有一种持久性。 它提供了轻松调试失败任务的可能性。 即使没有整个工作流程和/或生成它们的功能,使用序列化机制的事实也提供了轻松访问所有中间结果的可能性。 此外,通过这种方式,可以轻松地与不使用这种数据流机制的遗留应用程序进行交互。

与使用dask和分布式执行分布式工作流的其他更现代的方法相比,这个解决方案肯定有点天真,但在我看来,它具有一定的优势(其任务和数据)能力。

我有兴趣知道解决方案是否与之相关,以及它是否似乎用dask描述了一个有趣的,未解决的用例。

如果有人可以推荐我其他方法,我也很感兴趣!

0 个答案:

没有答案