大数据生态之storm学习 2019-9-17

白昼怎懂夜的黑 提交于 2020-02-05 06:49:40

---恢复内容开始---

一.基本概念

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 &

 

 

---恢复内容结束---

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!