Apache-Storm 集群

【【【 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任务中如何被切分。

    1. Shuffle grouping:随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。
    2. Fields grouping:根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。
    3. Partial Key grouping:根据指定字段分割数据流,并分组。类似Fields grouping。
    4. All grouping:tuple被复制到bolt的所有任务。这种类型需要谨慎使用。
    5. Global grouping:全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。
    6. None grouping:无需关心流是如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。
    7. Direct grouping:这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。
    8. 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 异常则, 编辑 /etc/bin/yum 文件

将文件头部的

#!/usr/bin/python

改为如下内容:

#!/usr/bin/python2.6


   三、storm 安集群配置;

    1.     系统:Centos6.7
    2.     内核:2.6.32-573.el6.x86_64
    3.     安装目录:/opt/storm
    4.     数据日志目录:/opt/storm/{data,logs}
    5.     用户组权限:deploy
    6. 机器hostname需要在hosts里面配置关系映射:

    zoo1 - 10.207.101.101

    zoo2 - 10.207.101.102

    zoo3 - 10.207.101.103

    集群说明

    1.   主节点(nimbus)    zks1  
    2.   任务节点(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:

     - "10.207.101.101"

     - "10.207.101.102"

     - "10.207.101.103"

 nimbus.host: "10.207.101.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"

 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、任务节点启动脚步


vim supervisor_logviewer.sh

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

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

    # ps -ef|grep storm 

    # netstat -ano |grep 8090

时间: 2024-10-25 21:31:32

Apache-Storm 集群的相关文章

Apache Storm 集群环境搭建

Apache storm 是一个由twitter开源的大数据处理系统,与其他系统不同的是,storm旨在用于分布式实时处理并且与语言无关.笔者所认知的storm使用场景诸 如 实时日志分析.网站用户行为实时分析.实时计算等,目前很多公司也都把storm作为自己的大数据架构的一部分,来实现一些实时业务的处理. 相信大家都和我有一样的认知,那就是现在的技术都是项目驱动模式,没有最好的技术,只有最适合自己项目的技术.下面先跟大家分享一下我对storm的一些简单了解: storm的优点: 1.简单的编程

安装storm集群

手工安装Storm集群 注:最新的Storm已不再必须依赖ZeroMQ,各种依赖的库和软件也已经有更新的版本. 要手工安装Storm,需要先安装以下软件 Zookeeper集群(安装方法详见管理向导) Java6.0 Python2.6.6 Unzip命令 NOTE: Nimbus和管理进程将要依赖Java.Python和unzip命令 安装本地库: 安装ZeroMQ: 1 wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz

Storm集群安装部署步骤【详细版】

作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1. Storm集群组件 Storm集群中包含两

storm文档(11)----搭建storm集群

转载请注明出处:http://blog.csdn.net/beitiandijun/article/details/41684717 源地址:http://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html 本文叙述了storm集群搭建和运行步骤.如果你打算在AWS上进行的话,可以使用storm-deploy项目.storm-deploy在EC2上完全自动进行下载.配置.以及storm集群的安装等步骤.它也为你配置了Gan

Storm集群的安装配置

Storm集群的安装分为以下几步: 1.首先保证Zookeeper集群服务的正常运行以及必要组件的正确安装 2.释放压缩包 3.修改storm.yaml添加集群配置信息 4.使用storm脚本启动相应服务并查看服务状态 5.通过web查看storm集群的状态 安装Storm之前首先保证之前安装的Zookeeper服务正常运行,包括配置hosts映射,主机名修改,防火墙都已经设置完好 Storm是由java编写,因此必须依赖JDK运行,系统首先应正确安装JDK 部分需要依赖Python,红帽系列L

storm 集群配置

配置storm集群的过程中出现写问题,记录下来 1.storm是通过zookeeper管理的,先要安装zookeeper,从zk官网上下来,我这里下下来的的3.4.9,下载后移动到/usr/local,并解压. tar -zxvf zookeeper-3.4.9.tar.gz 2.进入conf目录,复制zoo_sample.cfg且改名未zoo.cfg,修改zoo.cfg配置文件 cp zoo_sample.cfg /usr/local/zookeeper-3.4.9/conf/zoo.cfg

Storm集群组件和编程模型

 Storm工作原理: Storm是一个开源的分布式实时计算系统,常被称为流式计算框架.什么是流式计算呢?通俗来讲,流式计算顾名思义:数据流源源不断的来,一边来,一边计算结果,再进入下一个流. 比如一般金融系统一直不断的执行,金融交易.用户全部行为都记录进日志里,日志分析出站点运维.猎户信息.海量数据使得单节点处理只是来.所以就用到分布式计算机型,storm 是当中的典型代表之中的一个,一般应用场景是:中间使用一个消息队列系统如kafka,先将消息缓存起来,storm 中有非常多的节点,分布

Storm集群安装详解

Storm集群安装详解 storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器上执行. 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1.   Strom集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工

Storm 集群安装配置

本文详细介绍了 Storm 集群的安装配置方法.如果需要在 AWS 上安装 Storm,你应该看一下 storm-deploy 项目.storm-deploy 可以自动完成 E2 上 Storm 集群的准备.配置.安装的全部过程,同时还设置好了 Ganglia,方便监控 CPU.磁盘以及网络的使用信息. 如果你在使用 Storm 集群时遇到问题,请先查看“问题与解决”一文中是否已有相应的解决方案.如果检索不到有效的解决方法,请向社区的邮件列表发送关于问题的邮件. 以下是安装 Storm 的步骤:

通过 IDE 向 Storm 集群远程提交 topology

转载: http://weyo.me/pages/techs/storm-topology-remote-submission/ 作为一个懒癌晚期患者,虽然 Storm 只需要一条命令的任务提交方式已经够简单了,但还是一直想要有种更简(tou)单(lan)的方式,比如要是在 Windows 下写完代码之后可以直接提交任务而不需要手动把 jar 包拷到服务器上再提交那定是极好的了.谷歌了一下终于在墙外找到了解决方法: Submitting a topology to Remote Storm Cl