大数据生态之storm学习 2019-9-17
Posted fanxin99
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据生态之storm学习 2019-9-17相关的知识,希望对你有一定的参考价值。
---恢复内容开始---
一.基本概念
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”修改成你自己主机名,注意-的前后要有空格
1 # 使用主机名配置 2 storm.zookeeper.servers: 3 - "nimbus" 4 - "supervisor1" 5 - "supervisor2" 6 7 nimbus.seeds: ["nimbus"]
配置解释:
(1)storm.zookeeper.servers表示配置Zookeeper集群地址。注意,如果zookeeper集群中使用的不是默认端口,则还需要配置storm.zookeeper.port.
(2)nimbus.seeds表示配置主控节点,可以配置多个。
Supervisor节点storm.yaml配置
将nimbus下的storm传输到supervisor节点指定目录下:
1 scp -r storm/ supervisor1:/data2/frame/
2 scp -r storm/ supervisor2:/data2/frame/
Supervisor安装的时候,只需要指定Nimbus地址,就可以自动加入Storm集群。
1 storm.zookeeper.servers: 2 - "192.168.17.133" 3 - "192.168.17.134" 4 - "192.168.17.135" 5 6 nimbus.seeds: ["192.168.17.133"] 7 8 #配置数据存储路径 9 storm.local.dir: "/data2/frame/storm/data" 10 11 ##配置节点健康检测 12 storm.health.check.dir: "healthchecks" 13 storm.health.check.timeout.ms: 5000 14 15 storm.local.hostname: "192.168.17.134" 16 17 #配置supervisor: 开启几个端口插槽,就开启几个对应的worker进程 18 supervisor.slots.ports: 19 - 6700 20 - 6701 21 - 6702 22 - 6703
5.创建storm本地目录
mkdir $STORM_HOME/data
6.启动storm
(1)启动主控节点服务
1 ./storm nimbus >/dev/null 2>&1 & 2 ./storm ui >/dev/null 2>&1 & 3 ./storm logviewer >/dev/null 2>&1 &
(2)启动工作节点
1 ./storm supervisor >/dev/null 2>&1 & 2 ./storm logviewer >/dev/null 2>&1 &
7.验证是否启动完成http://192.168.17.133:8080/
从浏览器打开
提前检查防火墙是否关闭
启动LogView服务
1 ./storm logviewer >/dev/null 2>&1 &
---恢复内容结束---
以上是关于大数据生态之storm学习 2019-9-17的主要内容,如果未能解决你的问题,请参考以下文章
Flume+Kafka+Storm+Redis构建大数据实时处理系统:实时统计网站PVUV+展示