Storm安装配置



Storm简介
 Apache Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架,它原来是由BackType开发,后BackType被Twitter收购,将Storm作为Twitter的实时数据分析系统。
    Storm能实现高频数据和大规模数据的实时处理。
    官网资料显示storm的一个节点1秒钟能够处理100万个100字节的消息(
IntelE5645@2.4Ghz的CPU,24GB的内存)。
 官网
http://storm.apache.org
 Storm和Hadoop的比较
  数据来源
     HADOOP处理的是HDFS上TB级别的数据(历史数据),STORM是处理的是实时新增的某一笔数据(实时数据);
  处理过程
     HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT);
  是否结束
     HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;
  处理速度
    HADOOP是以处理HDFS上TB级别数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;
  适用场景
    HADOOP是在要处理批量数据时用的,不讲究时效性,STORM是要处理某一新增数据时用的,要讲时效性。
  
  但凡离线处理,一般都是操作T+1  ----->依赖磁盘IO、网络IO
  但凡实时流处理,都是处理一笔数据---->内存计算
Storm的设计思想
 Storm是对流Stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组。
    Storm将流中元素抽象为Tuple,一个tuple就是一个值列表——value list,list中的每个value都有一个name,并且该value可以是基本类型,字符类型,字节数组等,当然也可以是其他可序列化的类型。
    Storm认为每个stream都有一个stream源,也就是原始元组的源头,所以它将这个源头称为Spout。
  有了源头即spout也就是有了stream,那么该如何处理stream内的tuple呢。将流的状态转换称为Bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它也可以发送新的流给其他bolt使用,这样一来,只要打开特定的spout(管口)再将spout中流出的tuple导向特定的bolt,又bolt对导入的流做处理后再导向其他bolt或者目的地。
  以上处理过程统称为Topology即拓扑。拓扑是storm中最高层次的一个抽象概念,它可以被提交到storm集群执行,一个拓扑就是一个流转换图,图中每个节点是一个spout或者bolt,图中的边表示bolt订阅了哪些流,当spout或者bolt发送元组到流时,它就发送元组到每个订阅了该流的bolt(这就意味着不需要我们手工拉管道,只要预先订阅,spout就会将流发到适当bolt上)。
    拓扑的每个节点都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。

开发Topology注意事项:
 spout和bolt的ID不能以__开头,这些是系统保留的
 同一个topology中spout和bolt不能使用相同的ID
 集群中topology的名称不能重复
相关名词解释:
 Topology用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job
 Stream 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理
 Spouts 消息源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple
 Bolts 消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生新的输出数据流,可执行过滤,聚合,查询数据库等操作
 Task 每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.
 Stream groupings 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如何分配给Bolts们.

安装配置Storm集群:
 下载地址:
https://storm.apache.org/downloads.html
 在/opt目录下面进行安装
 安装并zookeeper集群(要保证集群各个节点的时间保持一致)
   master
   slave01
   slave02
 解压重命名apache-storm-1.0.2.tar.gz
   opt]# tar -zxf soft/apache-storm-1.0.2.tar.gz
   opt]# mv apache-storm-1.0.2 storm
 
 将storm添加进入环境变量
 
 修改文件conf/storm-env.sh
   export JAVA_HOME=/opt/jdk
   export STORM_CONF_DIR="/opt/storm/conf"
 修改文件conf/storm.yaml
 ① storm.zookeeper.servers
  storm.zookeeper.servers:
   - "master"
   - "slave01"
   - "slave02"
  如果不是默认的2181端口,可以配置storm.zookeeper.port
 ② storm.local.dir-->临时文件
  storm.local.dir: "/opt/storm/tmp"
 ③ nimbus.seeds-->storm的HA配置
  nimbus.seeds: ["master","slave01"]
 ④ supervisor.slots.ports
  Supervisor.slots.ports:
   - 6700
   - 6701  
   - 6702
   - 6703
 注意:
  》 使用两个空格作为一级缩进是yaml的约定,不能使用制表符(Tab)来代替
  》 以“:”为结束符的字符串,代表了一个键名,“:”后面则是键值。“:”和键值之间必须有至少一个空格。
  》 列表的元素前面的“-”必不可少,并且要跟随至少一个空格。也可以使用- [value1, value2, value3] 表示列表

 启动:
  在master和slave01的/opt/storm执行以下命令:
   nohup bin/storm nimbus >/dev/null 2>&1 &
  在slave01和slave02的/opt/storm执行以下命令:
   nohup bin/storm supervisor >/dev/null 2>&1 &
  在storm集群中的任何一台机器启动UI--->hostname
   nohup bin/storm ui >/dev/null 2>&1 &
   通过浏览器来查看storm集群的运行状态:http://hostname:8080
  日志的监控:
   一般都是supervisor节点开启日志logviewer
   nohup bin/storm logviewer >/dev/null 2>&1 &
=================================================================================================
在集群中运行storm程序
 将storm程序打成一个jar在storm集群中运行,命令格式如下:
 storm]# bin/storm jar path_to_jar class_name [parameters]
 eg.
 storm]# bin/storm jar /opt/jars/storm/storm-sum.jar com.uplooking.bigdata.storm.cluster.RemoteSumTopology adfasdfszd
杀死一个storm程序
 两种方式
 一:在stormUI中kill掉
 二:使用命令bin/storm kill topologyName
  eg.
  storm]# bin/storm kill RemoteSumTopology
 
 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值