zoukankan      html  css  js  c++  java
  • storm集群相关资料

    1. Storm集群组件

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

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

                                                              

                                                                                         Storm集群组件

    Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。此外,Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm集群所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以用kill -9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作。这个设计使得Storm集群拥有不可思议的稳定性。

    Storm 的容错分为如下几种类型。
    (1)工作进程worker 失效:如果一个节点的工作进程worker“死掉”,supervisor 进程会尝试重启该worker。如果连续重启worker 失败或者worker 不能定期向Nimbus 报告“心跳”,Nimbus 会分配该任务到集群其他的节点上执行。
    (2)集群节点失效:如果集群中某个节点失效,分配给该节点的所有任务会因超时而失败,Nimbus 会将分配给该节点的所有任务重新分配给集群中的其他节点。
    (3)Nimbus 或者supervisor 守护进程失败:Nimbus 和supervisor 都被设计成快速失败(遇到未知错误时迅速自我失败)和无状态的(所有的状态信息都保存在Zookeeper 上或者是磁盘上)。Nimbus 和supervisor 守护进程必须在一些监控工具(例如,daemontools 或者monitor)的辅助下运行,一旦Nimbus 或者supervisor 失败,可以立刻重启它们,整个集群就好像什么事情也没发生。最重要的是,没有工作进程worker 会因为Nimbus 或supervisor 的失败而受到影响,Storm 的这个特性和Hadoop 形成了鲜明的对比,如果JobTracker 失效,所有的任务都会失败。
    (4)Nimbus 所在的节点失效:如果Nimbus 守护进程驻留的节点失败,工作节点上的工作进程worker 会继续执行计算任务,而且,如果worker 进程失败,supervisor 进程会在该节点上重启失败的worker 任务。但是,没有Nimbus的影响时,所有worker 任务不会分配到其他的工作节点机器上,即使该worker所在的机器失效。

    2. 安装Storm集群

    下面是接下来需要依次完成的安装步骤:

    • 搭建Zookeeper集群;
    • 安装Storm依赖库;
    • 下载并解压Storm发布版本;
    • 修改storm.yaml配置文件;
    • 启动Storm各个后台进程。

    2.1 搭建Zookeeper集群本博客中已有 (在此不再介绍

    注意事项:

    1. 由于Zookeeper是快速失败(fail-fast)的,且遇到任何错误情况,进程均会退出,因此,最好能通过监控程序将Zookeeper管理起来,保证Zookeeper退出后能被自动重启。
    2. Zookeeper运行过程中会在dataDir目录下生成很多日志和快照文件,而Zookeeper运行进程并不负责定期清理合并这些文件,导致占用大量磁盘空间,因此,需要通过cron等方式定期清除没用的日志和快照文件。

    2.2 安装Storm依赖库

    接下来,需要在Nimbus和Supervisor机器上安装Storm的依赖库,具体如下:

    前期准备:

    yum install -y e2fsprogs-devel pkgconfig git autoconf automake unzip libtool

    2.2.1 安装ZeroMQ 2.1.7:

    wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
    tar -xzf zeromq-2.1.7.tar.gz
    cd zeromq-2.1.7
    ./configure
    make
    make install

      

    2.2.2 安装JZMQ:

    为了保证JZMQ正常工作,可能需要完成以下配置:

    1. 正确设置 JAVA_HOME环境变量
    2. 安装Java开发包
    git clone https://github.com/nathanmarz/jzmq.git
    cd jzmq
    ./autogen.sh ./configure make make install

    检查zeroMQ和jzmq的安装:

    查看zeromq和jzmq的库是否已经安装到位,一般在/usr/local/lib目录:

    ls -l /usr/local/lib

    2.2.3 安装Java 6

    2.2.4 安装Python2.6.6

    2.3 下载并解压Storm发布版本  (这里使用Storm0.8.2)

    2.4 修改storm.yaml配置文件  (严格按模板规则填写,每行顶头,前面不允许留有空格,并且“-”列上下必须对齐!!!)

    1) storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下:

    storm.zookeeper.servers:
      - "111.222.333.444"
      - "555.666.777.888"

    如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项

    2) storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如:

    storm.local.dir: "/home/admin/storm/workdir"

    3) nimbus.host: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如:

    nimbus.host: "111.222.333.444"

    4) supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:

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

    5)定义DRPC服务器位置:

     drpc.servers:
         - "172.16.65.25"

     需要启动drpc服务时的命令:bin/storm drpc &       (端口可以不用配置,默认是:3772)

    2.5 启动Storm各个后台进程

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

    以下是启动Storm各个后台进程的方式:

    1. Nimbus: 在Storm主控节点上运行"bin/storm nimbus >/dev/null 2>&1 & "启动Nimbus后台程序,并放到后台执行;    默认端口:6627
    2. UI: 在Storm主控节点上运行"bin/storm ui >/dev/null 2>&1 & "启动UI后台程序,并放到后台执行;                             开户端口:8080
    3. 拷贝storm文件夹到其他机器后启动Supervisor,运行"bin/storm supervisor >/dev/null 2>&1 & "启动Supervisor后台程序,并放到后台执行;

    启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

    注意事项:

    1. Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
    2. 经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
    3. 为了方便使用,可以将bin/storm加入到系统环境变量中。

    至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

    查看当前storm任务列表:storm list

    3. 向集群提交任务

    1)启动Storm Topology:

    storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3

    其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为org.me.MyTopology执行时需要传入的参数。

    2)停止Storm Topology:

    storm kill {toponame}

    其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。

  • 相关阅读:
    marginleft IE Firefox 浏览器下的不同
    提取HTML代码中文字的C#函数
    分享按钮汇总
    jquery UI集合
    向用户授予对象特权
    oracle中使用聚合函数
    创建对象类型
    jdk1.6.0_01配置系统环境变量
    修改表
    将一个实体映射到多张数据库表
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/4333194.html
Copyright © 2011-2022 走看看