博客
关于我
[整理] Storm 基础
阅读量:433 次
发布时间:2019-03-06

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

Storm技术解析:分布式实时计算引擎

什么是Storm?

Apache Storm 是一款开源的分布式实时计算系统,旨在处理大规模数据流中的复杂计算任务。Storm 的核心特点体现在三个关键属性上:

  • 分布式:Storm 的计算和存储分散在多台服务器上,通过集群方式完成任务。
  • 实时:系统能够在毫秒级或秒级响应数据,适合对实时性有严格要求的场景。
  • 计算:Storm 可以对流数据进行复杂的处理,如数据清洗、转换等。
  • Storm 的设计理念强调高效处理大规模数据流,常见应用包括实时数据分析、网络流量监控、金融交易系统等。

    我们使用Storm做了什么?

    在实际项目中,我们利用Storm构建了一套消息处理系统,主要用于解决以下问题:

  • 消息下发监控:跟踪消息的传输状态,包括是否成功下发、用户是否接收、消息是否被点击等。
  • 消息效果分析:统计消息的传递量、有效率以及用户互动数据。
  • 基于这些需求,我们设计并实现了一套埋点方案,通过在关键节点打日志的方式,记录消息在不同环节的状态和处理结果。

    背景与需求

    消息管理平台虽然功能简单,但其后端涉及多个系统,消息传输链路较长。一个消息可能需要经过7个系统处理,每个环节都可能导致消息丢失或失败。这种复杂性使得问题排查效率低下,尤其是面对突发问题时,及时响应变得尤为重要。

    我们需要实现两个核心功能:

  • 快速定位消息问题:能够查询用户当天所有消息的下发情况,明确是哪个系统导致消息未送达。
  • 实时下发数据分析:查看消息的整体下发情况,包括传递量、过滤量和用户点击数据。
  • 需求实现

    为了解决上述问题,我们设计了一个基于Storm的埋点方案。具体实现步骤如下:

  • 日志收集:利用logAgent将各系统的日志收集到Kafka中。
  • 日志清洗:Storm负责对收集的日志进行清洗处理,提取有用信息。
  • 数据输出:清洗后的数据输出至Redis(实时)或Hive(离线)。
  • Storm在日志清洗环节发挥了关键作用。通过对关键节点进行埋点,我们可以收集到消息在传输过程中的完整状态。例如:

    • 11:用户未绑定手机号。
    • 12:用户最近收到相同消息。
    • 13:用户屏蔽了消息...

    这些点位记录在关键位置,形成完整的消息传输轨迹,便于后续分析和排查。

    Storm架构

    Storm的工作流程如下:

  • 任务提交:通过StormSubmitter提交任务,上传至Nimbus节点。
  • Nimbus处理:Nimbus将任务交给Supervisor节点,负责任务分配和监控。
  • Worker进程:Supervisor创建Worker进程,每个Worker负责多个Task。
  • Task执行:Task作为Bolt或Spout的实例,处理数据流。
  • Storm的架构具有高度的并行处理能力,支持多种Grouping策略。例如:

    • shuffleGrouping:随机分组,提升数据分布性。
    • fieldsGrouping:按字段分组,确保同一数据流路处理一致性。

    最后

    Storm 是一个强大而灵活的分布式计算框架。通过合理配置和拓扑结构设计,可以实现复杂的数据处理任务。对于实时数据分析和消息处理,Storm 展现出显著优势。

    如果想深入了解Storm 的具体实现和使用方法,可以参考其官方文档或相关技术博客。

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

    你可能感兴趣的文章
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad如何自动对齐_notepad++怎么自动排版
    查看>>
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    Now trying to drop the old temporary tablespace, the session hangs.
    查看>>
    nowcoder—Beauty of Trees
    查看>>
    np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
    查看>>
    np.power的使用
    查看>>
    NPM 2FA双重认证的设置方法
    查看>>
    npm build报错Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘解决方法
    查看>>
    npm build报错Cannot find module ‘webpack‘解决方法
    查看>>
    npm ERR! ERESOLVE could not resolve报错
    查看>>