zoukankan      html  css  js  c++  java
  • Storm 集群

      Apache Storm
    Storm是一个分布式的,可靠的,容错的数据流处理系统。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。

    1、Storm组件
    在Storm集群中、有两类节点:主节点master node和工作节点worker nodes。

    主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。

    一个Storm拓扑结构在不同的机器上运行着众多的工作节点。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。

    2、Zookeeper
    Zookeeper是完成Supervisor和Nimbus之间协调的服务。

    而应用程序实现实时的逻辑则被封装进Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。

    3、Spout
    Spout从来源处读取数据并放入topology。

    Spout分成可靠和不可靠两种;当Storm接收失败时,可靠的Spout会对tuple(元组,数据项组成的列表)进行重发;而不可靠的Spout不会考虑接收成功与否只发射一次。而Spout中最主要的方法就是nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回。

    4、Bolt
    Topology中所有的处理都由Bolt完成。Bolt从Spout中接收数据并进行处理,如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。而Bolt中最重要的方法是execute(),以新的tuple作为参数接收。不管是Spout还是Bolt,如果将tuple发射成多个流,这些流都可以通过declareStream()来声明。

    5、Stream Groupings
    Stream Grouping定义了一个流在Bolt任务中如何被切分。

    Shuffle grouping:
    //  随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。
    Fields grouping
    //  根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。
    Partial Key grouping
    //  根据指定字段分割数据流,并分组。类似Fields grouping。
    All grouping
    //  tuple被复制到bolt的所有任务。这种类型需要谨慎使用。
    Global grouping
    //  全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。
    None grouping
    //  无需关心流是如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。
    Direct grouping
    //  这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。
    Local or shuffle grouping
    //  如果目标bolt有一个或多个任务在同一工作进程,tuples 会打乱这些进程内的任务。否则,这就像一个正常的 Shuffle grouping。    

      Apache-strom 必须要求Python 2.6以上
      1、升级 Python 官方下载地址:
    https://www.python.org/ftp/python/

    wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
    wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
    # tar -xf Python-3.6.0.tgz
    # mv Python-3.6.0 /usr/local/python
    # cd /usr/local/python
    # ./configure --prefix=/usr/local/python
    # make 
    # make install
    # mv /usr/bin/python /usr/bin/python_old
    # ln -s /usr/local/python/bin/python3.6 /usr/bin/python
    # python -V


    2、如发现yum 异常则, 查看编辑 /usr/bin/yum 文件

    将文件头部的
    #!/usr/bin/python
    改为以下:(因为系统默认是2.6)
    #!/usr/bin/python2.6
    

      

    三、storm 安集群配置;(具体根据线上环境资源进行设置)

    系统:Centos6.7
    内核:2.6.32-573.el6.x86_64
    安装目录:/opt/storm
    数据日志目录:/opt/storm/{data,logs}
    用户组权限:deploy
    机器 hostname 需要在 hosts 里面配置关系映射:
    zks1 - 192.168.1.101
    zks2 - 192.168.1.102
    zks3 - 192.168.1.103
    zoo1 - 192.168.1.101 - myid1
    zoo2 - 192.168.1.102 - myid2
    zoo3 - 192.168.1.103 - myid2
    
    

    四、集群说明

    主节点 (nimbus)  zks1
    任务节点 (supervisor)   zks2   zks3 等
    注:storm主节点、任务节点安装配置完全一致。

    1、下载安装配置:官方下载地址:
    http://mirrors.hust.edu.cn/apache/storm/

    http://www-eu.apache.org/dist/storm/apache-storm-1.0.3/apache-storm-1.0.3.tar.gz
    http://mirrors.hust.edu.cn/apache/storm/apache-storm-1.0.2/apache-storm-1.0.2.tar.gz
    # tar -xf apache-storm-1.0.2.tar.gz
    # cd apache-storm
    # cat apache-storm-0.9.6/conf/storm.yaml |grep -v ^# |grep -v ^$
    // ********** //
    storm.zookeeper.servers:
    - "192.168.1.101" - "192.168.1.102" - "192.168.1.103" nimbus.host: "192.168.1.101" storm.zookeeper.port: 2181 ui.port: 8090 storm.local.dir: "/opt/apache-storm-0.9.6/data" supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 - 6704 worker.childopts: "-Xmx2g"
    # worker.heap.memory.mb: 2048
    # // 调整分配给每个 worker 的内存 // logviewer.port:
    18090 topology.max.spout.pending: 1000 topology.message.timeout.secs: 300 storm.messaging.netty.server_worker_threads: 10
    // ********** //

    2、主节点启动测验:

    启动 nimbus
    # nohup ./bin/storm nimbus >/dev/null 2>&1 &
    启动 UI
    # nohup ./bin/storm ui >/dev/null 2>&1 &

    3、任务节点启动脚步

    # cat supervisor_logviewer.sh
    nohup ./bin/storm supervisor >/dev/null 2>&1 &
    nohup ./bin/storm logviewer >/dev/null 2>&1 &

    4、进程检测

    # ps -ef|grep storm 
    # netstat -ano |grep 8090
    
  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/sharesdk/p/7866488.html
Copyright © 2011-2022 走看看