Storm--实时数据处理框架

  Storm 是Twitter开源的一个实时数据处理框架Storm能实现高频数据和大规模数据的实时处理,很多人喜欢拿Hadoop来进行比较,其实他们差别挺大的,关键是应用场景不一样。

Storm简介

  • Storm与Hadoop区别主要有以下几点:

    1. 场景: Hadoop 处理批量数据,不讲究时效性,Storm 是要处理某一新增数据时用的,要讲时效性;
    2. 数据: Hadoop 处理的是hdfs上TB级别的数据(历史数据),Storm 是处理的是实时新增的某一笔数据(实时数据);
    3. 速度: Hadoop 是以处理hdfs上TB级别数据为目的,速度慢,Storm 是只要处理新增的某一笔数据即可,速度快。
  • Storm应用场景总结

    1. 数据流处理: 与其它流处理系统不同,storm不需要中间队列媒介
    2. 实时计算: 可连续不断的进行实时数据处理,把处理的结果实时更新展示到客户端
    3. 分布式远程过程调用: 可充分利用集群中CPU资源,进行CPU密集型计算。

Storm体系结构

Storm 体系架构图
Nimbus:负责资源分配和任务调度。
Zookeeper:负责Nimbus和多个Supervisor之间的所有协调工作。
Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
Worker:工作进程,一个工作进程中可以含有一个或者多个Executor线程。
Executor:线程,里面运行着多个Task。
Task:worker中每一个spout/bolt的线程称为一个task. 一个task中一定是运行的是相同组件。

Storm组件

Storm 组件
Topology : 用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job;
Stream : 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理;
Spouts : 数据源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple;
Bolts : 处理消息,所有消息处理逻辑被封装在bolts里面,处理输入的数据流并产生新的输出数据流,可执行过滤,聚合,查询数据库等操作;
Stream groupings : 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如何分配给Bolts们。

集群搭建

  • Storm是主从结构:主节点工作节点
  1. master节点:运行Nimbus进程,负责分发代码,安排任务,监控运行状态(主要是节点成功失败状态),一般还运行ui进程;
  2. worker节点:运行Supervisor进程,负责执行一个Topology的一个子集,一般还运行logviewer进程。
  • 简单的介绍这基本安装
  1. 前提:安装zookeeper集群(注意:各集群节点时间保持一致)
  2. 下载上传解压apache-storm-0.9.3.tar.gz
  3. 修改文件conf/storm.yaml(实例中:一主两从节点,主节点为xxo08)
    配置 storm.yaml
  4. 复制配置信息到其他节点(配置完全一样,scp即可)
  5. 启动:
    5.1. 在主节点xxo08启动Nimbus进程、ui进程;
    5.2. 在工作节点xxo09、xxo10启动Supervisor进程、logviewer进程;
    egnohup /opt/storm-0.9.3/bin/storm nimbus >/dev/null 2>&1 &

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器