Apache spark 使用Spark处理请求
我想了解以下内容是否是Spark的正确用例 对应用程序的请求通过消息队列或包含一批请求的文件接收。对于消息队列,目前每秒大约有100个请求,尽管这可能会增加。有些文件只包含几个请求,但更常见的是有数百个甚至数千个请求 对每个请求的处理包括请求过滤、验证、查找参考数据和计算。有些计算引用规则引擎。完成这些操作后,将向下游系统发送一条新消息 我们希望使用Spark将处理分布到多个节点,以获得可伸缩性、弹性和性能 我设想它会这样工作:Apache spark 使用Spark处理请求,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我想了解以下内容是否是Spark的正确用例 对应用程序的请求通过消息队列或包含一批请求的文件接收。对于消息队列,目前每秒大约有100个请求,尽管这可能会增加。有些文件只包含几个请求,但更常见的是有数百个甚至数千个请求 对每个请求的处理包括请求过滤、验证、查找参考数据和计算。有些计算引用规则引擎。完成这些操作后,将向下游系统发送一条新消息 我们希望使用Spark将处理分布到多个节点,以获得可伸缩性、弹性和性能 我设想它会这样工作: 将一批请求作为RDD加载到Spark中(在消息队列上接收的请求可能
谢谢我们在一个小型物联网项目上做了类似的工作。我们测试了在3个节点上每秒接收和处理大约50K mqtt消息,这是轻而易举的事。我们的处理包括解析每个JSON消息,对创建的对象进行一些操作,并将所有记录保存到时间序列数据库中。 我们将批处理时间定义为1秒,处理时间约为300ms,RAM~100sKB。 一些关于流媒体的问题。确保下游系统是异步的,这样就不会出现内存问题。spark确实支持背压,但你需要让它发生。另一件事,尽量把状态控制在最低限度。更具体地说,您不应该保持任何随着输入的增长而线性增长的状态。这对于系统的可伸缩性非常重要 给我印象最深的是你可以用spark轻松缩放。随着我们添加的每个节点,我们可以处理的消息频率呈线性增长 我希望这有点帮助。
祝你好运我也做了一些类似的事情。主要是,我们开发了一个web报废程序,但我们使用了Scala-Akka框架。它是一个基于参与者的框架,提供了即时的一致性、可扩展性。系统顶部有一个主参与者,它触发整个过程。创建MasterActor,进而为工人提供单元流程。单元过程是处理单个URL,清除非英语数据,并存储在Cassandra中。输出是一个未来的对象,并对其进行了一些回调。通常,参与者只发送/接收不可变的消息。您的系统看起来像是基于演员的。非常感谢,但我们正在特别考虑Spark,并想知道根据要求,它是否适合。我知道Spark比Akka提供了更高级别的抽象,但也可以同时使用它们。