Storm简介、环境搭建

一、简介

  • Storm是Twitter开源的一个分布式的实时计算系统,用于数据的实时分析,持续计算,分布式RPC等等。
  • 实时计算需要解决一些什么问题?
    1)、最显而易见的就是实时推荐系统,比如我们在淘宝等电商网站去买东西,我们会在网页旁边或者底端看到与自己所需要商品相关的系列产品。这就是使用类似storm实时计算去做的,我们非常熟悉的Hadoop只是做离线的数据分析,无法做到实时。
    2)、比如车流量实时的计算,每天我们北京市的交通情况非常的拥挤,我们可以利用storm为我们实时计算每个路段的拥挤程度等相关路况信息。
    3)、再比如我们非常熟悉的股票,那么股票系统也是一种实时计算的机制,利用storm完全可以实现。

  • 实现一个实时计算系统
    1)、低延迟:都说了是实时计算系统,延迟是一定要低的。
    2)、高性能:可以使用几台普通的服务器建立环境,结约成本。
    3)、分布式:storm非常适合于分布式场景,大数据的实时计算:你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。
    4)、可扩展:伴随着业务的发展,我们数据量、计算量可能会越来越大,所以希望这个系统可扩展。
    5)、容错:这是分布式系统中通用问题,一个节点挂了不能影响我的应用,storm可以轻松做到在节点挂了的时候实现任务转移,并且在节点重启的时候,也就是重新投入生产环境,自动平衡任务。
    6)、可靠性:可靠的消息处理。storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
    7)、快速:系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。
    8)、本地模式:storm有一个“本地模式”,可以在处理过程中完全模拟storm集群,让你可以快速进行开发和单元测试。

  • Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意程序语言来开发应用。
    这里写图片描述

  • Storm体系结构
    1)、Nimbus主节点:主节点通常运行一个后台程序——Nimbus,用于响应分布在集群中的节点,分配任务和检测故障。这个很类似于Hadoop中的Job Tracker。
    2)、Supervisor工作节点:工作节点同样会运行一个后台程序——Supervisor,用于收听工作指派开机与要求运行工作过程。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。
    3)、Zookeeper:是完成Supervisor和Nimbus之间协调的服务。而应用程序实现实时的逻辑则被封装到Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。下面对出现的术语进行深刻解析。
    4)、Topology(拓扑):storm中运行的一个实时应用程序,因为各个组件的消息流动形成逻辑上的一个拓扑结构。一个topology是spouts和bolts组成的图,通过stream groupings将图中的spouts和bolts连接起来。
    这里写图片描述

二、集群环境搭建

  1. 关闭防火墙,修改/etc/hosts配置(三台机器的IP可以相互通信);
  2. 下载并安装JDK7(1.6以上版本),配置JAVA_HOME,CLASSPATH;
  3. 搭建Zookeeper集群(保证3台机器的zookeeper都可调用);
  4. 安装python(最好2.6.6版本以上):
    4.1)、地址:wget https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
    4.2)、解压:tar -zxvf Python-2.6.6.tgz
    4.3)、进入:cd Python-2.6.6
    4.4)、命令1:./configure --prefix=/usr/local/Python2.6.6
    4.5)、命令2:make
    4.6)、命令3:sudo make install
    ** 环境准备工作

  5. 下载:wget http://mirror.bit.edu.cn/apache/incubator/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz
    并解压:tar -zxvf apache-storm-0.9.2-incubating.tar.gz -C /usr/local/

  6. 修改storm.yaml配置文件;
    这里写图片描述
1)、storm.zookeeper.servers:(设置3台zookeeper地址)
2)、nimbus.host:(配置nimbus主节点IP地址)
3)、配置storm数据文件夹和 ui.port:18080
4)、配置supervisor的工作进程(solt槽)
5)、建立文件夹:mkdir /usr/local/apache-storm-0.9.2/data
6)、把apache-storm-0.9.2使用scp命令,到集群的各个服务器中去
7)、分别配置以下/etc/profile的Storm环境变量:
    export JAVA_HOME=/usr/local/jdk1.7
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5
    export STORM_HOME=/usr/local/apache-storm-0.9.2
    export PATH=.;$JAVA_HOME/bin;$ZOOKEEPER_HOME/bin;$STORM_HOME/bin;$PATH
8)、最后分别进行:source /etc/profile
9)、先启动zookeeper集群,然后分别启动运行storm:
    主机器(nimbus运行)storm nimbus &
    从机器(supervisor运行)storm supervisor &
    主机器(ui运行)storm ui & (查看ui)
    主机器(logviewer运行)storm logviewer & (查看工作日志)
    然后再浏览器输入主机器的ip,端口默认8080,这样可以看到storm的一些集群配置
  1. 启动Storm各个后台进程。

8.Storm Hello World

  • 首先编写我们的数据源类:Spout,可以使用两种方式:
    A、继承BaseRichSpout类
    B、实现IRichSpout接口
    *、重点需要几个方法进行重写或实现:open、next Tuple、declareOutputFields

  • 继续编写我们数据处理类:Bolt,可以使用两种方法:
    A、继承BaseBasicBolt类
    B、实现IRichBolt接口
    *、重点需要几个方法进行重写或实现:execute、declareOutputFields

  • 最后编写主函数(Topology)进行提交任务:
    A、在使用Topology的时候,Storm框架为我们提供了两种模式:本地模式和集群模式
    B、本地模式:(无需Storm集群,直接在java中即可运行,一般用于测试和开发阶段)执行运行main函数即可
    C、集群模式:(需要Storm集群,把实现Java程序打包,然后Topology进行提交)需要把应用打成jar,使用storm命令把Topology提交到集群上。
    提交topology命令:storm jar storm01.jar bhz.topoloty.PWTopology1
    查看任务命令:storm list
    另外俩个supervisor节点jps显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值