概述

离线计算:

批量的获取数据,批量传输数据,周期性批量计算数据,数据展示

代表技术:Sqoop批量导入数据,HDFS批量存储数据,MapReduce批量计算数据,hive批量计算数据等

流式计算

数据实时产生,数据实时传输,数据实时计算,实时展示

代表技术:Flume实时获取数据,Kafka实时数据存储,Strom/JStrom实时数据计算,Redis实时结果缓存,持久化存储(mysql)

两者最大区别:实时收集,实时计算,实时展示

Strom起源

分布式计算框架,主要使用Clojure 和Java编写,最初Nathan Marz带领Backtype公司团队创建,在Backtype公司被Twitter公司收购后进行开源。最初的版本是在2011年9月17日发行,版本号0.5.0。

2013年9月,Apache基金会开始接管并孵化Storm项目。Apache Storm是在Eclipse Public License下进行开发的,它提供给大多数企业使用。经过1年多时间,2014年9月,Storm项目成为Apache的顶级项目。目前,Storm的最新版本2.0.0

Storm是一个免费开源的分布式实时计算系统。Storm能轻松可靠地处理无界的数据流,就像Hadoop对数据进行批处理;

与Hadoop区别

  1. Storm用于实时计算,Hadoop用于离线计算。
  2. Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中 ,一批批处理
  3. Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
  4. Storm与Hadoop的编程模型相似
Storm hadoop
角色 Nimbus JobTracker
Supervisor TaskTracker
Worker Child
应用名称 Topology Job
编程接口 Spout/Bolt Mapper/Reducer

hadoop名称解释:

Job:任务名称:

JobTracker:相当于项目经理,对应于NameNode,JobTracker是一个master服务,软件启动之后JobTracker接受Job,负责调度Job的每一个子任务task运行与TaskTraker上,并监控他们,发现失败的task重新启动

TaskTraker:开发组组长 对应dataNode :TaskTracker是运行在多个节点上的Slaver服务,TaskTraker主动与JobTracker通信,接收作业,并负责直接执行每一个任务

Child:负责开发对应于Mapper/Reduce :对应服务端开发和客户端开发

Strom名词解释

Topology:任务名称

Nimbus:项目经理

Supervisor:开发组长

Worker:开发人员

Spout/Bolt:开发人员中两个角色,对应服务端和客户端

应用场景以及行业

主要用来实时计算源源不断产生的数据,如同流水线生产

运用场景:

Storm能用到很多场景中,包括:实时分析、在线机器学习、连续计算等。

  1. 推荐系统:实时推荐,根据下单或加入购物车推荐相关商品
  2. 金融系统:实时分析股票信息数据
  3. 预警系统:根据实时采集数据,判断是否达到预警
  4. 网站统计:实时销量,流量统计,如淘宝双11效果图

企业典型案例:

  1. 京东-实时分析系统:实时分析用户的属性,并反馈给搜索引擎
  2. 携程-网站性能监控:实时分析系统监控携程网的网站性能 ,利用HTML5提供的performance标准获得可用的指标,并记录日志。Storm集群实时,使用DRPC聚合成报表,通过历史数据对比等判断规则,触发预警事件。
  3. 淘宝双11实时的销售总额

主要特点

  1. 适用场景广泛:Storm可以适用实时处理消息,更新数据库,持续计算场景
  2. 可伸缩性高:Storm的可伸缩性可以上Storm每秒处理的消息量达到很高,扩展一个实时计算任务,所需要的只是加气机提高计算任务的并行度(原因:Strom使用Zookeeper来协调机器内的各种配置,使得Storm集群可以容易扩展)
  3. 保证无数据丢失,Storm保证所有的数据被处理.数据进入Strom,能够被至少处理一次
  4. 健壮性强:Storm集群容易管理,轮流重启节点不影响应用
  5. 容错性好:消息处理过程出现异常,Storm会进行重试