关于storm集群的安装和相关概念详解

  1. storm的基本介绍
    storm是twitter公司开源捐献给apache的一个实时流式处理的框架
  2. storm的基本架构
    storm是一个主从的架构
    nimbus:storm的主节点,负责接收客户端提交的任务,以及分配任务给 supervisor执行
    supervisor:storm的从节点,主要就是用于执行各种任务
    worker:supervisor的任务需要执行,都是在进程worker当中执行
    Execuotr:最后真正执行任务的,跑数据的,都是Executor,说白了就是线程
    Topology:我们提交一个strom的任务,就是提交了一个topology
  3. storm的集群的安装
    第一步:解压strom安装包
    tar -zxvf apache-storm-1.1.1.tar.gz -C …/servers/
    第二步:修改配置文件(这里的配置文件是conf目录下的storm.yaml文件)
    storm.zookeeper.servers:
  • “node01” (这是linux的主机名称)
  • “node02”
  • “node03”
    nimbus.seeds: [“node01”, “node02”, “node03”]
    storm.local.dir: “/export/servers/apache-storm-1.1.1/stormdata”
    ui.port: 8088
    supervisor.slots.ports:
  • 6700
  • 6701
  • 6702
  • 6703
    第三步:安装包分发到其他机器上面去

scp -r apache-storm-1.1.1/ node02:$PWD

scp -r apache-storm-1.1.1/ node03:$PWD
第四步:storm集群的启动
第一台机器启动命令:
nohup bin/storm nimbus 2>&1 &
nohup bin/storm ui 2>&1 &
nohup bin/storm supervisor 2>&1 &

第二台启动命令:
nohup bin/storm nimbus 2>&1 &
nohup bin/storm supervisor 2>&1 &

第三台机器启动
nohup bin/storm nimbus 2>&1 &
nohup bin/storm supervisor 2>&1 &
4. storm任务的并行度
调整进程数量
config.setNumWorkers(3);

调整线程数量
topologyBuilder.setSpout(“randomSpout”,new RandomSpout(),3);
topologyBuilder.setBolt(“splitBolt”,new SplitBolt(),3).shuffleGrouping(“randomSpout”);
topologyBuilder.setBolt(“countBolt”,new CountBolt(),3).shuffleGrouping(“splitBolt”);

  1. storm当中数据的分发策略
    Storm当中的分组策略,一共有八种:
    所谓的grouping策略就是在Spout与Bolt、Bolt与Bolt之间传递Tuple的方式。总共有八种方式:
    1)shuffleGrouping(随机分组)随机分组;将tuple随机分配到bolt中,能够保证各task中处理的数据均衡;
    2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)
    按字段分组; 根据设定的字段相同值得tuple被分配到同一个bolt进行处理;
    举例:builder.setBolt(“mybolt”, new MyStoreBolt(),5).fieldsGrouping(“checkBolt”,new Fields(“uid”));
    说明:该bolt由5个任务task执行,相同uid的元组tuple被分配到同一个task进行处理;该task接收的元祖字段是mybolt发射出的字段信息,不受uid分组的影响。
    该分组不仅方便统计而且还可以通过该方式保证相同uid的数据保存不重复(uid信息写入数据库中唯一);

3)allGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)广播发送:所有bolt都可以收到该tuple
4)globalGrouping(全局分组,将Tuple分配到task id值最低的task里面)全局分组:tuple被发送给bolt的同一个并且最小task_id的任务处理,实现事务性的topology
5)noneGrouping(随机分派)不分组:效果等同于shuffle Grouping.
6)directGrouping(直接分组,指定Tuple与Bolt的对应发送关系)
直接分组:由tuple的发射单元直接决定tuple将发射给那个bolt,一般情况下是由接收tuple的bolt决定接收哪个bolt发射的Tuple。这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。 只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来获取处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)。
7)Local or shuffle Grouping本地或者随机分组,优先将数据发送到本机的处理器executor,如果本机没有对应的处理器,那么再发送给其他机器的executor,避免了网络资源的拷贝,减轻网络传输的压力
8)customGrouping (自定义的Grouping)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Storm是一个分布式实时计算系统,它可以在一个集群中运行多个计算节点,实时处理数据流。下面是Storm集群的工作流程以及运行时的原理: 1. 架构概述 Storm集群架构包括以下几个主要的组件: - Nimbus:是Storm集群的主节点,负责协调和管理整个集群的运行。它负责分配任务、监控任务的执行情况、调度和负载均衡等工作。 - Supervisor:是Storm集群的工作节点,负责实际执行计算任务。每个Supervisor节点都会运行一个或多个工作进程(Worker),每个Worker执行一个或多个计算任务(Topology)。 - ZooKeeper:是一个分布式协调系统,用于协调Storm集群中各个组件之间的通信和协作。 - Topology:是Storm集群中的一个计算任务,由多个Spout和Bolt组成,用于实时处理数据流。Topology可以在Storm集群中部署和运行,由Nimbus节点分配到各个Supervisor节点上执行。 2. 工作流程 Storm集群的工作流程如下: - 开发Topology:首先需要开发一个Topology,包括定义Spout和Bolt的计算逻辑、数据流的处理方式等。 - 提交Topology:将Topology提交到Nimbus节点,由Nimbus节点负责分配任务到各个Supervisor节点上执行。 - 分配任务:Nimbus节点根据集群资源情况和负载均衡策略,将Topology的各个组件分配到不同的Supervisor节点上执行。 - 执行任务:Supervisor节点接收到任务后,启动对应的Worker进程,执行Topology的计算任务。 - 数据处理:Spout和Bolt组件接收输入数据,并按照定义好的处理方式进行数据转换、过滤、聚合等操作。 - 数据传输:Spout和Bolt之间通过数据流进行数据传输。数据流是Storm的核心概念,它用于实时传输数据,可以在Spout和Bolt之间建立任意的连接关系。 - 拓扑调度:Nimbus节点会监控集群中各个组件的运行情况,根据需要进行拓扑调度,例如动态调整任务分配、调整数据流连接方式等。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理,确保数据处理的正确性和可靠性。 3. 运行时原理 Storm集群的运行时原理主要包括以下几个方面: - 数据流传输:Storm集群中的数据流是基于Tuple的,每个Tuple包含一个或多个字段,可以表示任意类型的数据。Spout和Bolt之间通过数据流传输Tuple,实现数据的实时处理和传输。 - 执行模型:Storm采用的是多线程模型,每个Worker进程会启动多个线程,用于处理数据流和计算任务。Spout和Bolt之间采用异步方式传递数据,可以充分利用多线程处理数据。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理。例如,当一个节点出现故障时,Nimbus节点会将该节点上的任务重新分配到其他节点上执行,确保数据处理的正确性和可靠性。 - 负载均衡:Storm集群采用的是负载均衡策略,可以根据集群资源情况和任务负载情况,动态调整任务分配和数据流传输,实现集群资源的充分利用和任务的高效执行。 总的来说,Storm集群的架构和工作流程比较复杂,但是它提供了一种高效、可靠、实时的数据处理方案,可以应用于各种实时数据分析和处理场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值