Streaming 有状态和无状态流处理

Streaming 有状态和无状态流处理,streaming,apache-storm,hadoop-streaming,Streaming,Apache Storm,Hadoop Streaming,在开始学习流式处理时,我听到了以下两个技术项目:有状态流式处理和无状态流式处理,它们之间有什么区别?我听说storm是无状态的,而storm trident是有状态的,所以在实践中,在哪里使用storm和在哪里使用storm trident?两者之间的区别在于,在非常高的级别上,您必须对它们执行的操作类型 有些操作是无状态的,即一次处理一条记录。 想想银行出纳员,他一次处理一个客户流。每个客户都是一个新的工作单元,不依赖于以前的工作单元 有状态的操作就像雇佣新员工一样。你有很多人来面试,但是你是

在开始学习流式处理时,我听到了以下两个技术项目:有状态流式处理和无状态流式处理,它们之间有什么区别?我听说storm是无状态的,而storm trident是有状态的,所以在实践中,在哪里使用storm和在哪里使用storm trident?

两者之间的区别在于,在非常高的级别上,您必须对它们执行的操作类型

有些操作是无状态的,即一次处理一条记录。 想想银行出纳员,他一次处理一个客户流。每个客户都是一个新的工作单元,不依赖于以前的工作单元

有状态的操作就像雇佣新员工一样。你有很多人来面试,但是你是否雇佣他们,取决于你的状态,也就是说,你有什么职位空缺

例如,假设您正在处理web日志。如果您想知道每秒有多少用户在查看一个页面,您的处理几乎是无状态的:每秒钟您计算每页有多少用户。每一秒,你都不在乎前一秒的结果。这是一个无状态操作

假设您希望计算下一秒将有多少用户的预测。您希望平均最后10分钟的时间,因此您需要保留一个最后10*60秒的队列-这是您需要为处理保留的状态,您需要每秒更新一次,以保持最近10分钟的状态。 这当然是一个有状态的操作。 一个更简单的有状态操作就是计算自站点开始以来的页面浏览总数

这两个操作之间的一个关键区别是,如果流停止并且您重置了系统,您必须注意保存状态。 无状态操作没有任何要保存的状态,因此通常更简单