在大数据学习当中,主流的技术框架通常都是需要有相应程度的掌握的,包括Hadoop、Spark、Storm、Flink等。其中,Storm这个框架,其实处在一个稍微尴尬的地位,市场占有率称不上特别高,但是也不容忽视。今天的大数据入门分享,我们来对Storm做个简单的入门讲解。
诚如我们前面所说,Storm在大数据技术生态的地位,是处在不上不下的一个位置上。在企业级开发的市场上,Hadoop和Spark占据了主流地位,新晋的Flink也来势汹汹,而Storm在市场的裹挟之下,常常陷入被忽视的境地。
Storm简介
Storm,可以说是第一个实现了分布式实时计算框架,相比于Spark的准实时,Storm是“真正意义上的实时”。但是Spark与Hadoop的集成优势,却是Storm比不过的,由此也为Storm的后来发展埋下了伏笔。
Storm有很多应用场景,包括实时数据分析、联机学习、持续计算、分布式RPC、ETL等。尤其是在处理连续的流数据上,Storm性能是值得肯定的。
Storm核心概念
要学习Storm,我们先从Storm的几个核心概念开始讲起——
Topology(拓扑):在Storm中,分布式计算的结构被称为一个拓扑,它由流数据(Stream),Spouts(流生产者),以及bolt(操作)组成。拓扑涵盖了数据源获取、数据生产、数据处理的所有代码逻辑。
Spout:Spout是storm拓扑的主要数据入口点,Spout像适配器一样连接到一个源的数据,将数据转换为元组,发然后发射出一连串的元组。
Bolt:Bolts可以被认为是运算操作或函数,Spout会将数据传送给bolt,各种bolt还可以串联成一个计算链条。
Tuple:Storm的核心数据结构,是一个简单的键值对数据,每条数据都会被封装在tuple中,在多个spout和bolt之间传递。
Stream:就是一个流,抽象的概念,源源不断过来的tuple,就组成了一条数据流。
Storm集群架构
通常来说,Storm集群采用主从架构方式,主节点是Nimbus,从节点是Supervisor,有关调度相关的信息存储到ZooKeeper集群中。
Nimbus
Storm集群的Master节点,负责分发用户代码,指派给具体的Supervisor节点上的Worker节点,去运行Topology对应的组件(Spout/Bolt)的Task。
Supervisor
Storm集群的从节点,负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。
Worker
运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
Task
worker中每一个spout/bolt的线程称为一个task。在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。
ZooKeeper
用来协调Nimbus和Supervisor,如果Supervisor因故障出现问题而无法运行Topology,Nimbus会第一时间感知到,并重新分配Topology到其它可用的Supervisor上运行。
关于大数据学习,Storm入门,以上就为大家做了一个简单的介绍了。Storm这个框架,在大数据学习当中,需要学,但是重要程度可以略微排在Hadoop、Spark之后,合理安排学习时间。