Storm环境构建和实战

来源:互联网 发布:淘宝网恒源祥毛衣 编辑:程序博客网 时间:2024/05/29 17:58


1. 准备工作

下载 apache storm 包apache-storm-1.1.1并解压至/home/hadoop/bigdata工作目录,命名为storm.


2. storm的架构和特点

Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm的部署管理非常简单,而且,在同类的流式计算工具,Storm的性能也是非常出众的。

    Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。

  •     Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
  •     Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
  •     Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
  •     Storm提交运行的程序称为Topology。
  •     Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。
  •     Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。

下图是一个Topology设计的逻辑图的例子。


下图是Topology的提交流程图。


下图是Storm的数据交互图。可以看出两个模块Nimbus和Supervisor之间没有直接交互。状态都是保存在Zookeeper上。Worker之间通过ZeroMQ传送数据,新的版本中已经支持了netty。




3. 配置和启动

3.1 配置 storm/conf/storm.yaml

storm.zookeeper.servers:    // 这里只配置zk节点对应的host,不需要port, 否则会报名字解析不了的错误
     - "master"
     - "ndh-slave01"
     - "slave02"
storm.local.dir:  "/home/hadoop/bigdata/storm/workdir"   //本地建一工作目录 
 
nimbus.seeds: ["master"]       //可以指定多个以:隔开

supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

ui.port: 8090   //  默认是8080 ,因spark_webui_port也是8080,启动时报冲突,改为其它值,如8090


3.2  slave机器的配置

拷贝storm目录及配置文件至slave的两台机器,默认使用和master相同的配置


3.3  组件分配和启动

根据要规划启动的nimbus,supervisor数量及集群中节点的个数,把各组件分散在不同的节点上执行,一分散压力,二可靠性考虑,一旦某节点出故障,不影响正常使用。

如在master上执行

./bin//storm nimbus > /dev/null 2>&1 &

./bin/storm logviewer >/dev/null 2>&1 & 

./bin/storm ui > /dev/null 2>&1 &    // storm.yaml 中配置ui.port=8090,默认是8080,与spark_webui_port重了

slave01上执行

./bin/storm supervisor > /dev/null 2>&1 &

./bin//storm nimbus > /dev/null 2>&1 &

./bin/storm logviewer >/dev/null 2>&1 & 

slave02上执行

./bin/storm supervisor > /dev/null 2>&1 &

./bin/storm logviewer >/dev/null 2>&1 & 

在3个节点上分别执行jps确认各进程都正常启动,如下

master:

hadoop@master:~/bigdata/storm/conf$ jps

16078 logviewer
27984 Jps
15601 core
13969 NameNode
15250 nimbus
14194 SecondaryNameNode
18546 QuorumPeerMain
21588 ConsoleConsumer
13049 core
18682 Kafka
14366 ResourceManager


slave01上:

27140 Jps
23396 logviewer
23094 QuorumPeerMain
23721 Supervisor
3787 Worker
23213 nimbus


http://master:8090可登录查看storm ui集群情况。目前奇怪的一点是,supervisor summary中每次只能显示一个节点,每刷新一次换一个,不知道什么原因。有知道的可告知下。





备注:

http://storm.apache.org/releases/current/Setting-up-a-Storm-cluster.html  中的内容偏旧,没有更新了。




原创粉丝点击