parallel-processing - 在 Apache Storm 中每个集群节点配置多个 worker 的原因是什么?

标签 parallel-processing stream apache-storm

下面我引用这篇文章:Understanding the Parallelism of a Storm Topology作者:Michael G. Noll

在我看来,一个工作进程可以托管任意数量的执行器(线程)来运行任意数量的任务(拓扑组件的实例)。为什么我应该为每个集群节点配置一个以上的工作程序?

我看到的唯一原因是工作人员最多只能运行一个拓扑的子集。因此,如果我想在同一个集群上运行多个拓扑,我需要为每个集群节点配置与要运行的拓扑数量相同的工作线程数。
(例如:这是因为我希望在某些集群节点失败的情况下保持灵活性。例如,如果只剩下一个集群节点,我需要至少与在该集群上运行的拓扑一样多的工作进程,以保持所有拓扑运行.)

还有其他原因吗?特别是,如果只运行一种拓扑,是否有任何理由为每个集群节点配置一个以上的工作人员? (更好的故障安全性等)

最佳答案

平衡每个节点的主管守护程序的成本,以及工作程序崩溃的影响风险。如果您有一个大型的单体 JVM,那么一次崩溃会影响该 worker 中运行的所有内容,并且您的 worker 的不良行为部分会影响更多的居民。但是通过每个节点有一个以上的 worker ,你可以让你的主管更有效率,现在有一个隔板模式,避免全有或全无的方法。

我提到的共享资源可能是你的,也可能是 Storm 的;每个 JVM 共享多个 Storm 架构,并且可能会产生争用问题。我特别指的是接收和发送线程,以及底层网络部分。记录 here .

关于parallel-processing - 在 Apache Storm 中每个集群节点配置多个 worker 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760801/

相关文章:

在 C 中使用 MPI 进行代码并行化

c++ - 了解#pragma omp parallel

node.js - 检测 NodeJS 中的 GRPC 服务器故障

Java.util.ArrayList hashCode 在 Storm 拓扑上返回的不是随机值

r - 函数内的并行 *ply

python - 并行填充矩阵

maven - 在 Apache karaf 上的 bundle 中使用 Apache Camel

ios - .NET Streamed PDF 无法在移动浏览器中打开

apache-storm - Storm 拓扑配置

java - 比较 Storm bolt 中的上一个和下一个元组