首页 > 其他分享 >storm分布式实时计算一

storm分布式实时计算一

时间:2024-05-21 11:53:06浏览次数:9  
标签:tuple spout 实时 bolt storm 数据流 new collector 分布式

核心概念

topology拓扑组成

storm分布式计算结构称为topology拓扑,由stream(数据流)、spout(数据流生成者)、bolt(运算)组成。

tuple

storm的核心数据结构是tuple,tuple中包含了一个或者多个键值对的列表。

Stream由无限制的tuple组成的序列。

spout

spout代表数据入口,充当采集器的角色,链接到数据源,将数据转化为一个个tuple,并将tuple作为数据流进行发射。

spout通常不会实现业务逻辑,所以spout可以作为多个topology的入口。

bolt

bolt可以理解为计算程序中的运算或者函数,将一个或者多个数据流作为输入,对数据实施运算后,选择性的输出一个或者多个数据流。

bolt可以订阅多个有spout或者其他bolt发射的数据流,这样可以简历一个数据流转换网络。

bolt作用:

  • 过滤tuple
  • 链接或者聚合操作
  • 计算
  • 数据库读写

使用

spout

继承BaseRichSpout抽象类

open:获取collector,collector用于发送数据

nextTuple:实际执行发送数据逻辑,collector.emit(new Values(xxxxxx))

declareOutputFields:定义发送出的字段名称,下游根据字段名称获取数据,例如outputFieldsDeclarer.declare(new Fields("sentence"))

bolt

继承BaseRichBolt

prepare:获取collector,collector用于获取数据(collector.getStringByField("sentence"))、发送数据collector.emit(new Values(xxxx))

execute:实际执行运算逻辑或者继续发送tuple到下游,例如collector.emit(new Values(xxxxxx))

declareOutputFields:定义发送到下游bolt的字段名称,下游根据字段名称获取数据,例如outputFieldsDeclarer.declare(new Fields("word"))

cleanup:storm终止一个bolt时会调用cleanup方法,cleanup不保证一定会调用到,如果集群出现问题可能存在未调用cleanup的情况。

topology编排

TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("spoutTest", new SentenceSpout(), 1);
topologyBuilder.setBolt("boltTest", new WordBolt()).shuffleGrouping("spoutTest", "sentence");

Config config = new Config();

LocalCluster cluster = new LocalCluster();
cluster.submitTopology("topologyTest", config, topologyBuilder.createTopology());
cluster.killTopology("topologyTest");
cluster.shutdown();

标签:tuple,spout,实时,bolt,storm,数据流,new,collector,分布式
From: https://www.cnblogs.com/use-D/p/18203594

相关文章

  • jmeter分布式压测(Linux版本)
    1、安装JDK并配置环境变量(此处不再赘述)2、将Jmeter上传到任意目录解压(此处不再赘述)3、配置环境变量vi/etc/profile将光标移动到最底部,插入下面的内容,exportJMETER_HOME=/home/apache-jmeter-5.1.1  #jmeter的安装目录exportCLASSPATH=$JMETER_HOME/lib/ext/ApacheJMet......
  • JavaWeb分布式事务处理
    哈喽,大家好,我是木头左!一、分布式事务的概念与特性在开始之前,首先需要理解什么是分布式事务以及其特性。将从最基础的定义和特性开始,逐步深入到其在实际应用中的表现和影响。1.1分布式事务的概念分布式事务是指跨越多个独立的计算机资源(如数据库、应用服务器等)的一组事务的......
  • 架构与思维:4大主流分布式算法介绍(图文并茂、算法拆解)
    0导读之前的文章中,我们介绍过分布式事务的基础知识,也了解了分布式场景下常见一致性问题和解决方案,对分布式锁和CAS模式有一定的了解,有兴趣的同学可以通过下面链接到作者的两篇相关文章。五种分布式事务解决方案(图文总结)高并发下的数据一致性保障(图文全面总结)1介绍本文聚......
  • 阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
    主要实现思路1、在clickhouse中创建MySQL引擎表。2、根据MySQL引擎表的信息创建目标表。3、实现canal实时增量同步MySQL数据到clickhouse。MySQL的准备修改配置文件开启Binlog[root@hadoop100module]$sudovim/etc/my.cnfserver-id=1log-bin=mysql-binbinlog_form......
  • Hadoop集群模式的搭建之三:搭建Hadoop完全分布式集群
    Hadoop可以按如下3种模式进行安装和运行。(1)单机模式:Hadoop的默认模式,安装时不需要修改配置文件(2)伪分布式模式:Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。(3)完全分布式模式:在多台计算机上安装JDK和Hadoop,组成相互连通的集群,需要修改相应的......
  • dremio 分布式存储docker配置简单说明
    对于dremio分布式存储的配置我们直接修改配置文件,当然基于环境变量参考配置dremio:platform:linux/x86_64image:dremio/dremio-oss:latestports:-9047:9047-31010:31010-32010:32010container_name:dr......
  • 分布式数据处理-《Spark编程基础》(Scala版)第二章简答题答案(自制)
    2Scala语言基础简答题T1简述Scala语言与Java语言的联系与区别。答:①联系:(1)Scala和Java均运行在JVM之上;(2)Scala和Java均有面向对象语言特点;②区别:(1)Scala是类Java的多范式编程;Java是命令式编程。T2简述Scala语言的基本特性。......
  • 分布式数据处理-《Spark编程基础》(Scala版)第四章简答题答案(自制)
    4Spark环境搭建和使用方法简答题T1请阐述Spark的四种部署模式。......
  • 分布式数据处理-《Spark编程基础》(Scala版)第三章简答题答案(自制)
    3Spark的设计与运行原理简答题T1Spark是基于内存计算的大数据计算平台,请阐述Spark的主要特点。......
  • 分布式数据处理-《Spark编程基础》(Scala版)第七章简答题答案(自制)
    7SparkStreaming简答题T1请阐述静态数据和流数据的区别?答:静态数据是可以看作是静止不动的,适合进行批量计算;流数据是指数据以大量、快速、时变的流形式持续到达的,适合进行实时计算。同时,流计算被处理后,只有部分进入数据库成为静态数据,其余部分则被丢弃。T2请阐述批量计算和......