1  Storm 分布式计算结构称为 Topology (拓扑)
Topology 由 stream(数据流)。spout(数据流的生成者)。bolt(运算)组成。
1.1stream
Strom 核心数据结构是 tuple。 tuple/英译 元组,重数/
    1.2spout
    spout 代表了一个 Storm Topology 的数据入口,充当采集器角色。连接到数据源,
并 将 tuple 作为数据流进行发射。
    { “sentence”:“My dog is called  'cow cow' ”}
    spout 将会一直循环发送 tuple。 一般spout 会连接到动态数据源上。
    1.3 bolt
    可以理解为程序中的运算或函数,将一个或多个数据流作为输入,对数据事实运算后,选择输出一个或者多个数据流。bolt 可以订阅多个 spot 或者其他 bolt 发射的数据流,这样可以建立复杂的数据流转换网络。
    bolt 典型功能 过滤 tuple 连接和聚合操作。 计算。数据库读写。
    单词计数 topology 数据流。
    
    1.2.1 语句分割 bolt
    语句分割 bolt (SplitSentenceBolt)类将会订阅 sentence spout 发射的 tuple 流,每当受到一个 tuple,bolt 会获取“sentence”对应值域的语句,然后将语句分割为一个个的单词。 每个单词向后发射一个 tuple:
    1.2.2 单词计数 bolt
    单词计数 bolt (WordCountBolt)订阅 SplitSentenceBolt 类的输出,保存每个特定单词出现的次数。每当 bolt 接收到一个 tuple,会将对应单词的计数加一,并且向后发送该单词当前的计数。
    1.2.3 上报 bolt
    上报 bolt 订阅 WordCountBolt 类的输出, 像WordCountBolt 一样,维护一份所有单词对应的计数的表。当接受到一个 tuple 时,上报 bolt 会更新表中的计数数据,并且将值在终端打印。
    数据源:数据源继承 BaseRichSpout
    实现:实现继承 BaseRichBolt
    Topology:WordCountTopology
    
一个 Strom 程序编写
public class WordCountTopology {
private static final String SENTENCE_SPOUT_ID = "sentence-spout";
private static final String SPLIT_BOLT_ID = "split-bolt";
private static final String COUNT_BOLT_ID = "count-bolt";
private static final String REPORT_BOLT_ID = "report-bolt";
private static final String TOPOLOGY_NAME = "word-count-topology";
public static void main(String[] args) throws Exception {
// 1    首先编写 spout 和 bolt 
SentenceSpout spout = new SentenceSpout();
SplitSentenceBolt splitBolt = newSplitSentenceBolt();
WordCountBolt countBolt = new WordCountBolt();
ReportBolt reportBolt = new ReportBolt();
// 2   生成一个 TopologyBuilder 实例
TopologyBuilder builder = new TopologyBuilder();
/**注册一个 sentence spout 并复制给其唯一的 ID*/
        // 2 参数为单个。  三个参数可以分配 多个 task
builder.setSpout(SENTENCE_SPOUT_ID, spout);
/**
* TopologyBuilder 的 setBolt() 方法会注册一个 bolt, 并且返回 BoltDeclarer 的实例,可以定义 bolt 的数据源。
* 注册一个 SplitSentenceBolt,这个 bolt 订阅 SentenceSpout发射出来的数据流
*/
builder.setBolt(SPLIT_BOLT_ID, splitBolt).shuffleGrouping(SENTENCE_SPOUT_ID);
builder.setBolt(COUNT_BOLT_ID, countBolt).fieldsGrouping(SPLIT_BOLT_ID, newFields("word"));
builder.setBolt(REPORT_BOLT_ID, reportBolt).globalGrouping(COUNT_BOLT_ID);
/**
* 所有数据流都应经定义好,运行单词计数计算最后一步名编译并提交到集群上。
*
* 本地模式 。 模拟集群。  可以设置断电,暂停运行,观察变量,分析程序性能。当 topology 发布到分布式集群后。将很难做到。
* 当一个 Topology 提交时,Storm 会将默认配置 和 Config 实例中的配置合并后作为参数传递给 submitTopology()方法。
* 合并后的配置分发给各个 spout 的 bolt 的 open()、prepare()方法。
* waitForSeconds(10) 停10秒。
* cluster.killTopology(TOPOLOGY_NAME); 停止/卸载 该 topology,最后关闭本地模式集群。
* 执行完毕后 出 --final counts--
*/
Config config = new Config();
    // 以后会用到  config.setNumWorkers(2);// 分配 Topology 两个 worker
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(TOPOLOGY_NAME, config,builder.createTopology());
Utils.sleep(10000); 
cluster.killTopology(TOPOLOGY_NAME);
cluster.shutdown();

}

}

