大数据面试之Storm


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

1.Storm

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

image
参考
参考
参考
参考
参考

1.1 Spark Streaming和Storm有什么不同?

image

区别是SparkStreaming的吞吐量非常高,秒级准实时处理,Storm是容错性非常高,毫秒级实时处理
解释:sparkStreaming是一次处理某个间隔的数据,比如5秒内的数据,批量处理,所以吞吐量高。
Storm是来一条处理一条,所以速度快,不存在丢失数据
应用场景:对于数据非常重要不能丢失数据的,不能有延迟的,比如股票,金融之类场景的使用Storm
对于没那么高精度,但是要处理大量的数据,可以用sparkSremaing

SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka(Kafka和SparkStreaming是黄金组合), Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,reduce,join,window 。最终,处理后的数据可以存放在文件系统,数据库等,方便实时展现
同样作为流式处理框架,SparkStreaming和Storm的区别在于:
- Storm是实时处理数据,SparkStreaming是微批处理数据,因此SparkStreaming的吞吐量要比Storm高
- Storm适合处理实时数据,SparkStreaming适合处理流数据。SparkStreaming的高吞吐量,使得其计算逻辑必然可以处理复杂业务
- Storm的事务更加完善(ack保障机制,数据有100条就直接处理100条),SparkStreaming可以管理事务(100条数据处理完50条,可以手动管理处理剩下的50条)
- Storm和SparkStreaming都支持动态资源调度,不过最好别开启(资源一旦释放掉,有可能就要不回来了)

image
参考
参考

1.2 Storm 架构模式

image

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

参考
参考

面试题
面试题
面试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值