博客
关于我
Storm Topology组件
阅读量:663 次
发布时间:2019-03-15

本文共 1089 字,大约阅读时间需要 3 分钟。

Storm集群中的任务通常被称为Topology(拓扑结构)。与Hadoop中的MapReduce任务类似,Topology中的Spout组件负责从外部数据源获取数据,并按一定格式将数据传递给Bolt进行后续处理。

Topology的基础组成

在Storm中,一个最简单的Topology由一个Spout和一个Bolt组成。Spout从数据源中读取数据,将数据以特定格式(Tuple)传递给Bolt。Bolt则处理这组数据,完成后 Marty circulation(数据循环)的处理。每次Spout发送的数据单元称为Tuple,这些Tuple通过数据流连续传输,组成连续的Stream。

一个Topology中的组件(Components)目前仅包含Spout和Bolt。一个Topology中必须同时存在Spout和Bolt,Spout和Bolt的数量可根据实际需求自由调整。即使最简单的Topology,也必须包含一个Spout和一个Bolt。

Stream的基础

Stream是连续数据传输的通道,其最小数据单元是Tuple。每条Stream由连续的Tuple组成。Storm是一个实时数据处理框架,独特之处在于,其处理流是增量式的。与批处理框架(如Hadoop)不同,Storm能够实时处理不断到达的新数据。

###拓扑结构的演进随着拓扑结构的复杂化,涉及的Spout和Bolt数量都会增加。例如:

  • 多个Bolt处理单个Spout输出的数据:一个Spout可以将数据发送到多个Bolt,处理数据时可以从不同维度进行分析。
  • 多级处理流(Chain):一个Bolt可以将数据传递给多个下级Bolt,逐步进行深入分析和处理。
  • 多个Spout和多个Bolt组成的复杂拓扑:这种情况适用于需要同时处理多个数据源或进行多级分析任务的情况。
  • ###拓扑结构中的DAG(有向无环图)在Storm中,拓扑结构是由有向无环图(DAG)表示的。数据流的方向必须遵循拓扑结构中的方向,避免形成环路。例如,Spout负责从外部读取数据,Bolt则负责数据的处理。如果出现环路,则会造成数据无法完成处理,造成死循环。

    ###实际应用示例在实际应用中,拓扑结构可以根据具体需求进行设计。例如:

    • 实时权重计算:一个医疗APP需要实时显示医生的响应权重,这可能需要多个Spout分别处理问诊量和排队数,然后通过Bolt进行计算和输出结果。

    这种设计方式允许 Strom_TRAFFIC能够高效处理实时数据,满足应用的性能需求。

    如果你有其他问题或需要进一步了解Storm拓扑结构的内容,可以随时告诉我!

    转载地址:http://ytlmz.baihongyu.com/

    你可能感兴趣的文章
    Python Selenium设计模式 —— POM
    查看>>
    Python Serial:如何使用 read 或 readline 函数一次读取多个字符
    查看>>
    Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
    查看>>
    Python setup.py:数据文件无法复制目录:不存在或不是常规文件
    查看>>
    Python setuptools sdist:仅安装版本化文件
    查看>>
    Python Shell下使用matplotlib
    查看>>
    Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
    查看>>
    python socket分包发送数据
    查看>>
    python socket模块_Python socket模块实现TCP服务端客户端
    查看>>
    Python SOCKS5代理客户端HTTPS
    查看>>
    Python Soc网络分析:通过使用函数迭代列表来计算机会网络
    查看>>
    Python SQL和NoSQL数据库操作实战
    查看>>
    python stdout flush_sys.stdout.flush()方法的用法
    查看>>
    python string 运算
    查看>>
    Python str与bytes之间的转换
    查看>>
    Python subprocess ffmpeg
    查看>>
    python subprocess Permission denied Errno 13
    查看>>
    Python subprocess.call - 将变量添加到 subprocess.call
    查看>>
    Python Subprocess.Popen 从一个线程
    查看>>
    Python subprocess.Popen 作为 Windows 上的不同用户
    查看>>