-
1.什么是storm?
Storm是一个免费的开源分布式实时计算系统,可以处理无限的数据.实时的处理。应用场景:
实时分析,在线机器学习,连续计算,分布式RPC,ETL等。可扩展性,容错性。
特点是:1.快2.可展性,容错性。(添加机器方式水平扩展)
小结:storm可以实现高频数据和大规模数据的实时处理。
-
2.Storm 与hadoop的区别(面试题)
数据源和处理领域:hadoop的数据源存放在hdfs,并且做离线批处理。storm实时处理。延时性行低.
处理过程:hadoop是一个作业被拆分成map与reducer阶段。或者一个map阶段。需要通过api开发来开发自己mapreduce。storm是由 spout bolt,处理是考bolt进行处理。并且通过topology进行调度处理。
进程是否结束:在haoop或者spark离线处理启动运行后结束。storm是不可以停止的。
使用场景:实时分析,hadoop离线分析。
-
3.storm 与sparkstreaming?
1.实时性:sparkstreaming不是真的实时处理系统,sparkstreaming是把数据进行拆分成多个数据块,通过spark engine来进行处理。所以说sparkstreaming小批次处理。storm才是真正的实时的。可以达到秒级别或者毫秒级别。
2.吞吐量 :Storm的吞吐量要略差于Spark Streaming,原因一是Storm从spout组件接收源数据,通过发射器发送到bolt,bolt对接收到的数据进行处理,处理完以后,写入到外部存储系统中或者发送到下个bolt进行再处理,所以storm是移动数据,不是移动计算.Spark Streaming获取Task要计算的数据在哪个节点上,然后TaskScheduler把task发送到对应节点上进行数据处理,所以Spark Streaming是移动计算不是移动数据
3、容错机制:storm是acker(ack/fail消息确认机制)确认机制确保一个tuple被完全处理,Spark Streaming是通过存储RDD转化逻辑进行容错,也就是如果数据从A数据集到B数据集计算错误了,由于存储的有A到B的计算逻辑,所以可以从A重新计算生成B
使用场景:当你业务场景不需要后续处理或者需要秒级那么可以使用storm
如果你可以接受几秒延迟那么可以选择sparkstreaming.
-
4.storm的架构?
Nimbus:负责资源分配和任务调度。
Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。
Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:
- Worker(进程)
- Executor(线程)
- Task
1个worker进程执行的是1个topology的子集(注:不会出现1个worker为多个topology服务)。1个worker进程会启动1个或多个executor线程来执行1个topology的component(spout或bolt)。因此,1个运行中的topology就是由集群中多台物理机上的多个worker进程组成的。
executor是1个被worker进程启动的单独线程。每个executor只会运行1个topology的1个component(spout或bolt)的task(注:task可以是1个或多个,storm默认是1个component只生成1个task,executor线程里会在每次循环里顺序调用所有task实例)。
task是最终运行spout或bolt中代码的单元(注:1个task即为spout或bolt的1个实例,executor线程在执行期间会调用该task的nextTuple或execute方法)。topology启动后,1个component(spout或bolt)的task数目是固定不变的,但该component使用的executor线程数可以动态调整(例如:1个executor线程可以执行该component的1个或多个task实例)。这意味着,对于1个component存在这样的条件:#threads<=#tasks(即:线程数小于等于task数目)。默认情况下task的数目等于executor线程数目,即1个executor线程只运行1个task。
-
5.Storm的安装配置?
解压:tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
设置环境变量
编辑配置文件:$STORM_HOME/conf/storm.yaml
注意:如果要搭建Storm的HA,只需要在nimbus.seeds中设置多个nimbus即可。
把安装包复制到其他节点上。
-
6.storm核心概念?/storm计算结构?
storm计算结构成为topology,topology的组成是:
Topology:计算拓扑由spout和bolt组成.包括了stream,spout.bolt.
Stream:消息流,抽象概念,没有边界的tuple构成
Tuple:消息/数据 传递的基本单元。是一个或者多个键值对的列表。是spout与bolt之间、bolt与bolt之间传递数据的一种格式。stream是由tuple组成。
Spout:消息流的源头.topology的消息生产者。数据采集器。链接数据源,并将数据转化为tuple作为数据流发送出去。
Bolt:消息处理的单元,对数据进行处理。可以做过滤、聚合、查询/写数据库等操作。