【发布时间】:2015-10-20 21:22:48
【问题描述】:
我们在单节点开发服务器中配置了 Storm,大部分配置设置为默认值(不是本地模式)。 让storm nimbus、supervisor和workers只在那个单一的节点上运行并且UI也被配置了。
AFAIK 并行性和配置因拓扑而异。 我认为找到正确的并行性和配置只能通过反复试验的方法。
因此,为了找到最佳并行性,我们开始在单个节点中使用各种配置测试 Storm 拓扑。
奇怪的是结果出乎意料:
我们的拓扑处理来自 HDFS 目录的 xml 文件流。 有一个喷口(平行度始终为 1)和四个螺栓。
- 单身工人
无论采用何种拓扑并行度,我们都能获得几乎相同的性能结果(数据处理速率)
- 多个工人
无论采用何种拓扑并行性,直到某个时间(大多数情况下为 10 分钟),我们都能获得与单个工作器相似的性能。
但在该完整拓扑重新启动后,没有任何错误跟踪。
我们观察到,在 5 个具有相同并行度的工作人员的情况下,单个工作人员在 20 分钟内处理的任何数据都需要 90 分钟。 此外,拓扑已在 5 个工作人员的情况下重新启动了 7 次。 而且CPU使用率比较高。 (其他人也遇到过这个拓扑重启问题http://search-hadoop.com/m/LrAq5ZWeaU 但没有答案)
在测试了许多配置后,我们发现具有较少并行度的单个 worker(每个 bolt 具有 2 或 3 个实例)比高并行度或更多的 worker 工作得更好。
在理想情况下,Storm 拓扑的性能应该更好,更多的无工人/并行性。
显然这条规则在这里并不适用。
为什么我们不能在单个节点中设置多个工人?
单个节点最多可以运行多少个worker?
需要对 Storm 配置进行哪些更改才能扩展性能? (我试过 nimbus.childopts 和 worker.childopts)
【问题讨论】:
-
您测试 Storm 的机器的配置是什么?您是否遇到与您提供链接相同的错误?
-
我不明白你的意思。当然,您可以在一个节点(风暴硬件)中定义多个工作人员。我每个节点使用 2 个或更多工作器(如果一个工作器死了,还剩下一个,所以我尽量避免在风暴集群中“死”硬件,因为应该还有一个仍在工作)。
标签: apache-storm