大数据技术之Stome 概念


Storm 是一个分布式的 ,容错的实时计算系统

Storm 实时 低延迟 ,主要有两个原因 :

1 storm 进程是常驻内存的,没有hadoop 里面的不断的起停

2 storm 的数据是不经过磁盘的,都是在内存里面的,处理完成就没有了,数据的交换经过网络,没有磁盘IO


Storm 和hadoop的区别 :

数据来源不同,hadoop是hdfs 上某个文件夹下可能是上TB的数据,storm 是实时的新增的一笔数据

处理过程不同,hadoop是分map 和reduce 阶段额,storm 是由用户定义的处理流程,流程中包含多个步骤,每个步骤可以是数据源spout 或处理逻辑 bolt

是否结束,hadoop 最后是要结束的,storm是没有结束状态,到最后一步时,就停滞,等有新数据进入时再唤醒程序

处理速度不同,hadoop 是以处理hdfs 上大数据量为目的的,速度慢,storm是只要处理实时的新增的某一笔内存中的数据即可,速度极快

适用场景不同,hadoop 是以批处理用的,不讲时效性,处理一次就提交一个job storm 处理一段时间内新增的数据,有时效性

与mq 相比,hadoop 没有可比性,storm 可以看作是n 个步骤,每个步骤处理完就向下一个mq 发送消息,监听这个mq 的消费者继续处理


Storm 架构

Nimbus   集群管理,接受jar包 ,调度topology

nimbus <---> zk<----> slave(supervisor)

nimbus 处理topology submit kill rebalance 等请求

Supervisor  起停worker

监控worker ,把自己的情况汇报给zk

每台机器起一个supervisor 进程

worker   一个jvm进程资源分配单位  ,可以启动多个executor

每个机器supervisor启动多个worker,默认 4 个

executor   干活的奴隶 ,线程

executor 创建 spout bolt 对象 执行spout bolt 里面的nexttuple()  execute()

task

zookeeper

完全分布规划  (zk 服务器 3 台,一台nimbus,N台 supervisor服务器)

storm 的核心配置是 conf/storm.yaml

storm.zookeeper.servers:
 - "spark001"
 - "spark002"
 - "spark003"
nimbus.host: "spark001"

storm 的ui 默认端口是 8080 ?????

编程模型,

DAG  Spout  Bolt

Storm  启动

首先启动zookeeper

依次启动nimbus ,ui supervisor ,logviewer

提交topology

./bin/storm jar examples/storm-starter/storm-starter-topoloies-0.98.0.jar storm.starter.WordCountTopology wordcount































原文地址:https://www.cnblogs.com/TendToBigData/p/10501489.html