storm代码阅读(一)

2021SC@SDUSC

storm代码阅读(一)

2021SC@SDUSC

Strom介绍

Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。它很简单,您可以并行地对实时数据执行各种操作。

Apache Storm继续成为实时数据分析的领导者。Storm易于设置和操作,并且它保证每个消息将通过拓扑至少处理一次。

在这里插入图片描述

准备工作

storm网址: link.

源码链接: link.

storm核心组件

topology 是storm中运行的一个实时应用程序的名称(拓扑),因为各个组件间的消息流动而形成逻辑上的拓扑结构。

stream 表示数据的流向,流式Storm的核心抽象。一个流是一个无界Tuple序列,Tuple可以包含整性、长整型、短整型、字节、字符、双精度数、浮点数、布尔值和字节数组。用户可以通过定义序列化器,在本机Tuple使用自定义类型;

spout 在一个topology中获取源数据流的组件;通常情况下spout会从外部数据源读取数据,然后转换为topology内部的源数据;

bolt 接收数据,然后执行处理的组件,用户可以其中执行自己想要的操作(Bolt可以完成过滤、业务处理、连接运算、连接访问数据库等业务);

stream grouping(流分组) 流分组是拓扑定义的一部分,为每个Bolt指定应该接收哪个流作为输入。在bolt的任务中定义流应该如何分区,Storm有7个内置的流分组接口(随机分组(Shuffle grouping)、字段分组(Fields grouping)、全部分组(All grouping)、全局分组(Global grouping)、无分组(None grouping)、直接分组(Direct grouping)、本地或随机分组(Local or shuffle grouping))

Worker(工作进程)是Spout/Bolt中运行具体处理逻辑的进程。Topology跨一个或多个Worker节点的进程执行,每个Worker节点的进程是一个物理的JVM和Topology执行所有任务的子集。

Task(任务) Worker中每一个Spout/Bolt的线程称为一个任务。每个spout或bolt在集群执行许多任务,每个任务对应一个线程的执行,流分组定义如何从一个任务集到另一个任务集发送Tuple。可通过TopologyBuilder类的setSoupt()和setBolt()方法来设置每个spout或bolt的并行度(parallelism)。

Executor(执行器)在Storm 0.8以后,Task不再与物理线程对应,同一个Spout/Bolt的Task可能会共享一个物理线程,该线程称为Executor(执行器)。

Storm集群中有两类节点:主控节点(Master Node)和工作节点(Worker Node)。其中,主控节点只有一个,而工作节点可以有多个。

主控节点运行的一个称为Nimbus的守护进程,负责在集群中分发代码,对节点分配任务,并监控主机故障。

每个工作节点运行一个称为Supervisor的守护进程,Supervisor监听其主机上已经分配的主机的作业,启动和停止Nimbus已经分配的工作进程。

核心代码确定

核心代码分布
核心代码位置

内容与分工

主要研读内容:Nimbus\Bolt\Zookeeper\Topology\Excutor\Supervisor\Woker\Task\Spout\Tuple\Stream groupings。

我负责其中的Topology与Task部分。其中Stream groupings将由小组成员共同完成阅读分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值