在分布式 dask 中,我们如何为每个工作人员选择 --nthreads 和 --nprocs ?

2024-04-24

我们如何选择--nthreads and --nprocsDask 中每个工人的分布情况?我有 3 个工作线程,2 个工作线程有 4 个核心,每个核心有一个线程,1 个工作线程有 8 个核心(根据输出lscpu每个worker上的Linux命令)。


这取决于你的工作量

默认情况下,Dask 创建一个进程,其中的线程数与计算机上的逻辑核心数相同(由下式确定)multiprocessing.cpu_count()).

dask-worker ... --nprocs 1 --nthreads 8  # assuming you have eight cores
dask-worker ...                          # this is actually the default setting

如果您主要做的事情是,使用少量进程和每个进程使用许多线程是很好的numeric工作负载,例如 Numpy、Pandas 和 Scikit-Learn 代码中常见的工作负载,不受 Python 全局解释器锁 (GIL) 的影响。

但是,如果您将大部分计算时间都花在操作纯 Python 对象(例如字符串或字典)上,那么您可能希望通过使用更多的进程(每个进程的线程数更少)来避免 GIL 问题

dask-worker ... --nprocs 8 --nthreads 1

根据基准测试,您可能会发现更平衡的分割更好

dask-worker ... --nprocs 4 --nthreads 2

使用更多进程可以避免 GIL 问题,但会因进程间通信而增加成本。如果您的计算需要大量的工作人员间通信,您会希望避免许多进程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在分布式 dask 中,我们如何为每个工作人员选择 --nthreads 和 --nprocs ? 的相关文章

  • 带有大文件的 Amazon s3 上的 dask read_csv 超时

    s3 上的 dask read csv 大文件超时 s3fs S3FileSystem read timeout 5184000 one day s3fs S3FileSystem connect timeout 5184000 one d
  • Spark应用程序状态中的FAILED和ERROR有什么区别

    我正在尝试创建已提交的 Spark 应用程序的状态图 当应用程序被视为失败时 我有点迷失了 各州来自这里 https github com apache spark blob d6dc12ef0146ae409834c78737c11605
  • 集群上运行的 Dask 程序出现文件未找到错误

    我有 4 台机器 M1 M2 M3 和 M4 调度程序 客户端 工作线程都在 M1 上运行 我已将 csv 文件放入 M1 中 其余的机器都是工人 当我在 dask 中使用 read csv 文件运行程序时 它给我错误 找不到文件 当您的一
  • Spark Streaming:接收器故障后如何不重新启动接收器

    我们正在使用自定义 Spark 接收器 它从提供的 http 链接读取流数据 如果提供的http链接不正确 则接收失败 问题是spark会不断重启接收器 并且应用程序永远不会终止 问题是如果接收器失败 如何告诉 Spark 终止应用程序 这
  • 使用 pandas 从 Google Cloud Storage 读取 CSV 文件

    我正在尝试将一堆 CSV 文件从 Google Cloud Storage 读取到 pandas 数据帧中 如中所述将 csv 从 Google Cloud 存储读取到 pandas 数据框 https stackoverflow com
  • 为 Spark 创建 JAR

    我正在关注这个guide https spark apache org docs 1 2 0 quick start html 但是当我尝试使用以下命令创建 JAR 时 我无法在 Spark 中运行 Scalasbt I have 简单 s
  • 使用 dask 加载大型压缩数据集

    我正在尝试将一个大型压缩数据集加载到 python 中 其结构如下 year zip year month 很多 csv 文件 到目前为止 我已经使用 ZipFile 库迭代每个 CSV 文件并使用 pandas 加载它们 zf ZipFi
  • 如何从 url 列表创建 Dask DataFrame?

    我有一个 URL 列表 我很想将它们读取到 dask 数据框中 立刻 但看起来像read csv不能使用星号http 有什么办法可以实现这一点吗 这是一个例子 link http web mta info developers data d
  • 使用 dask 合并大型数据集

    我有两个数据集 一个约为 45GB 包含 1 年的日常交易 第二个数据集为 3 6GB 包含客户 ID 和详细信息 我想将两者合并到一个公共列上以创建一个数据集 这超出了服务器的内存 因为每个客户可能有多个交易 我正在开发一个具有 16 个
  • 为什么 CAP 定理中 RDBMS 不能容忍分区,但为什么它可用?

    关于 RDBMS 是 CAP 定理中的 CA 我不明白的两点 1 它说RDBMS是not 分区容忍但 RDBMS 怎么样 any less比 MongoDB 或 Cassandra 等其他技术更具有分区容错性 是否有一种 RDBMS 设置可
  • 重塑 dask 数组(从 dask 数据框列获得)

    我是 dask 新手 正在尝试弄清楚如何重塑从 dask 数据帧的单列获得的 dask 数组 但遇到了错误 想知道是否有人知道修复方法 无需强制计算 谢谢 Example import pandas as pd import numpy a
  • 为什么 Hadoop 不使用 MPI 来实现?

    如果我错了 请纠正我 但我的理解是 Hadoop 不使用 MPI 进行不同节点之间的通信 造成这种情况的技术原因是什么 我可以冒险进行一些猜测 但我对 MPI 是如何 在幕后 实现的了解不够 无法知道我是否正确 想想看 我对 Hadoop
  • 在 Spark 中将简单的一行字符串转换为 RDD

    我有一条简单的线 line Hello world 我想将其转换为只有一个元素的 RDD 我努力了 sc parallelize line 但它得到 sc parallelize line collect H e l l o w o r l
  • 使用非唯一索引列日期提取 Dask 数据框中的最新值

    我对 pandas 数据帧非常熟悉 但对 Dask 还很陌生 所以我仍在尝试并行化我的代码 我已经使用 pandas 和 pandarallel 获得了我想要的结果 所以我想知道是否可以使用 Dask 扩大任务规模或以某种方式加快速度 假设
  • 使用xarray,如何在多维数据集上并行化一维操作?

    我有一个 4D xarray 数据集 我想在特定维度 此处为时间 上的两个变量之间进行线性回归 并将回归参数保留在 3D 数组中 其余维度 我设法通过使用此串行代码获得了我想要的结果 但速度相当慢 add empty arrays to s
  • dask 可以用于在核心之外进行分组和重新编码吗?

    我有 8GB csv 文件和 8GB RAM 每个文件每行有两个字符串 格式如下 a c c a f g a c c a b f c a 对于较小的文件 我删除重复项 计算前两列中每行的副本数 然后将字符串重新编码为整数如下 https s
  • 与共享数据相比,消息传递的性能损失

    最近有很多关于不使用锁和使用 Erlang 等消息传递方法的讨论 或者关于使用不可变的数据结构 例如函数式编程与 C Java 中的比较 但我关心的是以下几点 AFAIK Erlang 不保证消息传递 消息可能会丢失 如果还要担心消息丢失
  • 使用 COMPS 构建 C/C++ 应用程序时出错:硬编码路径

    我正在尝试构建一个使用 C C 绑定开发的 COMPASs 应用程序 当我构建应用程序时 出现以下错误 您知道我该如何解决这个问题吗 xxxx xxx c increment gt buildapp increment BSC Barcel
  • YARN UNHEALTHY 节点

    在我们的 YARN 集群已满 80 的情况下 我们看到一些纱线节点管理器被标记为不健康 在深入研究日志后 我发现这是因为数据目录的磁盘空间已满 90 出现以下错误 2015 02 21 08 33 51 590 INFO org apach
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y

随机推荐