不多说,直接上干货! Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行的是拓扑 Topology,这两者之间是非常不同的.一个关键的区别是:一个MapReduce 作业最终会结束,而一个 Topology 拓扑会永远运行(除非手动杀掉).表 1-1 列出了 Hadoop 与 Storm 的不同之处. 如果只用一个短语来描述 Storm,可能会是这样:分布式实时计算系统…
不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:…
把stream当做一列火车, tuple当做车厢,spout当做始发站,bolt当做是中间站点!!! 见 Storm概念学习系列之Spout数据源 Storm概念学习系列之Topology拓扑 Storm概念学习系列之Blot消息处理者 Storm概念学习系列之Tuple元组…
不多说,直接上干货! Storm核心组件 了解 Storm 的核心组件对于理解 Storm 原理非常重要,下面介绍 Storm 的整体,然后介绍 Storm 的核心. Storm 集群由一个主节点和多个工作节点组成.主节点运行一个名为“Nimbus”的守护进程,工作节点都运行一个名为“Supervisor”的守护进程,两者的协调工作由 ZooKeeper 来完成, ZooKeeper 用于管理集群中的不同组件. 每一个工作节点上运行的 Supervisor 监听分配给它那台机器的工作,根据需要启…
不多说,直接上干货! storm简介 Storm 是 Twitter 开源的.分布式的.容错的实时计算系统,遵循 Eclipse Public License1.0. Storm 通过简单的 API 使开发者可以可靠地处理无界持续的流数据,进行实时计算. Twitter Storm 是使用 Clojure(发音同 closure)语言实现的. Clojure 是 Lisp 语言的一种现代方言.类似于 Lisp, Clojure 支持一种功能性编程风格,但 Clojure 还引入了一些特性来简化多…
不多说,直接上干货! 至于为什么,有storm的定时任务.这个很简单.但是,这个在工作中非常重要! 假设有如下的业务场景 这个spoult源源不断地发送数据,boilt呢会进行处理.然后呢,处理后的结果,假设要写到mysql里面. 假设,spout有几十万条,这么过来.写入到bolt,意味着,它一秒钟要调用mysql几十万此.即操作频率太快,这样导致会出现问题.   所以,很有必要进行storm的定时任务!!! storm的定时任务,它可以每隔指定的时间将数据整合一次存入数据库. 见博客 Sto…
这个概念,对于理解storm很有必要. 1.worker进程死掉 worker是真实存在的.可以jps查看. 正是因为有了storm的可靠性,所以storm会重新启动一个新的worker进程. 2.supervisor进程死掉 不会影响之前已经提交的topology的执行,只是后期不能再想这个节点分配任务罢了. 3.nimbus进程死掉 不会影响之前已经提交的topology的执行,只是后期不能再想这个节点分配任务罢了. 4.节点宕机 5.ack/fail消息确认机制 见博客 Storm编程入门…
不多说,直接上干货! storm的特性 Storm 是一个开源的分布式实时计算系统,可以简单.可靠地处理大量的数据流. Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个节点每秒可以处理数以百万计的消息). Storm 的部署和运维都很便捷,而且更为重要的是,可以使用任意编程语言来开发应用. 下面介绍 Storm 的特点(1)编程模型简单 在大数据处理方面, Hadoop 为开发者提供了 MapReduce 原语,使并行批处理程序变得非常简单和…
不多说,直接上干货! storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extraction-Transformation-Loading 的缩写,即数据抽取.转换和加载)等. 下面介绍 Storm 的三大主要应用 (1)流处理( stream processing) Storm 可用来实时处理新数据和更新数据库,兼具容错性和可扩展性,即 Storm 可以用来处理源源不断流进来的消息…
不多说,直接上干货! storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组).Storm 认为每个流都有一个 Stream 源,也就是原始元组的源头,所以它将这个源头抽象为 Spout, Spout 可能连接 Twitter API 并不断发出推文( Tweet),也可能从某个队列中不断读取队列元素并装配为 Tuple 发射. 有了源头即 Spout 也就是有了流,同样的…
  不多说,直接上干货! storm出现的背景 互联网从诞生的第一时间起,对世界的最大改变就是让信息能够实时交互,从而大大加速了各个环节的效率.正因为大家有对信息实时响应.实时交互的需求,所以软件行业除了个人操作系统之外,数据库(更精确的说是关系型数据库)应该是发展最快.收益最为丰厚的产品了.记得十年前,很多银行别说实时转账,连实时查询都做不到,但是数据库和高速网络改变了这个情况. 随着互联网的更进一步发展,从 Portal 信息浏览型到 Search 信息搜索型到 SNS 关系交互传递型,以及…
