流式计算:数据实时产生、实时传输、实时计算、实时展现mysql
表明技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。sql
一句话总结:将源源不断产生的数据实时收集并实时计算,尽量快的获得计算结果。数据库
Storm 是用来实时处理数据,特色:低延迟、高可用、分布式、可扩展、数据不丢失,提供简单容易理解的接口,便于开发。编程
Storm用于实时计算,Hadoop用于离线计算。缓存
Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。网络
Storm处理的数据经过网络传输进来;Hadoop的数据保存在磁盘。架构
Storm与Hadoop编程模型类似。分布式
从海量日志中分析出特定的数据,并将分析结果存入外部存储器用来辅助决策。oop
将一个数据从一个系统传输到另一个系统,好比将数据同步到Hadoop。线程
将接受到的消息按照某种格式进行转化,存储到另一个系统好比消息中间件。
Nimbus:负责资源分配和任务调度
Supervisor:负责接收nimbus分配的任务,启动和中止属于本身管理的worker进程。经过配置文件设置当前supervisor上启动多少个worker。
Worker:运行具体处理组件逻辑的进程,Worker运行的任务类型只有两种,一种是Spout任务,一种是bolt任务。
Task:worker中每个spout/bolt的线程称为一个task。在storm0.8以后,task再也不与物理线程对应,不一样的spout/bolt的task可能会共享一个物理线程,该线程称之为executor。
Topology:Storm中运行的一个实时应用程序的名称。(拓扑)
Spout:在一个topology中获取源数据流的组件。一般状况下spout会从外部数据源中读取数据,而后转换为topology内部的源数据。
Bolt:接受数据而后执行处理的组件,用户能够在其中执行本身想要的操做。
Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。
Stream:表示数据的流向。
其中flume用来获取数据
Kafka用来临时保存数据
Strom用来计算数据
Redis是个内存数据库,用来保存数据。