Storm介绍及安装部署

本节内容:node

  • Apache Storm是什么
  • Apache Storm核心概念
  • Storm原理架构
  • Storm集群安装部署
  • 启动storm ui、Nimbus和Supervisor

 

1、Apache Storm是什么

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

批处理使用的大可能是鼎鼎大名的hadoop或者hive,做为一个批处理系统,hadoop以其吞吐量大、自动容错等优势,在海量数据处理上获得了普遍的使用。可是,hadoop不擅长实时计算,由于它自然就是为批处理而生的,这也是业界一致的共识。不然最近几年也不会有s4,storm,puma这些实时计算系统如雨后春笋般冒出来啦。apache

举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他但愿的固然是这个宝贝立刻就能够被卖家搜索出来、点击、购买啦,相反,若是这个宝贝要等到次日或者更久才能够被搜出来,估计就会有很多损失了。 再举一个推荐的例子,若是用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,可是却发现系统在竭尽全力地给他推荐袜子、鞋子,根本对他今天寻找泳镜的行为视而不见,这样商家的利益就有所损失。这是由于后台系统作的是天天一次的全量处理,并且大可能是在夜深人静之时作的,那么客户今天白天作的事情要到明天才能反映出来。这也就是为何须要实时处理的缘由。vim

 

2、Apache Storm核心概念

  • Nimbus:Storm集群主节点,负责资源分配和任务调度。咱们提交任务和截止任务都是在Nimbus上操做的。一个Storm集群只有一个Nimbus节点。
  • Supervisor:Storm集群工做节点,接受Nimbus分配任务,管理全部Worker。
  • Worker:工做进程,每一个工做进程中都有多个Task。
  • Task:任务,每一个Spout和Bolt都是一个任务,每一个任务都是一个线程。
  • Topology:计算拓扑,包含了应用程序的逻辑。
  • Stream:消息流,关键抽象,是没有边界的Tuple序列。
  • Spout:消息流的源头,Topology的消息生产者。
  • Bolt:消息处理单元,能够过滤、聚合、查询数据库。
  • Stream grouping:消息分发策略,一共6种,定义每一个Bolt接受何种输入。
  • Reliability:可靠性,Storm保证每一个Tuple都会被处理。

 

3、Storm原理架构

1. Storm集群架构图架构

Zookeeper集群在Storm集群中的做用:分布式

Zookeeper集群负责Nimbus节点和Supervior节点之间的通讯,监控各个节点之间的状态。好比一般咱们提交任务的时候是在Nimbus节点上执行的,Nimbus节点经过zk集群将任务分发下去,而Supervisor是真正执行任务的地方。Nimbus节点经过zk集群监控各个Supervisor节点的状态,当某个Supervisor节点出现故障的时候,Nimbus节点就会经过zk集群将那个Supervisor节点上的任务从新分发,在其余Supervisor节点上执行。这就意味着Storm集群也是高可用集群,若是Nimbus节点出现故障的时候,整个任务并不会中止,可是任务的管理会出现影响,一般这种状况下咱们只须要将Nimbus节点恢复就能够了。Nimbus节点不支持高可用,这也是Storm目前面临的问题之一。不过通常状况下,Nimbus节点的压力不大,一般不会出现问题。oop

通常状况下,Zookeeper集群的压力并不大,通常只须要部署3台就够了。Zookeeper集群在Storm集群中逻辑上是独立的,但在实际部署的时候,通常会将zk节点部署在Nimbus节点或Supervisor节点上。ui

 

2. 数据处理流程图spa

storm处理数据的特色:数据源源不断,不断处理。操作系统

 

3. 拓扑图分析

storm中是没有数据存储结构的,咱们须要本身设计数据落地接口,指明数据存储到哪一部分中。Storm自己是不存储数据的。

 

4、Storm集群安装部署

1. 环境信息

主机名 操做系统版本 IP地址 安装软件
log1 CentOS 7.0 114.55.29.86 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0
log1 CentOS 7.0 114.55.29.241 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0
log3 CentOS 7.0 114.55.253.15 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0

 

 

 

 

 

2. 安装Zookeeper集群

参见以前的文章《Zookeeper介绍及安装部署》。

 

3. 安装Storm集群

log一、log2和log3部署storm集群,log1做为Nimbus节点,log2和log3做为surpervisor节点。

(1)下载安装软件并解压

[root@log1 local]# wget http://apache.fayea.com/storm/apache-storm-1.0.0/apache-storm-1.0.0.tar.gz
[root@log1 local]# tar zxf apache-storm-1.0.0.tar.gz

 

(2)配置storm

[root@log1 ~]# cd /usr/local/apache-storm-1.0.0/
[root@log1 apache-storm-1.0.0]# vim conf/storm.yaml
  • 配置Zookeeper地址(配置Zookeeper的主机名,注意: 若是Zookeeper集群使用的不是默认端口,那么还须要配置storm.zookeeper.port)

 

  • storm.local.dir: The Nimbus and Supervisor daemons require a directory on the local disk to store small amounts of state (like jars, confs, and things like that). 在配置文件里添加一行:
storm.local.dir: "/usr/local/apache-storm-1.0.0/status"

这个status目录在storm启动的时候会自动建立,固然也能够提早建立好。

 

  • 配置nimbus.seeds:用于配置主控节点的地址,能够配置多个。

 

  • 配置supervisor.slots.ports
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

配置工做节点上的进程端口。你配置一个端口,意味着工做节点上启动一个worker,在实际的生产环境中,咱们须要根据实际的物理配置以及每一个节点上的负载状况来配置这个端口的数量。在这里每一个节点我象征性的配置4个端口。

注意:以上配置,凡有冒号的地方,冒号后都要有个空格。

 

log2和log3主机也是一样的配置。拷贝这台机器的storm包到log2和log3主机:

[root@log1 local]# scp -pr apache-storm-1.0.0 root@114.55.29.241:/usr/local/
[root@log1 local]# scp -pr apache-storm-1.0.0 root@114.55.253.15:/usr/local/

 

  • 对于两台supervisor node,咱们额外开启JMX支持,在配置文件中加入以下配置:
supervisor.childopts: -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9998

9998就是用于经过JMX收集supervisior JVM指标的端口。

 

(3)配置storm环境变量

[root@log1 apache-storm-0.10.0]# vim /etc/profile
export STORM_HOME=/usr/local/apache-storm-0.10.0
export PATH=$STORM_HOME/bin:$PATH
[root@log1 apache-storm-0.10.0]# source /etc/profile

 

5、启动storm ui、Nimbus和Supervisor

log1节点启动nimbus和storm ui:

[root@log1 ~]# nohup storm ui >/dev/null 2>&1 &
[root@log1 ~]# nohup storm nimbus >/dev/null 2>&1 &

 

log2和log3主机启动Supervisor节点:

[root@log2 ~]# nohup storm supervisor >/dev/null 2>&1 &
[root@log3 ~]# nohup storm supervisor >/dev/null 2>&1 &

 

访问ui页面: http://114.55.29.86:8080/

界面简单介绍:

  • Used slots:使用的worker数。
  • Free slots:空闲的worker数。
  • Executors:每一个worker的物理线程数。
相关文章
相关标签/搜索