• JStorm集群的安装和使用


    0 JStorm概述

    JStorm是一个分布式的实时计算引擎。从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用;从系统角度, JStorm是一套类似MapReduce的调度系统; 从数据的角度,JStorm是一套基于流水线的消息处理机制。

    详情见:JStorm概叙及应用场景

    1 JStorm集群组件

    Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:

      • 主控节点(Master Node)上运行一个被称为Nimbus的后台程序,Nimbus的作用类似于Hadoop中JobTracker的角色。Nimbus负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。
      • 每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序,Supervisor类似于Hadoop中的TaskTracker。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。

    Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。

    Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm集群不在进程内保存状态,所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以在任意时刻用kill -9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作,运行中的Topologies不会受到影响。

    2 JStorm集群架构

    2.1 架构

    参考资料:https://github.com/alibaba/jstorm/wiki/JStorm%E6%9E%B6%E6%9E%84

    2.2 相关术语

    Nimbus

    Supervisor、Worker(进程)、Task(线程)、Topology(Spout、Bolt)、Tupple

     详情可参看:5分钟了解JStorm基础概念

    3 JStorm集群安装

    3.1 安装Zookeeper集群

    Zookeeper的安装和使用——MarchOn

    3.2 安装JStorm

    需要在各节点上安装JStorm,这里以jstorm-0.9.6.3为例,下载并解压,进入jstorm-0.9.6.3

    3.2.1 配置环境变量

    编辑/etc/profile,加入如下内容:

    export JAVA_HOME=/usr/jdk/jdk1.7.0_45
    export PATH=$JAVA_HOME/bin:$PATH
    export JSTORM_HOME=/usr/local/jstorm/jstorm-0.9.6.3/
    export PATH=$JSTORM_HOME/bin:$PATH//将JSTORM加入构建路径是为了方便提交拓扑,也可以不配置而是直接在bin下执行 storm 命令(还有个bin/start.sh,不过该命令运行时有问题,所以没用之)

    接着执行: source /etc/profile ,上述环境变量对机器上的所有用户有效

    3.2.2 修改conf/storm.yaml

    1. storm.zookeeper.servers: JStorm集群所用的Zookeeper集群的地址(不要包含端口,否则会启动失败。端口通过storm.zookeeper.port配置)
       storm.zookeeper.servers:
           - "192.168.6.131"
           - "192.168.6.132"
           - "192.168.6.133"
    2. storm.zookeeper.port:JStorm所用的Zookeeper的端口,默认为2181。如果不使用默认端口,可以配此项
    3. storm.zookeeper.root: JStorm在Zookeeper中的根目录,默认为“/jstorm”(不用事先在Zookeeper创建)。当多个JStorm集群共享一个Zookeeper时,需要设置不同值
    4. nimbus.host: Nimbus节点的地址,以便下载Topologies的jars、confs等文件。//也可不指定,启动nimbus节点后由于与Zookeeper交互会知道是哪个
    5. storm.local.dir: Nimbus和Supervisor进程用于存储少量状态数据,如jars、confs等的本地磁盘目录,需要保证JStorm程序对该目录有写权限
      storm.local.dir: "%JSTORM_HOME%/../jstorm_data"
    6. java.library.path: Zeromq 和java zeromq library的安装目录,默认"/usr/local/lib:/opt/local/lib:/usr/lib",默认即可
    7. supervisor.slots.ports:配置该Supervisor节点运行的Woker能使用哪些端口,每个worker独占一端口用于接收消息,因此也定义了可运行的Woker数量
       supervisor.slots.ports:
          - 6800
          - 6801
          - 6802
          - 6803
          - 6804
          - 6805
          - 6806
          - 6807

     3.2.3 启动/停止

    和Zookeeper一样,JStorm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么JStorm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。

    确定哪些节点要作为Nimbus节点,哪些作为Supervisors节点(一个节点可以同时是Nimbus、Supervisor节点),分别启动:

    1. 守护进程方式启动Nimbus: bin/jstorm nimbus > /dev/null 2>&1 & ,检查logs/nimbus.log看有无错误
    2. 守护进程方式启动Supervisor:   bin/jstorm supervisor > /dev/null 2>&1 & , 检查logs/supervisor.log看有无错误
    3. 停止:可以直接kill Nimbus和Supervisor。(如果有拓扑正在运行则会有worker进程,先kill掉拓扑这样woker进程就会结束)

    4 提交拓扑

    在一个节点执行以下命令:[注意配置JSTorm环境变量以便于执行jstorm命令]

    1. 提交拓扑命令: jstorm jar jar程序 拓扑入口 拓扑名 
    2. kill 拓扑命令: jstorm kill 拓扑名 秒数 

    (拓扑入口一般就是main函数所在类;拓扑名是自取的名字;未指定秒数的话会完成所有清除工作后再结束)

     其他jstorm命令可以参见:Command-line-client

     

    5 JStorm UI

    JStorm UI用来监控整个JStorm集群的节点及拓扑运行情况。它就是一个war包,因此可以放在任何有Tomcat的机器上。安装方法很简单,如下:

      1. 把storm.yaml复制到tomcat所在机器的~/.jstorm/storm.yaml。(JStorm UI程序启动时读该配置文件。通过配置storm.yaml的ui.clusters可以使一个jstorm ui管理多个JStorm集群
      2. 将安装包置于Tomcat:把$JSTORM_HOME/jstorm-ui-0.9.6.3.war复制到webapps下并mv ROOT ROOT.old;ln -s jstorm-ui-0.9.6.3 ROOT

     运行Tomcat后就可以在浏览器访问JStorm UI了,如http://192.168.6.134:8080/,如:(图中的Ports就跟上面说的supervisor.slots.ports的数量有关)

     

    5 参考资料

    1. http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html(JStorm安装)
    2. http://pan.baidu.com/s/1bHamHg(JStorm集群安装文档)
    3. http://blog.csdn.net/xiaolang85/article/details/38492277(JStorm常见问题及解决方案)
    4. https://github.com/techdocscn/storm/blob/master/source/documentation/Command-line-client.md(JStorm命令)
  • 相关阅读:
    时间戳(UnixTimestamp)与 《2038年问题》
    端口相关命令
    Ubuntu中的在文件中查找和替换命令
    A Reusable Aspect for Memory Profiling
    acc文件的运行
    A Reusable Aspect for Memory Allocation Checking
    ACC常用语句
    aspectC++常用命令
    c++调用DOS命令,不显示黑屏
    fopen文件目录问题
  • 原文地址:https://www.cnblogs.com/z-sm/p/5691768.html
Copyright © 2020-2023  润新知