Storm集群的搭建和使用入门

本文介绍了Apache Storm的架构、编程模型及分组策略,详细讲解了如何搭建Storm集群,包括配置JDK、Zookeeper和Storm。接着展示了如何在Storm中处理日志数据,从编写Spout、Bolt到部署执行。通过实例展示了Storm的实时计算能力。
摘要由CSDN通过智能技术生成

Storm

  • Storm是一个流式计算框架,数据源源不断的产生,源源不断的收集,源源不断的计算。(数据实时产生、实时传输、实时计算、实时展示
  • Storm只负责数据的计算,不负责数据的存储。
  • 2013年前后,阿里巴巴基于storm框架,使用java语言开发了类似的流式计算框架佳作,Jstorm。2016年年底阿里巴巴将源码贡献给了Apache storm,两个项目开始合并,新的项目名字叫做storm2.x。
Storm的架构图:

图片儿来自网络
其中:

  • Nimbus:负责资源分配和任务调度。
  • Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
  • Worker:运行具体处理组件逻辑的进程。
  • Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。
Storm编程模型

在这里插入图片描述

  • DataSource: 数据源
  • Spout:在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。
  • Bolt:在一个topology中接受数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。
  • Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value就行了,所以就是一个value list.
  • Stream:源源不断传递的tuple就组成了stream。
  • Topology:Storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。
分组策略
  1. 随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。 跨服务器通信,浪费网络资源,尽量不适用
  2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。 跨服务器,除非有必要,才使用这种方式。
  3. LocalOrShuffle 分组。 优先将数据发送到本地的Task,节约网络通信的资源。(常用)

安装运行

安装搭建

  1. 前期准备
    准备搭建3节点集群,准备3个虚拟机node1,node2,node3
    配置好hosts映射文件和互相的ssh免密登录
    配置好JDK
    storm是依赖于zookeeper的,搭建storm集群前,必须先把zookeeper集群搭建好

  2. 安装storm
    1 ) 准备好storm安装包apache-storm-1.1.1.tar.gz,下载地址:
    http://storm.apache.org/downloads.html
    2 ) 上传解压重命名为storm到/export/server路径下
    3 ) 修改配置文件 storm.yaml

    cd /export/server/storm/conf/
    vi storm.yaml

    添加如下配置:

    # 指定storm使用的zookeeper集群
    storm.zookeeper.servers:
         - "node1"
         - "node2"
         - "node3"
    # 指定storm集群中的nimbus节点所在的服务器
    nimbus.seeds: ["node1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值