欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Storm学习笔记 - Storm初识

程序员文章站 2022-03-30 20:23:21
Storm学习笔记 Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流。 2. Storm的特点 高性能,低延迟。 分布式:可解决数据量大,单机搞不定的场景。 可扩展:随着业务的发展,数据量越来越大,系统可以水平扩展。 容错:单个节点挂了,不 ......

storm学习笔记 - storm初识

1. strom是什么?

  • storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流。

    2. storm的特点

  • 高性能,低延迟。
  • 分布式:可解决数据量大,单机搞不定的场景。
  • 可扩展:随着业务的发展,数据量越来越大,系统可以水平扩展。
  • 容错:单个节点挂了,不影响整个应用。

    3. storm与其他框架的比较

    3.1 storm和hadoop的比较

  • storm用于实时计算,hadoop用于离线计算。
  • storm处理的数据保存在内存中,源源不断。hadoop处理的数据保存在文件系统中,一批一批。
  • storm与hadoop的编程模型相似。

    3.2 storm与spark streaming的比较

  • spark streaming采用小批量的方式,提高了吞吐性能。
  • 处理数据的粒度变大,导致spark streaming的数据延时不如storm,spark streaming是秒级返回结果(与设置的batch间隔有关),storm则是毫秒级。

    4. storm集群架构

    Storm学习笔记 - Storm初识
  • nimbus:storm集群的主节点,负责分发用户代码,指派给具体的supervisor节点上的worker节点,去运行topology对应的组件(spout/bolt)的task。
  • supervisor,storm集群的从节点,负责管理运行在supervisor节点上的每一个worker的启动和终止。可以通过配置项决定在一个supervisor上最大可以运行多少个slot,每个slot通过端口号来唯一标识,一个端口号对应一个worker进程。
  • worker:运行处理具体组件逻辑的进程,worker运行的进程只有两种,一种是spout进程,一种是bolt进程。
  • task:worker中每一个spout/bolt的线程称为一个task。
  • zookeeper:用来协调nimbus和supervisor,如果supervisor因故障出现问题而无法运行topology,nimbus会第一时间感知到,并重新分配topology到其他可用的supervisor上运行。

    5. storm编程模型

    Storm学习笔记 - Storm初识
  • topology:storm中运行的一个实时应用程序的名称。将 spout、 bolt整合起来的拓扑图。定义了 spout和bolt的结合关系、并发数量、配置等等。
  • spout:在一个topology中获取源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。
  • bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。
  • tuple:一次消息传递的基本单元,理解为一组消息就是一个tuple。
  • stream:tuple的集合。表示数据的流向。

    6. 总结

  • 拓扑(topology):打包好的实时应用计算任务,同hadoop的mapreduce任务相似。
  • 元组(tuple):是storm提供的一个轻量级的数据格式,可以用来包装你需要实际处理的数据。
  • 流(streams):数据流(stream)是storm中对数据进行的抽象,它是时间上*的tuple元组序列(无限的元组序列)。
  • spout(喷嘴):storm中流的来源。spout从外部数据源,如消息队列中读取元组数据并吐到拓扑里。
  • bolts:在拓扑中所有的计算逻辑都是在bolt中实现的。
  • 任务(tasks):每个spout和bolt会以多个任务(task)的形式在集群上运行。
  • 组件(component):是对bolt和spout的统称。
  • 流分组(stream groupings):流分组定义了一个流在一个消费它的bolt内的多个任务(task)之间如何分组。
  • 可靠性(reliability):storm保证了拓扑中spout产生的每个元组都会被处理。
  • workers(工作进程):拓扑以一个或多个worker进程的方式运行。每个worker进程是一个物理的java虚拟机,执行拓扑的一部分任务。
  • executor(线程):是1个被worker进程启动的单独线程。每个executor只会运行1个topology的1个component。
  • nimbus:storm集群的master节点,负责分发用户代码,指派给具体的supervisor节点上的worker节点,去运行topology对应的组件(spout/bolt)的task。
  • supervisor:storm集群的从节点,负责管理运行在supervisor节点上的每一个worker进程的启动和终止。