【Storm】UI介绍

匿名 (未验证) 提交于 2019-12-02 23:36:01
版权声明:藏经阁 | 玄苦 | 陈国林 https://blog.csdn.net/cgl1079743846/article/details/90636654

众所周知,storm 已经是业界主流的流时处理框架,Storm 被广泛应用于实时分析,在线机器学习,持续计算、分布式远程调用等领域。当前无论是内部还是外部论坛介绍原理的文档都比较多,但主要都是从运行机制和原理方面的介绍,在 UI 方面的介绍甚少,今天我试着向大家介绍一下 storm ui,一方面可以让大家了解一下 storm 的机制,另外也可以让大家更好的使用好 storm ui 协助大家自助解决使用过程中的问题。

一. 数据上报及展示流程

  1. 数据上报流程:worker/supervisor/nimbus 会定时上报统计信息到 zk
  2. 数据展现流程:ui 调用 nimbus 的服务从 zk 中取出数据进行分类聚合汇总,然后展示到前端

二. 数据类型

通常我们要真正理解一个事物,通常都会从来龙去脉进行解剖;理解 storm ui 也是,想理解 storm 有什么数据,那么先去理解 storm 有哪些动作就事半功倍了,以下是 storm 中 worker/supervisor/nimbus 的基本操作及对应的数据类型,左边为操作,右边为数据。

  1. spout:

    • emit:向下游提交 tuple,对应的统计数据为 emit/transfer,emit=emit 执行数量,transfer=emit 执行数量 * 下游 bolt 个数
    • ack:成功流转之后的操作,对应的统计数据为 ack/complete-lantency,ack=成功流转次数 complete-lantency=成功流转平均时间
    • fail:失败流转之后的操作 对应的统计数据为 fail,fail=失败流转次数
  2. bolt:

    • execute:接收到上游数据之后的执行操作 对应的统计数据为 execute/execute-lantency,execute=执行次数 execute-latency=平均执行时间
    • emit:与 spout.emit 相同
    • ack:bolt 完成 execute 主动发起的 ack 操作,对应的数据为 ack,ack=执行次数

通常数据的统计会对系统的性能造成一定的影响,那么 storm 中为了平衡这种影响,采取了抽样的方式进行上报数据; storm 中把此值默认为 0.05,即每执行 20 次则执行一次数据累加(value = 20),当然我们也可以修改抽样的配置值为 1,那么就是逐条上报了。

  1. supervisor

    • node add:增加 supervisor 节点,对应的会向 zk 注册一条 supervisorinfo 信息,包含:host all-slots used-slots uptime version resource
    • node del:删除 supervisor 节点,那么会从 zk 中删除一条 supervisorinfo 信息
    • worker startup:启动了一个 worker,那么 supervisorinfo 的 used-slots( 1) resource 会发生变化
    • worker shutwodn:关闭一个 worker,那么 supervisorinfo 的 used-slots(-1) resource 会发生变化
  2. nimbus

    • node add:增加一个 nimbus 节点,那么会向 zk 注册一条 nimbus-summary 信息,包含:host port isleader uptime version
    • node del:删除一个 nimbus 节点,那么会从 zk 中删除一条 nimbus-summary 信息
    • leader change:leader 发生变更,那么对应的 nimbus-summary 中的 isleader 发生变化

三. 页面展现结构

在上述的第二点中已经说明了基本操作及对应的数据类型,那么在页面中就可以很好的对应了,先从整体视图来看看我们 storm ui 有什么信息,此 storm ui 为我们数平自己开发维护的 jstorm,一方面用 tab 页把 topology summary/nimbus summary/supervisor summary/nimbus configuration 分类展示,另外加了很多快捷链接入口用于查看到关注的内容,以及把常用的 kill topology 操作移动到首页

  1. 首页-初始化

    • cluster summary: 展示集群的整体信息,包含版本、在线时间、启动时间、管理的 supervisor 个数、总的节点数、已用节点数、空闲节点数、在运行的 executor/task 数
    • topology summary: 展示所有正在运行的 topology 信息,包含名称、id、状态、在线时间、提交时间、占用的 worker 数、拥有的 executor 数、拥有的 task 数、快捷关闭按钮
  2. 首页-supervisor summary: 展示所有的 supervisor 节点,包含 id、主机名称、在线时间、启动时间、总的 worker 节点数、已经使用的 worker 节点数

  3. 首页-nimbus summary: 展示所有的 nimbus 节点,包含主机名称、端口号、是否 leader、版本号、在线时间、启动时间

  4. 首页-nimbus configuration: 把配置信息以列表展现出来

  5. topology 详情页

    • topology summary:与首页对应的 topology summary 对应。
    • topology actions:用于 topology 的一些操作:激活、注销、重分配、debug/stop debug、修改日志级别。
    • topology stats:按时间窗口展现统计数据:十分钟表示近十分钟的统计,3 小时表示近 3 小时的统计等。
    • spouts:spout 组件的统计数据,数据含义在第二点的数据类型已有说明。
    • bolts:bolt 组件的统计数据,数据含义在第二点的数据类型已有说明。
    • topology visualization:展示 topology 的拓扑结构图及数据传输情况。
    • topology configuration:展示 topology 的配置信息。
  6. component 详情页

    • component summary:展示 component 的 id、executor 个数、task 个数、debug 日志。
    • component actions:提供 component 的 debug/stop debug 操作。
    • spout/bolt stats:按时间窗口展示数据,数据含义在第二点的数据类型已有说明。
    • input stats:输入流数据,包含上游 component、stream、执行时间、执行次数、bolt 正常流转的处理时间、ack 数、失败数。
    • output stats:输出流数据,包含 stream、emit 个数、transfer 个数。
    • executors:executor 数据,包含 id,在线时间、所在主机及端口、emit 个数、transfer 个数、执行时间、执行个数、成功流转直接、ack 个数、失败个数。
    • profile and debugging:用于诊断 worker 的运行情况,执行 jstack/jmap 等操作对 jvm 进行检测输出到文件,供用户下载打开查看 jvm 的运行情况。
文章来源: https://blog.csdn.net/cgl1079743846/article/details/90636654
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!