• Storm 基础知识


    分布式的实时计算框架,storm对于实时计算的意义类似于hadoop对于批处理的意义。

    Storm的适用场景:
    1.流数据处理:storm可以用来处理流式数据,处理之后将结果写到某个存入中去。

    2.持续计算:连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标

    3.分布式RPC:由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。

    我们的搜索引擎本身也是一个分布式rpc系统。

    storm关注的是数据的一次写入多次处理,storm的job运行起来是持续不断的。

    Hadoop关注的是数据的一次写入,多次查询,使用。job执行完就结束了。

      hadoop storm
    组件角色 jobtracker
    tasktracker
    child
    Nimbus
    Supervisor
    Worker
    应用名称 Job Topology
    组件接口 Map/Reduce Spout/Bolt

    Storm的特点:

    • 编程模型简单
    • 可扩展
    • 高可靠性
    • 高容错性
    • 支持多种语言编程

    支持本地模式运行和远程模式。

    Storm集群架构:

    image

    Topology(拓扑)

    storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构,一个Topology是由Spouts和bolts组成的图。

    image

    Topology的定义是一个Thrift结构,幵且Nimbus就是一个Thrift服务, 你可以提交由
    任何询言创建的topology。

    Tuple

    可以认为是一个Map,但要求此数据类型是可以序列化的,这点和Hadoop的一样,其实分布式开发都需要注意这点。

    Field1:String Filed2:int field3:string Filed:customerobj

    一个没有边界的,源源不断的连续的Tuple序列就组成了Stream.

    Spout

    这是storm中消息的生产者,它会有一个NextTuple方法,一直产生Tuple形成流,它可以读成取文件生成Tuple,也可以从Kafka里面读取消息生成Tuple.

    通常会从外部数据源(消息队列,数据库)读取数据,封闭成Tuple,发送到Stream中。

    Bolt

    Topology中所有的处理都是由它完成,即所有的消息处理逻辑都封装在里面。可以完成:过滤,聚合,访问文件数据库等。

    它有一个Execute(Tuple Input)方法,处理spout或其他bolt传过来的数据,处理完并输出到下游。

    Stream Grouping

    定义了tuple如何被传送。从spout到bolt或bolt2bolt之间的传送方式。

    1.随机分组(shuffle grouping)随机分发tuple到bolt,保证每个任务获得相等数量的tuple.

    2.字段分组(Fields grouping)根据指定的字段分割数据流,并分组。例如,wordcount任务中,根据word进行分组计算。

    3.全部分组(All grouping):tuple被复制到bolt的所有任务。这种类型要慎用。

    4.全局分组(Global grouping):全部流都分配到bolt的同一个任务。分配给ID最小的那个Task.

    5.无分组(None Grouping)暂时等于随机分组

    6.直接分组(Direct grouping)由tuple生产者决定去哪里。

    7.本地或随机分组(Local or Shuffle grouping)如果目标bolt有一个某多个任务在同一个worker进程中,tuples会随机分发给这些任务,否则就随机分组。

    自定义分组,实现CustomStreamGrouping接口来定制自己需要的分组。

    运行中的topology主要三个组件组成:

    worker process(进程)Executors (线程)和tasks

    Worker:

    运行具体处理组件的进程。一个拓扑可能会在一个或多个worker里面执行,每一个worker是一个物理JVM并且执行整个拓扑的一部分,Storm会尽量均匀地将工作分配给所有的worker.

    Executor:每一个executor对应一个线程,一个executor是一个worker进程生成的一个线程。它可能运行着一个相同的组件的一个或多个Task.

    Task:每一个spout或bolt会被当作很多task在整个集群中运行。

    Looking for a job working at Home about MSBI
  • 相关阅读:
    日♂常
    日♂常
    生哥的hu测
    生哥的hu测
    118.编程实现添加环境变量
    4.泡妞与设计模式(五) 原型模式
    4.泡妞与设计模式(四)享元模式
    2.泡妞与设计模式(三) 外观模式
    1.泡妞与设计模式(二)合成模式
    0.泡妞与设计模式(一)工厂模式
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/4419060.html
Copyright © 2020-2023  润新知