大数据面试之Storm

墨蓝 2023-02-17 15:55 53阅读 0赞

大数据面试之Storm

  • 1.Storm
    • 1.1 Spark Streaming和Storm有什么不同?
    • 1.2 Storm 架构模式

说明,感谢亮哥长期对我的帮助,此处多篇文章均为亮哥带我整理。以及参考诸多博主的文章。如果侵权,请及时指出,我会立马停止该行为;如有不足之处,还请大佬不吝指教,以期共同进步。

1.Storm

  1. Apache Storm是自由开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理。
  2. Apache Storm核心概念
  3. - NimbusStorm集群主节点,负责资源分配和任务调度。我们提交任务和截止任务都是在Nimbus上操作的。一个Storm集群只有一个Nimbus节点。
  4. - SupervisorStorm集群工作节点,接受Nimbus分配任务,管理所有Worker
  5. - Worker:工作进程,每个工作进程中都有多个Task
  6. - Task:任务,每个SpoutBolt都是一个任务,每个任务都是一个线程。
  7. - Topology:计算拓扑,包含了应用程序的逻辑。
  8. - Stream:消息流,关键抽象,是没有边界的Tuple序列。
  9. - Spout:消息流的源头,Topology的消息生产者。
  10. - Bolt:消息处理单元,可以过滤、聚合、查询数据库。
  11. - Stream grouping:消息分发策略,一共6种,定义每个Bolt接受何种输入。
  12. - Reliability:可靠性,Storm保证每个Tuple都会被处理。
  13. Storm集群架构图

image
参考
参考
参考
参考
参考

1.1 Spark Streaming和Storm有什么不同?

image

  1. 区别是SparkStreaming的吞吐量非常高,秒级准实时处理,Storm是容错性非常高,毫秒级实时处理
  2. 解释:sparkStreaming是一次处理某个间隔的数据,比如5秒内的数据,批量处理,所以吞吐量高。
  3. Storm是来一条处理一条,所以速度快,不存在丢失数据
  4. 应用场景:对于数据非常重要不能丢失数据的,不能有延迟的,比如股票,金融之类场景的使用Storm
  5. 对于没那么高精度,但是要处理大量的数据,可以用sparkSremaing
  6. SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:KafkaKafkaSparkStreaming是黄金组合), Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,reduce,join,window 。最终,处理后的数据可以存放在文件系统,数据库等,方便实时展现
  7. 同样作为流式处理框架,SparkStreamingStorm的区别在于:
  8. - Storm是实时处理数据,SparkStreaming是微批处理数据,因此SparkStreaming的吞吐量要比Storm
  9. - Storm适合处理实时数据,SparkStreaming适合处理流数据。SparkStreaming的高吞吐量,使得其计算逻辑必然可以处理复杂业务
  10. - Storm的事务更加完善(ack保障机制,数据有100条就直接处理100条),SparkStreaming可以管理事务(100条数据处理完50条,可以手动管理处理剩下的50条)
  11. - StormSparkStreaming都支持动态资源调度,不过最好别开启(资源一旦释放掉,有可能就要不回来了)

image
参考
参考

1.2 Storm 架构模式

image

  1. Hadoop主从架构一样,Storm也采用Master/Slave体系结构,分布式计算由NimbusSupervisor两类服务进程实现,Nimbus进程运行在集群的主节点,负责任务的指派和分发,Supervisor运行在集群的从节点,负责执行任务的具体部分。
  2. Nimbus:负责资源分配和任务调度。
  3. Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
  4. Worker:运行具体处理组件逻辑的进程。
  5. Task:worker中每一个spout/bolt的线程称为一个task。同一个spout/bolttask可能会共享一个物理线程,该线程称为executor
  6. storm架构中使用Spout/Bolt编程模型来对消息进行流式处理。消息流是storm中对数据的基本抽象,一个消息流是对一条输入数据的封装,源源不断输入的消息流以分布式的方式被处理,Spout组件是消息生产者,是storm架构中的数据输入源头,它可以从多种异构数据源读取数据,并发射消息流,Bolt组件负责接收Spout组件发射的信息流,并完成具体的处理逻辑。在复杂的业务逻辑中可以串联多个Bolt组件,在每个Bolt组件中编写各自不同的功能,从而实现整体的处理逻辑。

参考
参考

面试题
面试题
面试题

发表评论

表情:
评论列表 (有 0 条评论,53人围观)

还没有评论,来说两句吧...

相关阅读