2020-10-23 重温apache storm

Apache Storm 是一款免费并且开源的分布式实时计算系统。
Apache Storm使得无边界的流式数据处理非常简单。
Apache Storm支持多种编程语言,用起来简单有趣。
Apache Storm支持多种应用场景:实时分析、在线机器学习、流式计算、分布式的RPC、ETL等。
Apache Storm是快速的,单节点每秒可处理超过100万条tuple。
Apache Storm是可伸缩的、容错的、确保数据能被处理,并且易于安装和运维。
Apache Storm集成了常用的队列和数据库技术。
Storm topology消费并处理流式数据。

Apache Storm从一端读取​​实时数据的原始流,并将其传递通过一系列小处理单元,并在另一端输出处理/有用的信息。
Apache Storm的拓扑结构可以理解为一个有向无环图。

2020-10-23 重温apache storm

 

逻辑组件
Tuple
Tuple是Storm中的主要数据结构。它是有序元素的列表。默认情况下,Tuple支持所有数据类型。通常,它被建模为一组逗号分隔的值,并传递到Storm集群。
Stream    
流是元组的无序序列。
Spouts    
流的源。通常,Storm从原始数据源(如Twitter Streaming API,Apache Kafka队列,Kestrel队列等)接受输入数据。否则,您可以编写spouts以从数据源读取数据。“ISpout”是实现spouts的核心接口,一些特定的接口是IRichSpout,BaseRichSpout,KafkaSpout等。
Bolts    Bolts是逻辑处理单元。Spouts将数据传递到Bolts和Bolts过程,并产生新的输出流。Bolts可以执行过滤,聚合,加入,与数据源和数据库交互的操作。Bolts接收数据并发射到一个或多个Bolts。 “IBolt”是实现Bolts的核心接口。一些常见的接口是IRichBolt,IBasicBolt等。


集群架构
Apache Storm有两种类型的节点,Nimbus(主节点)和Supervisor(工作节点)。Nimbus是Apache Storm的核心组件。Nimbus的主要工作是运行Storm拓扑。Nimbus分析拓扑并收集要执行的任务。然后,它将任务分配给可用的supervisor。

Supervisor将有一个或多个工作进程。Supervisor将任务委派给工作进程。工作进程将根据需要产生尽可能多的执行器并运行任务。Apache Storm使用内部分布式消息传递系统来进行Nimbus和管理程序之间的通信。

Nimbus(主节点):
Nimbus是Storm集群的主节点。集群中的所有其他节点称为工作节点。主节点负责在所有工作节点之间分发数据,向工作节点分配任务和监视故障。


Supervisor(工作节点):    
遵循指令的节点被称为Supervisors。Supervisor有多个工作进程,它管理工作进程以完成由nimbus分配的任务。


Worker process(工作进程)
工作进程将执行与特定拓扑相关的任务。工作进程不会自己运行任务,而是创建执行器并要求他们执行特定的任务。

工作进程将有多个执行器。
工作进程的数量与配置文件中supervisor.slots.ports相关。


Executor(执行者):  
执行器只是工作进程产生的单个线程。执行器运行一个或多个任务,但仅用于特定的spout或bolt。


Task(任务): 
任务执行实际的数据处理。所以,它是一个spout或bolt。


ZooKeeper framework(ZooKeeper框架):
Apache的ZooKeeper的是使用群集(节点组)自己和维护具有强大的同步技术共享数据之间进行协调的服务。Nimbus是无状态的,所以它依赖于ZooKeeper来监视工作节点的状态。

ZooKeeper的帮助supervisor与nimbus交互。它负责维持nimbus,supervisor的状态。


常用命令
1、任务提交命令:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】

storm jar /export/servers/storm/examples/storm-starter/storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology  wordcount

2、杀死任务命令:storm kill 【拓扑名称】 -w 10(执行kill命令时可以通过-w [等待秒数]指定拓扑停用以后的等待时间)

storm kill topology-name -w 10

3、停用任务命令:storm deactive  【拓扑名称】
storm deactive topology-name

我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。

4、启用任务命令:storm activate 【拓扑名称】
storm activate topology-name

5、重新部署任务命令:storm rebalance  【拓扑名称】
storm rebalance topology-name

再平衡使你重分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会停用拓扑,然后在相应超时时间之后重分配worker,并重启拓扑。

参考地址:

http://storm.apache.org/index.html

https://www.w3cschool.cn/apache_storm

https://blog.csdn.net/qq_15220357/article/details/89394171