大数据学习之路 --- Storm(分布式实时计算系统)

Storm是一个开源的分布式实时计算系统,可以简单,可靠地处理大量的数据流。

                                                                                                                                         ----<<Storm实战构建大数据实时计算>>

(以下内容主要来自书本<Storm实战构建大数据实时计算>)

名词解释:

  • 什么是Tuple:

Tuple(元组),是消息传递的基本单元。Storm中使用Tuple作为其数据模型。

  • 什么是Stream:

Stream(流),是storm中的一个抽象概念,是一个无界的Tuple序列,源源不断传递的Tuple组成了Stream。

 

首先是Storm的几个比较大的特点:

1.编程模型简单:

Storm为大数据的实时计算提供了一些简单的原语,降低了开发并发并行实时处理任务的复杂性。

2.可扩展性:

在Storm集群中真正运行Topology的主要有三个实体:工作进程,线程,和任务。Storm集群中的每台机器上都可以运行多个工作进程,每个工作进程又可创建多个线程,每个线程可以执行多个任务,任务是真正进行数据处理的实体,Spout,Bolt被开发出来就是作为有一个或者多个任务的方式执行的。因此,计算任务在多个线程,进程和服务器之间并行进行,支持灵活的水平扩展。

3.高可靠性

4.高容错性

5.支持多种编程语言

6.支持本地模式

7.运维和部署简单

 

Storm与Hadoop的区别:

Hadoop是批处理框架,适合处理大量的离线数据,而Storm是流式处理框架,适合需要及时性的数据处理,可以做到随着数据的变化而不断对数据进行处理,并更新结果。Hadoop任务开启后,计算结束则进程结束。Storm任务开启后,除非手动结束,否者其进程会一直运行,实时的计算出最新的结果。

 

Storm的组成:

Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Worker Node)

  • 主控节点上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并负责监控集群的运行状态。Nimbus的作用类似于Hadoop中JobTracker的角色。
  • 每个工作节点上运行一个被称为Supervisor的后台程序。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集,一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。

Nimbus和Supervisor节点之间的所有协调工作是通过Zookeeper集群实现的。

 

工作节点:

工作节点上有两种

 

Executor的数量计算:

每个组件的Executor的数量加上Work的数量

  TopologyBuilder topologyBuilder=new TopologyBuilder();
        topologyBuilder.setSpout("spout", new Spout(),2).setNumTasks(4);
        topologyBuilder.setBolt("fistbolt", new FistBolt(),1).shuffleGrouping("spout").setNumTasks(1);
        topologyBuilder.setBolt("twobolt", new TwoBolt(),1).shuffleGrouping("fistbolt").setNumTasks(1);

        Config config=new Config();
        config.setNumWorkers(2);

如上图所示,Executor的数量即为2+1+1+2=6个。

Work:工作进程,运行在一个个Supervisor的对应端口上

Executor:线程数

Tasks:任务数

一个工作进程可以运行多个线程,一个线程可以运行多个任务

如上图的spout的分布,如果是平均的,就可以看成是,每一个进程中运行一个线程,一个线程中运行2个任务

 

 

 

Storm的窗口机制:

Tumbling Window:

按固定的时间间隔或者Tuple数量划分窗口,每个窗口没有交互,每个窗口处理的数据是没有交叉的。

假如5秒一个窗口,如下图:

| e1 e2 | e3 e4 e5 e6 | e7 e8 e9 |...
0       5             10         15    -> time
   w1         w2            w3

Sliding Window:

滑动窗口,数据有重叠。

假如:10s(窗口大小)一个窗口,滑动5s(步长),如下图:

| e1 e2 | e3 e4 e5 e6 | e7 e8 e9 |...
0       5             10         15    -> time
|<------- w1 -------->|
        |------------ w2 ------->|

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值