`
sungyang
  • 浏览: 20092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Storm架构

阅读更多

storm是我接触并在项目中用到的第一个实时计算框架,做下总结:

一、首先如果如果让我们自己设 计一个实时计算系统,我们要解决哪些问题?

1、低延迟。都说了是实时计算系统了,延迟是一定要低的。

2、高性能。性能不高就是浪费机器。

3、分布式。系统都是为应用场景而生的,如果你的应用场景、你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。

4、可扩展。伴随着业务的发展,我们的数据量、计算量可能会越来越大,所以希望这个系统是可扩展的。

5、 容错。这是分布式系统中通用问题。一个节点挂了不能影响我的应用。

 

二、如果仅仅需要解决这5个问题,可能会有无数种方案,而且各有千秋,随便举一种方案,使用消息队列+分布在各个机器上的工作进程就ok啦。再继续往下看:

1、容易在上面开发应用程序。你设计的系统需要应用程序开发人员考虑各个处理组件的分布、消息的传递吗?如果是,那有点麻烦啊,开发人员可能会用不好,也不会想去用。

2、消息不丢失。用户发布的一个宝贝消息不能在实时处理的时候给丢了,对吧?更严格一点,如果是一个精确数据统计的应用,那么它处理的消息要不多不少才行。这个要求有点高。

3、消息严格有序。有些消息之间是有强相关性的,比如同一个宝贝的更新和删除操作消息,如果处理时搞乱顺序完全是不一样的效果了。

 

三、storm优势

1. 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

2. 服务化,一个服务框架,支持热部署,即时上线或下线App.

3. 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

4. 容错性。Storm会管理工作进程和节点的故障。

5. 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

6. 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

7. 快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。

8. 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

 

四、storm架构

Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由Zookeeper来完成的。ZooKeeper用于管理集群中的不同组件,ZeroMQ是内部消息系统,JZMQ是ZeroMQMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群.

 

五、相关概念:

首先与hadoop中概念做个比较,如图:



 

Nimbus:负责资源分配和任务调度。

Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。

Worker:运行具体处理组件逻辑的进程。

Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。

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

Spout:在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为

topology内部的源 数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。

Bolt:在一个topology中接受数据然后执行处理的组件。

Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被 动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。

Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value

就行了,所以就是一个value list.Stream:源源不断传递的tuple就组成了stream。



 

  • 大小: 67.9 KB
  • 大小: 19.5 KB
0
0
分享到:
评论

相关推荐

    Andy Feng:Hadoop和Spark的统一协作

    该文档来自Spark Summit 2013峰会上Yahoo高级架构师Andy Feng的主题演讲。Andy Feng重点介绍了雅虎的现状,通过图文并茂的方式介绍了雅虎的主页和个性化属性,以及试点的电子商务和广告业务,重点阐述Hadoop和Spark...

    8_storm.docx

    storm 入门学习笔记。主要包括 storm概念,storm架构。能很好的对 storm 基础有一个入门。

    Storm入门教程 之Storm原理和概念详解

    Storm入门教程 之Storm原理和概念详解,出自Storm流计算从入门到精通之技术篇,Storm入门视频教程用到技术:Storm集群、Zookeeper集群等,涉及项目:网站PV、UV案例实战、其他案例; Storm视频教程亮点: 1、Storm...

    storm on yarn概念架构消息机制概述

    storm on yarn概念架构消息机制概述 包括storm job跟mapreduce job对比 storm on yarn架构图 storm关键概念描述 storm消息机制介绍

    Storm实时处理方案架构.docx

    Storm实时处理方案架构.docx

    Document Storm模块架构图1

    CPU 模块 ClusterCPU 模块 ClusterCPU模块CPU模块CPU模块CPU模块CPU模块CPU模块CPU模块CPU模块网站前台网站前台Data

    基于storm的实时计算架构

    storm是twitter开源数据流处理架构,常用于兴趣推送、日志提醒等

    细细品味Storm_Storm简介及安装

    第7章演示集成Storm和非事务型系统 的复杂性,通过集成Storm和开源探索性分析架构 Druid实现一个可配置的实时系统来分析金融事件。 第8章探讨Lambda体系结构的实现方法,讲解如何 将批处理机制和实时处理引擎结合...

    大数据-Storm实时数据处理

    作为分布式系统架构,Hadoop具有高可靠性、高扩展性、高效性、高容错性和低成本的优点。然而随着数据体积越来越大,实时处理能力成为了许多机构需要面对的首要挑战。Hadoop是一个批处理系统,在实时计算处理方面显得...

    基于Storm流计算天猫双十一作战室项目实战

    1、课程中完整开发3个Storm项目,均为企业实际项目,其中一个是完全由Storm Trident开发。 项目源码均可以直接运行,也可直接用于商用...6、分享实际项目的架构设计、优劣分析和取舍、经验技巧,陡直提升学员的经验值。

    Storm笔记-PPT

    详细介绍storm的概念 起源 架构 组件 原理已经应用场景描述

    storm 0.5.1 source

    Storm 代码来自于Twitter上月收购的BackType,似乎是Twitter为方便用户解析数据的努力。 现在Storm的势头相当强劲,...相当热门的新创公司Cloudera,其产品也是基于Hadoop,并为Facebook和其他公司提高了基础架构。

    storm企业级运维 调优 实战

    基于storm的运维 调优和相关的真实案例,主要从storm的基础架构开始,然后有重点的分析核心架构和对应的真实案例,以及如何解决日常问题,从安装部署和启动以及运行等多个角度进行说明,最后再介绍如何进行storm的生产...

    storm_jars.zip

    storm是一个流式架构,当我们用idea或者eclipse进行编程时需要导入storm的依赖jar包,一共173个打包在一起,亲测有效

    Kafka+FlumeNG+Storm+HBase构架设计

    Kafka+FlumeNG+Storm+HBase构架设计

    Storm技术内幕与大数据实践

    本书介绍了Storm实时平台的总体架构,剖析相关源码并配有顺序图,分享了监控Storm的常用方法、应用小技巧和性能优化经验。

    storm 实战笔记

    包含Storm入门到精通,Storm上下游及架构集成、日志告警系统、日志分析、电商交易风控、喜欢推荐系统、混合推荐系统等

    基于Storm和Hadoop的大数据处理架构的研究_靳永超.pdf

    基于Storm和Hadoop的大数据处理架构的研究_靳永超.pdf

    Storm运行原理探索

    ApacheStorm的前身是TwitterStorm平台,目前已经归于Apache基金会管辖。...Storm集群采用主从架构方式,主节点是Nimbus,从节点是Supervisor,有关调度相关的信息存储到ZooKeeper集群中,架构如下图所示:N

    基于Storm+Esper架构实现的证券异常交易行为监控系统源码+项目说明(支持金证交易系统的指令拦截 、复制与解析).zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学...基于Storm+Esper架构实现的证券异常交易行为监控系统源码+项目说明(支持金证交易系统的指令拦截 、复制与解析).zip

Global site tag (gtag.js) - Google Analytics