Storm的基本知识

上篇文章本人简单的介绍了Storm的起源,今天本人又继续学习了Storm的基本的一些知识,基本了解了他的基本用法,还好,不算太难,如果大家了解了Hadoop的MapReduce模型的话,看这个也是非常类似的。在了解Storm的原型时,首先了解一些概念。

1.Tuple(元组),作为消息传递的基本单元,元组中的字段可以是任何类型的对象。元组会用于后面提到的Bolt方法的execute方法。

2.Spout(喷口),是拓扑的流的来源,就是产生源数据流的组件。喷口的数据来源可以有几种方式。(1).直接连接数据源 (2).从消息队列中读取消息 (3).通过DRPC的形式,简单的说,Spout相当于Hadoop中的Map。

3.Bolt(螺栓),在拓扑中处理所有的逻辑。在Bolt中可以完成连接运算,统计分析,等等各种逻辑操作。执行的方法就是刚刚说的那个execute()方法。

4.Topology(拓扑),是Storm中运行的一个实时应用程序,一个完整的Spout--Bolt就是在一个Topology中执行的。Storm中的拓扑相当于Hadoop中的作业job,在MapReduce的作业会最终完成,而一个拓扑会永远运行直到他被杀死。在java里,用的是TopologyBuilder来构建拓扑。

5.Nimbus进程与Supervisor进程。主控结点运行Nimbus的守护进程。负责分配节点任务,并监视主机故障,类似Hadoop的jobTracker。每个工作节点运行的是Supervisor守护进程,监听主机上的已经分配好的作业。

6.Worker(工作进程),Task(任务),Executor(执行器),三者的关系非常相近,用一张图表示直接明了。这3个关系的在一定程度上也控制着Storm拓扑的并行度。在一个节点中可以有1个或多个工作进程运行在1个或多个拓扑中。

,所以这也表明了在Storm可以并行执行任务。下面给出一个非常简单的拓扑的例子:

public class SimpleTopology {
    public static void main(String[] args) {
        try {
            // 实例化TopologyBuilder类。
            TopologyBuilder topologyBuilder = new TopologyBuilder();
            // 设置喷发节点并分配并发数,该并发数将会控制该对象在集群中的线程数。
            topologyBuilder.setSpout("SimpleSpout", new SimpleSpout(), 1);
            // 设置数据处理节点并分配并发数。指定该节点接收喷发节点的策略为随机方式。
            topologyBuilder.setBolt("SimpleBolt", new SimpleBolt(), 3).shuffleGrouping("SimpleSpout");
            Config config = new Config();
            config.setDebug(true);
            if (args != null && args.length > 0) {
                config.setNumWorkers(1);
                StormSubmitter.submitTopology(args[0], config, topologyBuilder.createTopology());
            } else {
                // 这里是本地模式下运行的启动代码。
                config.setMaxTaskParallelism(1);
                LocalCluster cluster = new LocalCluster();
                cluster.submitTopology("simple", config, topologyBuilder.createTopology());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上面的例子给出了本地测试模式和正式开发模式的的拓扑提交例子。为了比较Hadoop和Storm的区别。我做了表格:

对比项                        Hadoop                       Storm

系统角色                    JobTracker                  Nimbus

TaskTracker                Supervisor

应用名称                     Job                              Topology

组件接口                     Map/Reduce              Spout/Bolt

以上就是个人在最近一段时间学习Storm的一点小小总结

时间: 2024-10-31 09:24:32

Storm的基本知识的相关文章

Storm官方文档翻译之在生产环境集群中运行Topology

在进群生产环境下运行Topology和在本地模式下运行非常相似.下面是步骤: 1.定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建) 2.使用StormSubmitter向集群提交Topology.StormSubmitter有三个参数,Topology的名字,Topology的配置,和Topology本身.下面是例子: ? 1 2 3 4 Config conf = new Config(); conf.setNumWorkers(20); conf.

Storm高级属性

之前写了2篇文章讲述了Storm的基本知识.最近也学习了Storm的高级属性了,单纯粹还是属于了解的状态.我就简单介绍几个比较简单的属性. 1.DRPC.简称分布式RPC,模型图: 用户直接面对的是DRPC Server,避开了所有的拓扑逻辑,Storm提供了一个名为LinearDRPCTopologyBuilder的线性拓扑构建器,他把DRPC所做的几乎所有步骤都自动实现了.本地模式的代码例子如下: LocalDRPC drpc = new LocalDRPC(); LocalCluster

SpringBoot整合Kafka和Storm

前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接跳过!如果不熟,也可以看看我之前写的博客.一些相关博客如下. kafka 和 storm的环境安装 地址:http://www.panchengming.com/2018/01/26/pancm70/ kafka的相关使用 地址:http://www.panchengming.com/2018/01

Storm初步

初入Storm 前言 学习Storm已经有两周左右的时间,但是认真来说学习过程确实是零零散散,遇到问题去百度一下,找到新概念再次学习,在这样的一个循环又不成体系的过程中不断学习Storm. 前人栽树,后人乘凉,也正是因为网上有这样多热心的人,分享自己的见解,才能够让开发变得更简单.也正是基于这个目的,同时公司恰好是做大数据的,预计还有相当长的时间需要深入Storm,决定写一下Storm系列相关知识. 正文 在大数据处理中,目前来看,有这样三种主要的数据处理方式,以hadoop为主的大数据批处理框

Storm 基础知识

分布式的实时计算框架,storm对于实时计算的意义类似于hadoop对于批处理的意义. Storm的适用场景: 1.流数据处理:storm可以用来处理流式数据,处理之后将结果写到某个存入中去. 2.持续计算:连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标 3.分布式RPC:由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用. 我们的搜索引擎本身也是一个分布式rpc系统. storm关注的是数据的一次写入多次处理,storm的job运

Storm基本知识总结

Storm是一个开源的分布式实时计算系统,可以简单.可靠的处理大量的数据流.Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用. storm:实时计算系统 低延迟,高性能,分布式,可扩展,容错 特点:简单编程模型,热部署,各种编程语言,可扩展,容错,可靠消息处理,快速,本地模式 storm基本概念: Nimbus:负责资源分配和任务调度 Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程 Worker:运行具体处理组件逻辑的

Hadoop2.0/YARN深入浅出(Hadoop2.0、Spark、Storm和Tez)

随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了 8K 以上,工作1年可达到 1.2W 以上,具有2-3年工作经验的hadoop人才年薪可以达到 30万—50万 . 一般需要大数据处理的公司基本上都是大公司,所以学习had

storm:最火的流式处理框架

本文出处:www.cnblogs.com/langtianya/p/5199529.html 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来.点击.购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了.再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是

升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)

      Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序