storm的并发机制

storm的并发机制

storm计算支持在多台机器上水平扩容,通过将计算切分为多个独立的tasks在集群上并发执行来实现。

一个task可以简单地理解:在集群某节点上运行的一个spout或者bolt实例。

topology的组成部分:
Nodes(服务器):配置在一个storm集群中的服务器,会执行topology的一部分运算。一个storm集群可以包括一个或者多个工作node;

Workers(JVM虚拟机):一个NOde上相互独立运行的JVM进程。每个Node可以配置运行一个或者多个worke.一个topology会分配到一个或者多个worker上运行。

Executor(线程):一个worder的JVM进程中运行的java线程。多个task可以指派给同一个executer来执行。除非是明确指定,storm默认给每个executor分配
一个task。

Task(bolt/spout 实例):task是spout和bolt的实例,它们的nextTuple()和execute()方法会呗executors线程调用执行。

并发机制:
storm默认并发设置默认为1;
执行流程:
假设有一台服务器,配置了一个node,为topolofy分配了一个worker,并且每个executer执行一个task。

如图所示:

 <实时分布式>

转载于:https://www.cnblogs.com/catkins/p/5259413.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JStorm 是一个分布式实时计算引擎。       JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker。       因此,从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm是一套类似MapReduce的调度系统。 从数据的角度,JStorm是一套基于流水线的消息处理机制。       实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop MapReduce,逐渐满足不了需求,因此在这个领域需求不断。Storm组件和Hadoop组件对比StormHadoop角色NimbusJobTrackerSupervisorTaskTrackerWorkerChild应用名称TopologyJob编程接口Spout/BoltMapper/Reducer  优点        在Storm和JStorm出现以前,市面上出现很多实时计算引擎,但自Storm和JStorm出现后,基本上可以说一统江湖: 究其优点:开发非常迅速:接口简单,容易上手,只要遵守Topology、Spout和Bolt的编程规范即可开发出一个扩展性极好的应用,底层RPC、Worker之间冗余,数据分流之类的动作完全不用考虑扩展性极好:当一级处理单元速度,直接配置一下并发数,即可线性扩展性能健壮强:当Worker失效或机器出现故障时, 自动分配新的Worker替换失效Worker数据准确性:可以采用Ack机制,保证数据不丢失。 如果对精度有更多一步要求,采用事务机制,保证数据准确。  应用场景        JStorm处理数据的方式是基于消息的流水线处理, 因此特别适合无状态计算,也就是计算单元的依赖的数据全部在接受的消息中可以找到, 并且最好一个数据流不依赖另外一个数据流。因此,常常用于日志分析,从日志中分析出特定的数据,并将分析的结果存入外部存储器如数据库。目前,主流日志分析技术就使用JStormStorm管道系统, 将一个数据从一个系统传输到另外一个系统, 比如将数据库同步到Hadoop消息转化器, 将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件统计分析器, 从日志或消息中,提炼出某个字段,然后做count或sum计算,最后将统计值存入外部存储器。中间处理过程可能更复杂。    中文教程地址:https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation 标签:阿里巴巴  分布式  hadoop
⼤数据⼯程师学习计划 申明:本⽂旨在为普通程序员(Java程序员最佳)提供⼀个⼊门级别的⼤数据技术学习路径,不适⽤于⼤数据⼯程师的进阶学习,也不适⽤ 于零编程基础的同学。 前⾔ ⼀、背景介绍 本⼈⽬前是⼀名⼤数据⼯程师,项⽬数据50T,⽇均数据增长20G左右,个⼈是从Java后端开发,经过3个⽉的业余⾃学成功转型⼤数据⼯ 程师。 ⼆、⼤数据介绍 ⼤数据本质也是数据,但是⼜有了新的特征,包括数据来源⼴、数据格式多样化(结构化数据、⾮结构化数据、Excel⽂件、⽂本⽂件 等)、数据量⼤(最少也是TB级别的、甚⾄可能是PB级别)、数据增长速度快等。 如果你对⼤数据开发感兴趣,想系统学习⼤数据的话,可以加⼊⼤数据技术学习交流扣群:数字4583+数字45782,私信管理员即可免费 领取开发⼯具以及⼊门学习资料 针对以上主要的4个特征我们需要考虑以下问题: 数据来源⼴,该如何采集汇总?对应出现了Sqoop,Cammel,Datax等⼯具。 数据采集之后,该如何存储?对应出现了GFS,HDFS,TFS等分布式⽂件存储系统。 由于数据增长速度快,数据存储就必须可以⽔平扩展。 数据存储之后,该如何通过运算快速转化成⼀致的格式,该如何快速运算出⾃⼰想要的结果? 对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java代码量很⼤,所以出现了Hive,Pig等将SQL转 化成MapReduce的解析引擎; 普通的MapReduce处理数据只能⼀批⼀批地处理,时间延迟太长,为了实现每输⼊⼀条数据就能得到结果,于是出现了Storm/JStorm这 样的低时延的流式计算框架; 但是如果同时需要批处理和流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于 管理,所以出现了Spark这样的⼀站式的计算框架,既可以进⾏批处理,⼜可以进⾏流处理(实质上是微批处理)。 ⽽后Lambda架构,Kappa架构的出现,⼜提供了⼀种业务处理的通⽤架构。 为了提⾼⼯作效率,加快运速度,出现了⼀些辅助⼯具: Ozzie,azkaban:定时任务调度的⼯具。 Hue,Zepplin:图形化任务执⾏管理,结果查看⼯具。 Scala语⾔:编写Spark程序的最佳语⾔,当然也可以选择⽤Python。 Python语⾔:编写⼀些脚本时会⽤到。 Allluxio,Kylin等:通过对存储的数据进⾏预处理,加快运算速度的⼯具。 以上⼤致就把整个⼤数据⽣态⾥⾯⽤到的⼯具所解决的问题列举了⼀遍,知道了他们为什么⽽出现或者说出现是为了解决什么问题,进⾏学 习的时候就有的放⽮了。 正⽂ ⼀、⼤数据相关⼯作介绍 ⼤数据⽅向的⼯作⽬前主要分为三个主要⽅向: ⼤数据⼯程师 数据分析师 ⼤数据科学家 其他(数据挖掘等) ⼆、⼤数据⼯程师的技能要求 附上⼤数据⼯程师技能图: 必须掌握的技能11条 Java⾼级(虚拟机、并发) Linux 基本操作 Hadoop(HDFS+MapReduce+Yarn ) HBase(JavaAPI操作+Phoenix ) Hive(Hql基本操作和原理理解) Kafka Storm/JStorm Scala Python Spark (Core+sparksql+Spark streaming ) 辅助⼩⼯具(Sqoop/Flume/Oozie/Hue等) ⾼阶技能6条 机器学习算法以及mahout库加MLlib R语⾔ Lambda 架构 Kappa架构 Kylin Alluxio 三、学习路径 假设每天可以抽出3个⼩时的有效学习时间,加上周末每天保证10个⼩时的有效学习时间; 3个⽉会有(213+4210)3=423⼩时的学习时间。 第⼀阶段(基础阶段) 1)Linux学习(跟鸟哥学就ok了)-----20⼩时 Linux操作系统介绍与安装。 Linux常⽤命令。 Linux常⽤软件安装。 Linux⽹络。 防⽕墙。 Shell编程等。 2)Java ⾼级学习(《深⼊理解Java虚拟机》、《Java并发实战》)---30⼩时 掌握多线程。 掌握并发包下的队列。 了解JMS。 掌握JVM技术。 掌握反射和动态代理。 3)Zookeeper学习 Zookeeper分布式协调服务介绍。 Zookeeper集群的安装部署。 Zookeeper数据结构、命令。 Zookeeper的原理以及选举机制。 第⼆阶段(攻坚阶段) 4)Hadoop (《Hadoop 权威指南》)---80⼩时 HDFS HDFS的概念和特性。 HDFS的shell操作。 HDFS的⼯作机制。 HDFS的Java应⽤开发。 MapReduce 运⾏WordCount⽰例程序。 了解MapReduce内部
Storm是一个分布式实时计算系统,它可以在一个集群中运行多个计算节点,实时处理数据流。下面是Storm集群的工作流程以及运行时的原理: 1. 架构概述 Storm的集群架构包括以下几个主要的组件: - Nimbus:是Storm集群的主节点,负责协调和管理整个集群的运行。它负责分配任务、监控任务的执行情况、调度和负载均衡等工作。 - Supervisor:是Storm集群的工作节点,负责实际执行计算任务。每个Supervisor节点都会运行一个或多个工作进程(Worker),每个Worker执行一个或多个计算任务(Topology)。 - ZooKeeper:是一个分布式协调系统,用于协调Storm集群中各个组件之间的通信和协作。 - Topology:是Storm集群中的一个计算任务,由多个Spout和Bolt组成,用于实时处理数据流。Topology可以在Storm集群中部署和运行,由Nimbus节点分配到各个Supervisor节点上执行。 2. 工作流程 Storm集群的工作流程如下: - 开发Topology:首先需要开发一个Topology,包括定义Spout和Bolt的计算逻辑、数据流的处理方式等。 - 提交Topology:将Topology提交到Nimbus节点,由Nimbus节点负责分配任务到各个Supervisor节点上执行。 - 分配任务:Nimbus节点根据集群资源情况和负载均衡策略,将Topology的各个组件分配到不同的Supervisor节点上执行。 - 执行任务:Supervisor节点接收到任务后,启动对应的Worker进程,执行Topology的计算任务。 - 数据处理:Spout和Bolt组件接收输入数据,并按照定义好的处理方式进行数据转换、过滤、聚合等操作。 - 数据传输:Spout和Bolt之间通过数据流进行数据传输。数据流是Storm的核心概念,它用于实时传输数据,可以在Spout和Bolt之间建立任意的连接关系。 - 拓扑调度:Nimbus节点会监控集群中各个组件的运行情况,根据需要进行拓扑调度,例如动态调整任务分配、调整数据流连接方式等。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理,确保数据处理的正确性和可靠性。 3. 运行时原理 Storm集群的运行时原理主要包括以下几个方面: - 数据流传输:Storm集群中的数据流是基于Tuple的,每个Tuple包含一个或多个字段,可以表示任意类型的数据。Spout和Bolt之间通过数据流传输Tuple,实现数据的实时处理和传输。 - 执行模型:Storm采用的是多线程模型,每个Worker进程会启动多个线程,用于处理数据流和计算任务。Spout和Bolt之间采用异步方式传递数据,可以充分利用多线程处理数据。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理。例如,当一个节点出现故障时,Nimbus节点会将该节点上的任务重新分配到其他节点上执行,确保数据处理的正确性和可靠性。 - 负载均衡:Storm集群采用的是负载均衡策略,可以根据集群资源情况和任务负载情况,动态调整任务分配和数据流传输,实现集群资源的充分利用和任务的高效执行。 总的来说,Storm集群的架构和工作流程比较复杂,但是它提供了一种高效、可靠、实时的数据处理方案,可以应用于各种实时数据分析和处理场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值