大数据生态之storm学习

一.基本概念

1.什么是storm?

	storm是一个免费的开源分布式实时计算系统,流数据框架,可以轻松可靠地处理无限数据流,实现Hadoop为批处理所做的实时处理。

2.使用场景

	实时分析,在线机器学习,连续计算。
	流计算

3.特点

	速度快,每秒每个节点可以处理超过百万个元组
	具有可扩展性,容错性,确保数据得到处理,且易于设置和操作

4.topology

	类似Hadoop中的mr,storm是无状态的,(即storm是不知道某一条数据是否被消费过,没有保持数据,而数据是否被消费,有消费者知道,在storm中使用zookeeper实现消费这知道数据的是否可用,以偏移量的形式出现,所以偏移量一旦增加,表明数据被消费过了,不能被重新消费)

	集群状态和分布式环境信息在zookeeper中保存  确保每个信息至少被消费一次

二.核心概念

1.tuple:

元组
	数据结构,有序的元素列表,通常是任意数据类型,使用逗号分割,交给storm计算。

2.Stream:

一系列tuple

3.spouts:

水龙头,(源源不断产生数据的源头)数据源。

4.Bolts:

转接头,逻辑处理单元,spout数据传给bolt,bolt处理后产生新的数据,可以filter(过滤)、聚合、分组等。

接受数据  ——>  处理  ——>  输出给bolt(一个或多个)

5.Topology:

不会停止,除非手动杀死,mr是会停止的

6.Tasks:

spout和bolt的执行过程就是task。spout和bolt都可以以多实例方式运行(在单独的线程中)

7.workers:

工作节点,storm在workers直间均衡分发任务。监听job启动或者停止。

8.Stream Grouping:

控制tuple如何进行陆游(如何流动),内置四个分组策略。

三.组件

1.Nimbus:

master node,在work node间分发数据,指派task给worker node,监控故障。

2.supervisor:

接受nimbus的指令,有多个work进程,监督work进程,完成task。

3.worker process:

执行相关的task,本身不执行,创建executor(执行线程),可以有多个执行线程。

4.executor:

执行线程,由worker process孵化的一个线程,运行一个或多个task(有bolt或spout)

5.task:

处理数据

6.zookeeper:

维护状态。

四.storm架构

1.节点类型:

a) Nimbus:

直译为云雨、灵气,master node
	主要任务运行topology,分析topology,收集执行的task的执行情况。将task分发给supervisor(可用的)

b) supervisor:

work node 工作节点,有多个处理进程,代理task给所有的worker processes进程,work进程会孵化出足够的线程供task运行
	在nimbus和supervisor直间使用内部的消息系统进程通信

五.安装storm

1.jdk—略

2.zookeeper—略

3.storm

	a)在网址:https://archive.apache.org/dist/storm/apache-storm-1.1.1/  中下载完成后 解压
	b)下载完成后解压   tar -zxvf apache-storm-1.1.1.tar.gz -C /usr/local/src/
	c)vim /etc/profile.d/storm.sh 修改配置文件 添加如下内容:
export STORM_HOME=/usr/local/src/storm
export PATH=:$PATH:$STORM_HOME/bin

4.配置storm

cd /usr/local/src/storm/conf/
vim storm.yaml

1 ########### These MUST be filled in for a storm configuration
2 # storm.zookeeper.servers:
3 #     - "server1"
4 #     - "server2"
5 # 
6 # nimbus.seeds: ["host1", "host2", "host3"]

把该行开头的#去掉,把- “serverx”修改成你自己主机名,注意-的前后要有空格

# 使用主机名配置
storm.zookeeper.servers:
       - "nimbus"
       - "supervisor1"
       - "supervisor2"
   
nimbus.seeds: ["nimbus"]

配置解释:
(1)storm.zookeeper.servers表示配置Zookeeper集群地址。注意,如果zookeeper集群中使用的不是默认端口,则还需要配置storm.zookeeper.port.

(2)nimbus.seeds表示配置主控节点,可以配置多个。

Supervisor节点storm.yaml配置

将nimbus下的storm传输到supervisor节点指定目录下:

scp -r storm/ supervisor1:/data2/frame/
scp -r storm/ supervisor2:/data2/frame/  

Supervisor安装的时候,只需要指定Nimbus地址,就可以自动加入Storm集群。

storm.zookeeper.servers:
	- "192.168.17.133"
	- "192.168.17.134"
	- "192.168.17.135"

nimbus.seeds: ["192.168.17.133"]

 #配置数据存储路径
 storm.local.dir: "/data2/frame/storm/data"
  
 ##配置节点健康检测
 storm.health.check.dir: "healthchecks"
 storm.health.check.timeout.ms: 5000
  
 storm.local.hostname: "192.168.17.134"
  
#配置supervisor: 开启几个端口插槽,就开启几个对应的worker进程
supervisor.slots.ports:
     - 6700
     - 6701
     - 6702
     - 6703

5.创建storm本地目录

mkdir  $STORM_HOME/data

6.启动storm

(1)启动主控节点服务
./storm nimbus >/dev/null 2>&1 &
./storm ui >/dev/null 2>&1 &
./storm logviewer >/dev/null 2>&1 &
(2)启动工作节点
./storm supervisor >/dev/null 2>&1 &
./storm logviewer >/dev/null 2>&1 &

7.验证是否启动完成

http://192.168.17.133:8080/

从浏览器打开

提前检查防火墙是否关闭

启动LogView服务
./storm logviewer >/dev/null 2>&1 &
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值