JStorm—实时流式计算框架入门介绍

JStorm介绍

  JStorm是参考storm基于Java语言重写的实时流式计算系统框架,做了很多改进。如解决了之前的Storm nimbus节点的单点问题。
  JStorm类似于Hadoop MapReduce系统,用户按照指定的接口去实现一个任务,任务提交给JStorm进行运行,且这种运行是不间断的,因为如果期间有worker发生故障,调度器会分配一个新的worker去替换这个故障worker。
  从应用的角度来看,JStorm是一种分布式应用;从系统框架层面来看,JStorm又是一种类似于Hadoop MapReduce的调度系统;从数据层面来看,JStorm又是一种流式的实时计算方案。

JStorm优势

  1. 易开发性: JStomr接口简易,只需按照Spout、Bolt及Topology编程规范进行应用开发即可;
  2. 扩展性:可以线性的扩展性能,配置并发数即可;
  3. 容错性:出现故障worker时,调度器会分配一个新的worker去代替;
  4. 数据精准性:JStorm内置ACK机制,确保数据不丢失。还可以采用事务机制确保进一步的精准度;
  5. 实时性:JStorm不间断运行任务,且实时计算。

JStorm应用场景

  1. 实时计算:可实时数据统计,实时监控;
  2. 消息转移:流处理完消息后,可以定向的将结果存储到其他消息中间件中;
  3. rpc请求:提交任务就是一次rpc请求过程;
    典型的场景:用于日志分析,rpc请求提交任务,从收集的日志中,统计出特定的数据结果,并将统计后的结果持久化到外部存储中,这是一种信息流处理方式,可聚合,可分析。

JStorm架构

在这里插入图片描述

组件介绍

  • UI:JStorm web界面。
  • Nimbus:调度者,是主控制节点,主要功能为提交任务、分配集群任务、集群监控等。
  • Supervisor:负责接收Nimbus分配的任务,管理自己的所属Worker进程,supervisor节点是整个集群中实际运行的topology节点。
  • Zookeeper:分布式应用,主要功能包括集群协调、公有数据的存放(如心跳信息、集群的状态和配置信息),Nimbus将分配给Supervisor的任务是写在zk中的,Nimbus是基于zk对整个集群进行调度,所以我们也可以说JStorm是依赖于zk的分布式调度系统。

任务进程和线程

  • Worker:运行具体处理组件逻辑的进程;
  • Task:每个Worker进程中包含多个Task线程,提交的topology任务内包含多个组件(spout和bolt),每个组件依据其并行度配置会分配到相应数量的Task任务,每个Task任务运行在各自的Task线程中。
发布了97 篇原创文章 · 获赞 127 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Andya_net/article/details/104991367
今日推荐