Hadoop(九)Storm 安装

Apache Storm 是自由开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理。

  • 进程常驻内存
  • 数据不经过磁盘,在内存中处理

概念

  • Nimbus:集群主节点(Master),负责资源分配和任务调度。我们提交任务和截止任务都是在 Nimbus上操作的。一个 Storm 集群只有一个 Nimbus 节点。
  • Supervisor:集群工作节点(Slave),接收 Nimbus 分配的任务,管理所有 Worker。一个 Supervisor 节点中包含多个 Worker 进程。
  • Worker:工作进程,每个工作进程中都有多个 Task。
  • Task:任务,每个 Spout 和 Bolt 都由若干个任务来执行。每个任务都与一个执行线程相对应。
  • Topology:计算拓扑,Storm 的拓扑是对实时计算应用逻辑的封装,它的作用与 MapReduce 的任务(Job)很相似,区别在于 MapReduce 的一个 Job 在得到结果之后总会结束,而拓扑会一直在集群中运行,直到手动去终止它。拓扑还可以理解成由一系列通过数据流(Stream Grouping)相互关联的 Spout 和 Bolt 组成的拓扑结构。
  • Stream:数据流是 Storm 中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。数据流可以由一种能够表述数据流中元组的域(fields)的模式来定义。
  • Spout:数据源是拓扑中数据流的来源。一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中。根据需求的不同,Spout 既可以定义为可靠的数据源,也可以定义为不可靠的数据源。一个可靠的 Spout 能够重新发送处理失败的元组,以确保所有的元组都能得到正确的处理;相对应的,不可靠的 SPout 就不会在元组发送之后对元组进行任何其他的处理。一个 Spout 可以发送多个数据流。
  • Bolt:拓扑中所有的数据处理均是由 Bolt 完成的。通过数据过滤(filtering)、函数处理(functions)、聚合(aggregations)、联结(joins)、数据库交互等功能,Bolt 几乎能够完成任何一种数据处理需求。一个 Bolt 可以实现简单的数据流转换,而更复杂的数据流变换通常需要使用多个 Bolt 并通过多个步骤完成。
  • Stream Grouping:消息分发策略, 在 Storm 中有八种内置的数据流分组方式。为拓扑中的每个 Bolt 的确定输入数据流是定义一个拓扑的重要环节。数据流分组定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。
  • Reliability:可靠性。Storm 可以通过拓扑来确保每个发送的元组都能得到正确处理。通过跟踪由 Spout 发出的每个元组树可以确定元组是否已经完成处理。每个拓扑都有一个 “消息延时” 参数,如果 Storm 在延时时间内没有检测到元组是否处理完成,就会将该元组标记为处理失败,并会在稍后重新发送该元组。

单机模式(『caroly01』)

  • 上传解压

    • tar xf apache-storm-0.10.0.tar.gz -C /opt/caroly/
      
    • mv apache-storm-0.10.0/ storm
      
  • 配置环境变量

    • vi /etc/profile +
      
    • export STORM_HOME=/opt/caroly/storm
      
    • PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$STORM_HOME/bin
      
    • . /etc/profile
      
  • 创建日志信息目录

    • cd /opt/caroly/storm
      mkdir logs
      
  • 启动

    • storm dev-zookeeper >> ./logs/zk.out 2>&1 &
      
    • storm nimbus >> ./logs/nimbus.out 2>&1 &
      
    • storm ui >> ./logs/ui.out 2>&1 &
      
    • storm supervisor >> ./logs/supervisor.out 2>&1 &
      
    • storm logviewer >> ./logs/logviewer.out 2>&1 &
      

注:日志重定向到指定目录,2 代表标准错误输出,表示出现问题的时候定向到标准输出。最后一个 & 表示后台运行

  • 访问

    • 进程完全启动后,可在浏览器中访问
      caroly01:8080
      

全分布式

  • 各节点分配
carolyNimbusSupervisorZookeeper
caroly02
caroly03
caroly04
  • 修改配置文件(『caroly01』)

    • cd /opt/caroly/storm
      vi conf/storm.yaml
      
    • change 18:
      storm.zookeeper.servers:
      	- "caroly02"
      	- "caroly03"
      	- "caroly04"
      
    • change 23:
      nimbus.host: "caroly02"
      
    • add: (规定提交任务的存放路径,非必需)
      storm.local.dir: "/tmp/storm"
      
    • add:(四个 worker 进程的通讯端口)
      supervisor.slots.ports:
          - 6700
          - 6701
          - 6702
          - 6703
      
    • 开启 DRPC

      • change 47:
        drpc.servers:
        	- "caroly02"
        
  • 分发(『caroly01』)

    • cd /opt/caroly
      rm -rf /opt/caroly/storm/logs/
      mkdir logs
      
    • scp -r storm/ caroly02:`pwd`
      scp -r storm/ caroly03:`pwd`
      scp -r storm/ caroly04:`pwd`
      
  • 配置环境变量(『caroly02』、『caroly03』、『caroly04』)

    • vi /etc/profile +
      
    • export STORM_HOME=/opt/caroly/storm
      PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$STORM_HOME/bin
      
    • . /etc/profile
      
  • 启动 ZK(『caroly02』、『caroly03』、『caroly04』)

    • zkServer.sh start
      
  • 启动 storm(『caroly02』)

    • cd /opt/caroly/storm
      
    • storm nimbus >> ./logs/numbus.out 2>&1 &
      
    • storm ui >> ./logs/ui.out 2>&1 &
      
    • storm drpc >> ./logs/drpc.out 2>&1 &
      
  • 启动 storm(『caroly03』、『caroly04』)

    • cd /opt/caroly/storm
      
    • storm supervisor >> ./logs/supervisor.out 2>&1 &
      
  • 访问

    • 进程完全启动后,可在浏览器中访问
      caroly01:8080
      

更新时间:2021-03-23 10:09:36

本文由 caroly 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载 / 出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://caroly.fun/archives/storm安装
最后更新:2021-03-23 10:09:36

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×