God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting.                                                             rocky_24

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/rocky24/p/bdcd7dc672c594eabf8b29548bb3e951.html

一 Storm 基础相关推荐

  1. 大数据技术之_17_Storm学习_Storm 概述+Storm 基础知识+Storm 集群搭建+Storm 常用 API+Storm 分组策略和并发度

    大数据技术之_17_Storm学习 一 Storm 概述 1.1 离线计算是什么? 1.2 流式计算是什么? 1.3 Storm 是什么? 1.4 Storm 与 Hadoop 的区别 1.5 Sto ...

  2. Storm基础(完整版)

    Apache Storm 流式计算框架 1.Storm 基础 1.1.Storm是什么 Hadoop在处理数据的时候,时效性不够,市场期望能够尽快得到处理后的数据. Storm是一个流式计算框架(类比 ...

  3. storm 入门教程——storm基础知识(W3Cschool)

    基础知识 Storm 是一个分布式的,可靠的,容错的数据流处理系统.它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务.Storm 集群的输入流由一个被称作 spout 的组件管理 ...

  4. 【Storm篇】--Storm基础概念

    一.前述 Storm是个实时的.分布式以及具备高容错的计算系统,Storm进程常驻内存 ,Storm数据不经过磁盘,在内存中处理. 二.相关概念 1.异步: 流式处理(异步) 客户端提交数据进行结算, ...

  5. 分布式实时计算—Storm—基础介绍

    目录 一.概念 二.编程模型(spout->tuple->bolt) 三.Topology 运行 四.Storm Streaming Grouping 一.概念 Storm 是一个免费并开 ...

  6. storm基础系列之二----zookeeper的作用

    在storm集群中,我们常常使用zookeeper作为协调者.那么具体发挥的是什么作用呢? 概括来说,zookeeper是nimbus和supervisor进行交互的中介.具体来说有二: 1.nimb ...

  7. storm基础系列之五---------接入数据收集系统flume

    1.基本结构介绍 flume是三层架构,agent,collector,storage.每一层都可水平扩展. 其中,agent就是数据采集方:collector是数据整合方:storage是各种数据落 ...

  8. 天池大赛, Storm

    http://antkillerfarm.github.io 简介 天池大数据竞赛是由阿里巴巴集团主办,面向全球科研工作者的高端算法竞赛.官网: https://tianchi.shuju.aliyu ...

  9. kfaka storm写入mysql_基于Storm+Kafka+Zookeeper锁+Memcached+mysql架构全方位系统Storm项目案例实战...

    基于Storm+Kafka+Zookeeper锁+Memcached+mysql架构全方位系统Storm项目案例实战 适应人群 有一定Storm基础.Kafka基础.Memcached基础.Zooke ...

最新文章

  1. python中匿名函数的作用_Python 中的匿名函数,你会用吗
  2. 微型计算机中使用的光盘应属于什么媒体,计算机应用基础练习题
  3. sqlserver垮库查询_SQLServer跨库查询--分布式查询
  4. Area of Circles II(数论)
  5. NodeJs将项目上传至服务器
  6. html5系列:notification api升级——从webkitNotifications到Notification
  7. 使用redis中的watch解决秒杀系统中抢购问题
  8. 价值过亿的架构师面试试题大全和答案、架构大全、代码大全
  9. TCP/UDP调试工具的使用
  10. 18650锂电池保护板接线图_锂电池保护板几种接线方法介绍
  11. 自然语言处理(NLP):命名实体识别-NER
  12. powershell免杀思路分析(过某60和某绒)
  13. psv变革怎么安装游戏_创造变革游戏
  14. cygwin中安装apt-cyg管理工具注意事项
  15. 符号配对(C语言利用栈堆)
  16. 操作系统实验四:C++实现独占设备的分配与回收算法模拟
  17. 一路两输入正与门SN74AHC1G08学习
  18. 大神自述|7岁接触建模的大神建模师,分享建模经验与技巧
  19. 【汽车总线技术】CAN和CAN FD总线故障诊断
  20. IPv6- TC实现IPv6流量限速测试详情

热门文章

  1. python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍
  2. python英语字典程序-Pyqt5实现英文学习词典
  3. 怎么用python做表格-零基础小白怎么用Python做表格?
  4. python四大软件-传智播客解析Python之移动端页面适配四大方式
  5. 0基础学python看什么书-编程语言学python必看这三本书,少走一半弯路
  6. python中的time库安装步骤-Python time库基本操作方法
  7. python代码壁纸-python设置windows桌面壁纸的实现代码
  8. python常用内置函数总结-python常用内置函数整理—反射
  9. python画散点图类型-绘制python中的线和散点图
  10. 学python有哪些书推荐-学python看什么书好?求推荐