java工程师,storm的关系是什么呢

 

因为我们可能需要实时的去计算出热点缓存数据,实时计算,亿级流量,高并发,大量的请求过来

这个时候,你要做一些实时的计算,那么必须涉及到分布式的一些技术,分布式的技术,才能处理高并发,大量的请求

目前这时候计算的领域,最成熟的大数据的技术,就是storm

storm分布式的大数据实时计算的技术/系统

首先我带大家入一下门二话不说上图

Storm的入门

这是手画的图,可能有些不精美,不过不影响大家观看,上图就是storm的架构

是这样子的,supervisor是什么呢,一个supervisor就是一台机器,那么,它这台机器可以根据计算要求(开启多少个进程啊,多少个线程去执行啊,等等)去完成实时计算的程序,比如我这个实时计算作业希望开启三个进程去完成作业,让这些进程去运行用户提交过来的数据进行实时计算的作业,这时候nimbus就会告诉supervisor你们给我启动进程去完成作业

那么这三个进程就会分配到三个supervisor上的worker上,这个时候每个进程里面可能会启动一些线程去完成这个实时计算的一个作业,比如说设置九个线程去跑,那么每个进程里面就有三个线程,我还还可以配置它要搞多少个task(封装的代码副本),每个task都有一份代码副本,而且每个task会执行相同代码里面的一部分数据,一个线程可能会执行多个task

 

你写的代码会运行在多个task里面,每个task都会放到executor这个线程里面,每个线程都会放到worker这个进程里面,每个进程都会放到对应的supervisor进程所对应的机器上面,最后由nimbus来进行资源调度

 

九条数据分发到九个task上面,九个task分别执行一条数据,即大量的数据分散到多个task上面,也就是多个线程,也就是多个进程,也就是多个服务器上面去,并行并发去计算,这是不是就是一套分布式实时计算的系统啊? zookeeper是保存了nimbus和supervisor的元数据的

下面说一下storm的核心概念吧

storm核心概念

Topology,Spout,Bolt,Tuple,Stream

 

拓扑:务虚的一个概念

 

Spout:数据源的一个代码组件,就是我们可以实现一个spout接口,写一个java类,在这个spout代码中,我们可以自己尝试去数据源获取数据,比如说从kafka中消费数据

 

bolt:一个业务处理的代码组件,spout会将数据传送给bolt,各种bolt还可以串联成一个计算链条,java类实现了一个bolt接口

 

一堆spout+bolt,就会组成一个topology,就是一个拓扑,实时计算作业,spout+bolt,一个拓扑涵盖数据源获取/生产+数据处理的所有的代码逻辑,topology

 

tuple:就是一条数据,每条数据都会被封装在tuple中,在多个spout和bolt之间传递

 

stream:就是一个流,务虚的一个概念,抽象的概念,源源不断过来的tuple,就组成了一条数据流

Storm的入门

好比说,这边我们这个拓扑需要4个worker去执行,主机节点就告诉supervisor你们去给我开启四个进程去协助拓扑完成作业,spout需要执行代码去消费到kafka的数据,每个spout和bolt都可以认为是一个代码组件,都可以去指定所需的excutoe和task  下面我们就把他们和架构结合起来 结合上图,spout说需要两个线程4个task,这个时候就会根据workder的数量进行分配,那么第一个worker也就是执行两个线程 4个task 第二个bolt执行两个线程6个task ……….  这就是storm一些核心的概念引入到集群中我对他们的理解  

                                                                                                                                                    有问题多多交流,也可以私信我

 

 

 

 

 

 

相关文章:

  • 2021-12-17
  • 2021-08-09
  • 2021-10-16
  • 2021-11-11
  • 2021-09-11
  • 2021-10-28
  • 2021-06-25
  • 2022-02-08
猜你喜欢
  • 2021-06-17
  • 2021-05-22
  • 2021-11-15
  • 2022-12-23
  • 2021-07-31
  • 2021-11-23
  • 2021-05-29
相关资源
相似解决方案