不多说,直接上干货!…
不多说,直接上干货! 以下都是非常重要的storm概念知识. (Tuple元组数据载体 .Spout数据源.Blot消息处理者.Stream消息流 和 Stream Grouping 消息流组.Worker工作者进程.Task是最终运行spout或bolt中代码的执行单元.executor是worker进程启动的一个单独线程) 见博客 Storm概念学习系列之storm核心组件 Storm概念学习系列之Task任务 Storm概念学习系列之Tuple元组 Storm概念学习系列之Blot消息处理…
不多说,直接上干货! Worker.Task.Executor三者之间的关系 Storm集群中的一个物理节点启动一个或者多个Worker进程,集群的Topology都是通过这些Worker进程运行的. 然而,Worker进程中又会运行一个或者多个Executor线程,每个Executor线程只运行一个Topology的一个组件(Spout或Bolt)的Task任务,Task又是数据处理的实体单元. Worker是进程,Executor对应于线程,Spout或Bolt是一个个的Task: 同一个W…
Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行的是拓扑 Topology,这两者之间是非常不同的.一个关键的区别是:一个MapReduce 作业最终会结束,而一个 Topology 拓扑会永远运行(除非手动杀掉).表 1-1 列出了 Hadoop 与 Storm 的不同之处. 如果只用一个短语来描述 Storm,可能会是这样:分布式实时计算系统.按照 Storm 作…
不多说,直接上干货! Stream消息流是Storm中最关键的抽象,是一个没有边界的Tuple序列. Stream Grouping 消息流组是用来定义一个流如何分配到Tuple到Bolt. Stream消息流和Stream Grouping消息流组 Storm核心的抽象概念是“流”.流是一个分布式并行创建和处理的无界的连续元组(Tuple).流通过给流元组中字段命名来定义.在默认情况下,元组可以包含整型.长整型.短整型.字节.字符串.双精度浮点数.单精度浮点数.布尔型和字节数组. Stream…
不多说,直接上干货! 对于storm来说,并行度的概念非常重要!大家一定要好好理解和消化. storm的并行度,可以简单的理解为多线程. 如何提高storm的并行度? storm程序主要由spout和bolt组成的.spout和bolt在运行期间会生成task实例(new Spout或者new bolt). 那这些task实例是需要在线程(executor)里面运行的,而线程是需要在进程(worker)里面执行的. 这些,都是可以在代码中控制的到. 1.所以想要提高storm的处理能力,最直接的…
不多说,直接上干货! 这是书籍<从零开始学Storm>赵必厦 2014年出版的配套代码! storm-starter项目包含使用storm的各种各样的例子.项目托管在GitHub上面,其网址为: http://github.com/nathanmarz/storm-starter 或者   storm-starter项目的包结构: storm-starter项目的拓扑结构: 新建maven项目的方式 以“新建Maven项目的方式”导入storm-starter项目的步骤如下: 1.新建一个Ma…
不多说,直接上干货!   Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行的是拓扑 Topology,这两者之间是非常不同的.一个关键的区别是:一个MapReduce 作业最终会结束,而一个 Topology 拓扑会永远运行(除非手动杀掉). Topology拓扑 从字面上解释Topology,就是网络拓扑,是指用传输介质互连各种设备的物理布局,是构成网络的成员间特定的物理的(即真实的),或者逻辑的,即虚拟的排列方式.拓扑是一种不考虑物体的大小.形状等物理属性,而只使…
不多说,直接上干货! 什么是实时流计算?    1.实时流计算背景 2.实时计算应用场景 3.实时计算处理流程 4.实时计算框架 什么是实时流计算? 所谓实时流计算,就是近几年由于数据得到广泛应用之后,在数据持久性建模不满足现状的情况下,急需数据流的瞬时建模或者计算处理.这种实时计算的应用实例有金融服务.网络监控.电信数据管理. Web 应用.生产制造.传感检测,等等.在这种数据流模型中,单独的数据单元可能是相关的元组(Tuple),如网络测量.呼叫记录.网页访问等产生的数据.但是,这些数据以大…
不多说,直接上干货! 数据流模型 数据流模型是由数据流.数据处理任务.数据节点.数据处理任务实例等构成的一种数据模型.本节将介绍的数据流模型如图1所示. 分布式流处理系统由多个数据处理节点(node)组成,每个数据处理节点上运行有多个数据任务实例,每个数据任务实例属于一个数据任务定义.任务实例是在任务定义的基础上,添加了输入流过滤条件和强制输出周期属性后,可实际推送到数据处理节点上运行的逻辑实体:数据任务定义包含输入数据流.数据处理逻辑和输出数据流属性. 数据流模型简介 首先介绍数据流模型中的一…
不多说,直接上干货! 事务 这里的事务是专门针对Topology提出来的,是为了解决元组在处理失败重新发送后的一系列问题的.简而言之,事务拓扑(transactional topology)就是指Storm以并行和顺序处理混合的方式处理元组,一方面是处理消息,将消息分为一批批,并行处理同一批内的消息以及批与批之间的消息:另一方面是提交消息,按严格的顺序提交,总之实现对消息精确的处理. (1)事务拓扑的特点 事务性拓扑这一特性使消息在语义上确保能够以安全的方式重发消息,并保证它们只被处理一次.在不…
不多说,直接上干货! Worker工作者进程   工作者进程(Worker)是一个java进程,执行拓扑的一部分任务.一个Worker进程执行一个Topology的子集,它会启动一个或多个Executor线程来执行一个Topology的组件(Spout或Bolt).因此,拓扑在执行时,可能跨一个或多个Worker.Storm会尽量均匀分配任务给所有的Worker. 注意:不会出现一个Worker为多个Topology服务的情况.…
不多说,直接上干货! 每一个Spout/Bolt的线程称为一个Task. Task任务 Task是运行Spout或Bolt的单元,每一个Spout/Bolt的线程称为一个Task. 在Storm 0.8及之后的版本中,Task不再与物理线程对应,同一个Spout/Bolt的Task可能会共享一个物理线程,该线程称为Executor. 实际的数据处理由Task完成,在Topology的生命周期中,每个组件的Task数量不会变化,而Executor的数量却不一定.在一般情况下,线程数小于等于Task…
不多说,直接上干货! Bolt消息处理者 认识了消息源Spout和消息的数据存储元组Tuple,接下来了解消息的处理者Bolt.Bolt是接收Spout发出元组Tuple后处理数据的组件,所有的消息处理逻辑被封装在Bolt中,Bolt负责处理输入的数据流并产生输出的新数据流.   1. Bolt介绍 消息处理者Bolt在Storm中是一个被动的角色.Bolt把元组作为输入,然后产生新的元组作为输出. 1.1 Bolt的功能 Bolt可以执行过滤.函数操作.合并.写数据库等操作.Bolt还可以简单…
不多说,直接上干货! Spout 数据源 消息源Spout是Storm的Topology中的消息生产者(即Tuple的创造者). Spout 介绍 1. Spout 的结构 Spout 是 Storm 的核心组件之一,最源头的接口是 IComponent,如图 1所示,几个Spout接口都继承自IComponent. 图 1    Spout 类图 2. Spout 发出的消息 Spout从外部获取数据后,向Topology中发出的Tuple可以是可靠的,也可以是不可靠的. 注意:一个可靠的消息…
不多说,直接上干货! Tuple元组 Tuple 是 Storm 的主要数据结构,并且是 Storm 中使用的最基本单元.数据模型和元组. Tuple 描述 Tuple 就是一个值列表, Tuple 中的值可以是任何类型的,动态类型的Tuple的fields可以不用声明:默认情况下,Storm中的Tuple支持私有类型.字符串.字节数组等作为它的字段值,如果使用其他类型,就需要序列化该类型. Tuple的字段默认类型有 :  integer. float. double. long.short.…
前言: 学了几天storm的基础,发现如果有hadoop基础,再理解起概念来,容易的多.不过,涉及到一些独有的东西,如调度,如并发度,还是很麻烦.那么,从这一篇开始,力争清晰的梳理这些知识. 在正式学习并发之前,有必要先明确几个基本概念的定义,以及具体作用. 一.基础概念 1.1 Topology 原意拓扑.可以把他理解为是hadoop中的job,他是把一系列的任务项组装后的一个结果. 1.2 Spout 是任务的一种,作用是读取数据,然后组装成一定的格式,发射出去. 1.3 Bolt 是另一种…
能看懂博主我此博文,相信你已经有了一定基础了. 对于本地模式.伪分布模式和全分布模式的概念,这里,我不多赘述.太多资料和博客,随便在网上一搜就好. 比如<hadoop实战 第二版>陆嘉恒老师等. 我这里呢,是再次挖掘深入. 我们知道,如伪分布模式或全分布式模式,里有着很多的java进程(这个,可用jps查看).有过动手试验的都知道, 这两种模式,速度明显比本地模式要快,为什么呢? 答:原因在于,本地独立模式将每个单独任务执行的信息都打印在屏幕上,而在伪分布模式和全分布式模式下,这些信息只被写入…
概念,见博客 Storm概念学习系列之storm的定时任务 Storm的定时任务,分为两种实现方式,都是可以达到目的的. 我这里,分为StormTopologyTimer1.java   和  StormTopologyTimer2.java 编写代码StormTopologyTimer1.java 我这里,用的是shuffleGrouping方式.若大家不懂的话,见我下面的博客 Storm编程入门API系列之Storm的Topology的stream grouping //设置定时任务 con…