1 流式计算

  流式计算:数据实时产生、实时传输、实时计算、实时展示

  代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。

  一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果。

2 Storm是什么

  Storm 是用来实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失,提供简单容易理解的接口,便于开发。

3 Storm 与Hadoop的区别

  Storm用于实时计算,Hadoop用于离线计算。

  Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。

  Storm处理的数据通过网络传输进来;Hadoop的数据保存在磁盘。

  Storm与Hadoop编程模型相似。

4 运用场景

  4.1 日志分析

    从海量日志中分析出特定的数据,并将分析结果存入外部存储器用来辅助决策。

  4.2 管道决策

    将一个数据从一个系统传输到另外一个系统,比如将数据同步到Hadoop。

  4.3 消息转换器

    将接受到的消息按照某种格式进行转化,存储到另外一个系统比如消息中间件。

5 Storm核心组件

  

  5.1 组件功能:

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

    Supervisor:负责接收nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。

    Worker:运行具体处理组件逻辑的进程,Worker运行的任务类型只有两种,一种是Spout任务,一种是bolt任务。

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

6 Storm编程模型

  

  6.1 组件解释

    Topology:Storm中运行的一个实时应用程序的名称。(拓扑)

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

    Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。

    Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。

    Stream:表示数据的流向。

7 流式计算一般架构图

  

  其中flume用来获取数据

  Kafka用来临时保存数据

  Strom用来计算数据

  Redis是个内存数据库,用来保存数据。

Storm 第一章 核心组件及编程模型的更多相关文章

  1. Storm介绍及核心组件和编程模型

    离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据.azkaba ...

  2. storm介绍,核心组件,编程模型

    一.流式计算概念 利用分布式的思想和方法,对海量“流”式数据进行实时处理,源自业务对海量数据,在“时效”的价值上的挖掘诉求,随着大数据场景应用场景的增长,对流式计算的需求愈发增多,流式计算的一般架构图 ...

  3. 第一章 CLR 的执行模型

    CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命 ...

  4. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  5. Storm集群组件和编程模型

     Storm工作原理: Storm是一个开源的分布式实时计算系统,常被称为流式计算框架.什么是流式计算呢?通俗来讲,流式计算顾名思义:数据流源源不断的来,一边来,一边计算结果,再进入下一个流. 比 ...

  6. [蛙蛙推荐]SICP第一章学习笔记-编程入门

    本书简介 <计算机程序的构造与解释>这本书是MIT计算机科学学科的入门课程, 大部分学生在学这门课程前都没有接触过程序设计,也就是说这本书是针对编程新手写的. 虽然是入门课程,但起点比较高 ...

  7. javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型

    1.变量的声明和初始化 必须使用关键字 var,后跟变量名,后面还可以跟一个赋值表达式. var name; var age = 5; var str = 'hello'; var flg = fal ...

  8. 【java并发编程艺术学习】(二)第一章 java并发编程的挑战

    章节介绍 主要介绍并发编程时间中可能遇到的问题,以及如何解决. 主要问题 1.上下文切换问题 时间片是cpu分配给每个线程的时间,时间片非常短. cpu通过时间片分配算法来循环执行任务,当前任务执行一 ...

  9. python第一章 python基础编程

    第一次学习python 首先python对于我来说是我学习的第三门语言,之前大一学习过了c和c++这两门语言. 接触一个新语言,首先应该的是搭载一下编译的环境.我们是老师给我们上传了的python3安 ...

随机推荐

  1. Linxu系统修改文件描述符

    修改系统文件描述符 文件描述符:无符号整数(0-65535),进程使用它来标示打开的文件    /etc/security/limits.conf:可以修改CPU,堆栈,   1.查看最大的标示符 u ...

  2. QQ邮箱验证码

    人的记忆有时候跟鱼一样,只有七秒钟,短暂的时间! .NET  Web窗体实现忘记密码,使用QQ邮箱验证修改 一.首先设置一下发送个人或企业发送的邮箱 二.登录邮箱进行设置,如图:  三.关闭邮箱 四. ...

  3. 深入浅出SharePoint2013——安装SharePoint2013

    在这个页面的底部可以通过相应链接下载Sharepoint Server安装文件  https://technet.microsoft.com/en-us/library/cc262788.aspx

  4. [EffectiveC++]item28:避免返回handles指向对象内部成分

    可以先参考一个帖子:http://bbs.csdn.net/topics/390731394?page=1

  5. 【笔记】python的sqlalchemy数据库连接池原理的说明

    sqlalchemy数据库连接池的使用方式是延迟初始化,就是说一开始你调用create_engine(...)后创建的那个数据库池是空的,你后面通过session.connection()或者engi ...

  6. 【原创】修改最大用户进程限制 "ulimit -u"

    centos 6.x 内核版本2.6.32以上,修改/etc/security/limits.d/90-nproc.conf:因为系统是先读/etc/security/limits.conf的值,在用 ...

  7. quartz(转)

    1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...

  8. Day2 Mybatis初识(二)

    mapper接口开发 传统dao的开发问题(ibatis) 方法调用:字符串易错,硬编码 mapper代理开发 a) 编写全局配置 b) 编写接口(自动根据接口和映射文件创建实现类) c) 编写映射文 ...

  9. --provider=docker时出现的问题

    Vagrantfile类似: Vagrant.configure(") do |config| config.vm.box = "hashicorp/precise64" ...

  10. 20165302 敏捷开发与XP实践作业

    20165302 敏捷开发与XP实践实验报告 一.提交点一 1.实验要求 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD ...