Apache Storm 官方文档 —— FAQ

  • 时间:
  • 浏览:2
  • 来源:uu快3官网_uu快3登入

最后,更少的 worker 都都能能有效地降低控制流的频繁变动。

实际上,trident batch interval 一一好几个 多多用处。首先,它都都能能用于减缓 spout 从远程数据源获取数据的速率,但这不让影响数据出理 的速率。类似,对于一一好几个 多从给定的 S3 存储区中读取批量上传文件并按行发送数据的 spout,大伙儿就不希望它突然触发 S3 的阈值,由于 文件要隔几分钟才会上传一次,咋样让每个 batch 也需为宜一定的时间来执行。

Trident 并也有不让对 batch 进行限制。不过由于 使用 Kafka 的相关 spout,这麼 就都都能能使用 max fetch bytes 大小除以 平均 record 大小来计算每个子 batch 分区的有效 record 大小。

# 此处译文由于 存在问题准确,有现象的读者请参考原文对应内容。

注意,你你这人 200 ms 仅仅是一一好几个 多上限值,而也有额外增加的延时时间,由于 你的 batch 需为宜 258 ms 来运行,这麼 Trident 就只会延时在等待 42 ms。

Trident 拓扑都都能能设计成条件路径(if-else)的工作流形式吗?类似,bolt0 在接收 spout 的数据流时,都都能能根据输入 tuple 的值来选泽将数据流发送到 bolt1 由于 bolt2,而也有并肩向一一好几个 多 bolt 发送。

必须存储多量静态数据,咋样让是越少越好(尽管你人太好都都能能向其中存储更多的信息,不过大伙儿不推荐另一一一好几个 多 做)。

其次,一一好几个 多大的聚合器带来的大的缓存空间比 24 个小聚合器带来的小缓存空间要有用得多。由于 这回降低数据倾斜造成的影响,并肩提高 LRU 的性能。

你你这人 情况报告下都都能能写一一好几个 多 each 函数来将时间戳置入一一好几个 多时间桶中:由于 桶的大小是以“小时”为单位的,这麼 时间戳 2013-08-08 12:34:56 就会被匹配到 2013-08-08 12:00:00 桶中,有些的 12 时到 13 时之间的时间也一样。咋样让都都能能使用persistentAggregate 来对时间桶分组。persistentAggregate 会使用一一好几个 多基于数据存储的本地 cacheMap。哪几个包含晒 多量 records 的 group 会使用高效的批量读取/写入土方式 对数据存储区进行操作,什么都不让说会对数据存储区进行多量的读操作;我希望你的数据传送足够快捷,Trident 就都都能能高效地使用内存与网络。即使某台服务器宕机了一天,须要重新快速地发送一整天的数据,旧有的结果能够否静默地获取到并进行更新,咋样让这不让说会影响当前结果的计算过程。

对于含晒 固定时间戳的 records,由于 须要对大伙儿执行计数、求均值由于 聚合操作,并将结果整合到离散的时间桶(time bucket)中,Trident 是一一好几个 多很好的具有可扩展性的出理 方案。

worker 的完全数量是由 supervisor 配置的。每个 supervisor 会分配到一定数量的 JVM slot,你在拓扑中设置的 worker number 却说以你你这人 slot 数量为土方式 进行分配的。

很遗憾,你不让知道哪几个刚刚 所有的 event 都由于 整理到了 —— 这是一一好几个 多认识论现象,而也有一一好几个 多分布式系统的现象。咋样愿意 :

Trident 的 batch 在并也有意义上是并也有过载的设施。batch 大小与 partition 的数量均受限于由于 是都都能能用于定义#

不建议为每个拓扑在每台机器上分配超过一一好几个 多 worker。

是的,Storm 中一一好几个 多多可选的 “spout 在等待策略”,默认配置是 sleep 一段指定的配置时间。

首先,在 worker 外部将数据流重新分区到不同的 executor 的操作(比如 shuffle 由于 group-by)就不让产生触发到传输 buffer 缓冲区,tuple 会直接从发送端转储到接收端的 buffer 区。你你这人 点有很大的优势。相反,由于 目标 executor 是在同一台机器的不同 worker 进程内,tuple 就须要经历“发送 -> worker 传输队列 -> 本地 socket 端口 -> 接收端 worker -> 接收端 executor”另一一一好几个 多 一一好几个 多漫长的过程。人太好你你这人 过程不让说会产生网络级传输,咋样让在同一台机器的不同进程间的传输损耗也是很可观的。

另一一一好几个 多 用处是限制启动期间由于 突发数据负载情况报告下外部消息队列的负载压力。由于 spout 突然活跃起来,并向系统中挤入了 10 个 batch 的记录,这麼 由于 会有从 batch7 结速英语 英语 的多量不紧急的 tuple 堵塞住传输缓冲区,咋样让阻塞了从 batch3 中的 tuple(甚至由于 含晒 batch3 中的部分旧 tuple)的 commit 过程#。对于你你这人 情况报告,大伙儿的出理 土方式 却说将 trident batch interval 设置为正常的端到端出理 速率的一半左右 —— 也却说说由于 需为宜 2000 ms 的时间出理 一一好几个 多 batch,这麼 就都都能能每 200 ms 出理 一一好几个 多 batch。

Trident spout 实际上是通过 Storm 的 bolt 运行的。MasterBatchCoordinator(MBC)封装了 Trident 拓扑的 spout,它负责整合 Trident 中的 batch,你你这人 点对于你所使用的任何类型的 spout 而言也有一样的。Trident 的 batch 却说在 MBC 向各个 spout-coordinator 整理种子 tuple 的过程中生成的。Spout-coordinator bolt 知道你所定义的 spout 是咋样互相公司媒体合作 的 —— 实际上,在使用 Kafka 的情况报告下,各个 spout 却说通过 spout-coordinator 来获取 pull 消息所须要的 partition 和 offset 信息的。

你知道 486 时代的计算机上边为哪几个有个 trubo button 吗?你你这人 参数的作用和你你这人 按钮不得劲像。

到目前为止,Trident 暂时不支持输出多个数据流。(详见 STORM-68)

我希望一一好几个 多多运行于三台 8 核服务器节点的拓扑,它的并行度为24,每个 bolt 在每台机器上分配有 8 个 executor(即每个 CPU 核心分配一一好几个 多)。你你这人 场景下,使用一一好几个 多 worker (每个 worker 分配 8 个executor)相对于使用更多的 worker (比如使用 24 个 worker,为每个 executor 分别分配一一好几个 多)有三点好处:

由于 在 Trident 中 MBC 才是实际运行的 spout,一一好几个 多 batch 中的所有 tuple 也有 MBC 生成的 tuple 树的节点。也却说说,Storm 的 “max spout pending” 参数实际上定义的是都都能能并发运行的 batch 数量。MBC 在满足以下一一好几个 多条件下会发送出一一好几个 多新的 batch:首先,挂起的 tuple 数须要小于 “max pending” 参数;其次,距离上一一好几个 多 batch 的发送由于 过去了为宜一一好几个 多trident batch interval 的间隔时间。

咋样愿意 使用 join、merge 由于 multiReduce 来联结各个数据流。

必须在 batch 生成刚刚 更改 batch 的大小,不过都都能能通过 shuffle 操作以及修改并行度的土方式 来改变 partition 的数量。

Trident 的 “each” 运算符都都能能返回一一好几个 多数据流对象,咋样愿意 将该对象存储在某个变量中,咋样让咋样愿意 对同一一好几个 多数据流执行多个 each 操作来分解该数据流,如下述代码所示: