前言

Storm框架在实际项目中已经平稳运行快一年了,也很好的支撑了海量读写器的数据处理需求,不过和RabbitMQ一样,为了项目进度,实际工作中只能尽快的调研,关注一些关键点,其他的细节就只能放一放。这次面试题总结也希望自己能够在关于提升我项目亮点的框架上多下一些功夫,被问到一些技术细节时,能够做到心中有数。

Storm实时流计算框架

  1. Storm与hadoop对比?

    • 应用场景:Storm专注于分布式实时流处理;Hadoop关注的是离线批处理
  2. Storm集群架构是什么样的,简单介绍一下

    Storm是master/slave架构,在传统的master/slave架构中,主节点一般负责任务的接受分配和监控,从节点负责具体任务的执行,Storn框架也类似,但是在其中有一些不同:

    • nimbus主节点依然负责集群中分发任务以及监控
    • supervisor从节点会启动一个worker来执行具体的任务,一个worker就是一个JVM进程

    实际项目中,有四个服务器节点,选择了两台机器部署supervisor,防止单点问题;把nimbus和zookeeper部署在另外一台服务器上,只部署了一个实例,这个是根据Storm官方文档推荐部署的。因为对我们的业务系统来说,nimbus和zookeeper本身负载不算高。

  3. Storm集群中的任务是什么样子的?简单介绍一下

    Storm集群中的任务叫做拓扑,拓扑中包含两种类型的组件:

    • Spoult:负责对接外部数据源,获取数据
    • bolt:负责处理数据

    我们实际项目中,有一个spoult对接RabbitMQ获取读写器实时数据,一个bolt组件进行去重分组以及相关统计信息的计算。处理完毕的数据,会继续传递到RabbitMQ中等待下层服务处理。

  4. Topology在Storm集群中是如何分发的?

    • storm jar命令上传jar包到storm的nimbus节点
    • nimbus节点根据配置的信息查询空闲的worker
    • 分配任务到具体的worker中,worker从nimbus下载待处理的jar包
  5. 具体的线程模型是怎样的?并发度如何设置?

    Storm中多线程的设置叫做并发度,一个bolt或者spoult如果并发度设置大于1的话,就会实例多个,每一个对应一个线程去处理。

    我们实际项目中,从RabbitMQ中获取数据使用了并发度为2的设置,一可以提高处理速度,二可以防止单点问题。bolt实际处理线程设置为10,分别对应了epc尾数0-9,可以并发的处理

  6. 消息是如何分发的?如何进行grouping分组设置?

    storm中可以通过设置grouping分组,来自定义消息的分发细节。比如随机分组,按字段分组

    我们实际项目中,使用的是按字段分组,分组字段是epc的后一位,相同epc尾数的可以被分到同一个线程处理,保证了线程安全问题。

  7. Storm中是如何保证消息可靠性的?

    Storm中消息链中的处理过消息的链条都会产生一个以数据源为tuple头的处理链,链上的每一个节点都需要显式的说明处理成功或者失败,如果有一个没有显式处理,那么这个消息就没有正确处理完毕。如果超时时间范围内没有处理完毕,就算处理失败。

    如果成功处理或者处理失败,Storm框架会回调Spoult中的ack方法或者fail方法,可以在里面做可靠性的后续业务处理。

面试题-Storm框架的更多相关文章

  1. Storm框架:Storm整合springboot

    我们知道Storm本身是一个独立运行的分布式流式数据处理框架,Springboot也是一个独立运行的web框架.那么如何在Strom框架中集成Springboot使得我们能够在Storm开发中运用Sp ...

  2. Storm框架入门

    1 Topology构成 和同样是计算框架的Mapreduce相比,Mapreduce集群上运行的是Job,而Storm集群上运行的是Topology.但是Job在运行结束之后会自行结束,Topolo ...

  3. Storm框架基础(一)

    * Storm框架基础(一) Storm简述 如果你了解过SparkStreaming,那么Storm就可以类比着入门,在此我们可以先做一个简单的比较:  在SparkStreaming中: 我们曾尝 ...

  4. java面试题-常用框架

    Spring Spring 是什么 一个开发框架,一个容器,主要由面向切面AOP 和依赖注入DI两个方面,外加一些工具 AOP和IOC AOP 面向切面 AOP是一种编程思想,主要是逻辑分离, 使业务 ...

  5. [大数据面试题]storm核心知识点

    1.storm基本架构 storm的主从分别为Nimbus.Supervisor,工作进程为Worker. 2.计算模型 Storm的计算模型分为Spout和Bolt,Spout作为管口.Bolt作为 ...

  6. 面试题: Spring 框架 Bean的生命周期

    [Java面试五]Spring总结以及在面试中的一些问题.   1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本 ...

  7. 【分布式】流式计算Storm框架

    Storm简介: Storm起源Twitter开源的一个类似于Hadoop的实时数据处理框架,不过两则还是有区别的,Hadoop是批量处理数据,而Storm处理的是实时的数据流. Storm应用场景: ...

  8. java面试题——集合框架

    先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...

  9. Storm框架:如何实现crontab定时任务

    Storm除了能对消息流进行处理,还能实现crontab定时任务. 只要在bolt中配置TOPOLOGY_TICK_TUPLE_FREQ_SECS项即可实现. @Override public Map ...

  10. Storm框架:如何根据业务条件选择不同的bolt进行下发消息

    Strom框架基本概念就不提了,这里主要讲的是Stream自定义ID的消息流.默认spout.bolt都需实现接口方法declareOutputFields,代码如下: @Override publi ...

随机推荐

  1. 解决layer在移动端关闭按钮显示一半的问题

    问题描述 layer弹出iframe,如果设置title为false,会自动设置closeBtn为2,也就是向右上方偏移了-28px,如果显示区域大于1100则正常,如果小于1100则会添加一段css ...

  2. 函数 | Go语言

    函数 不支持命名参数与默认值 可变参数 求多个int的和 func IntSum(x ...int) { sum := 0 for _, v := range x { sum += v } retur ...

  3. Note -「A. Algebra 24 Aut.」“还有一束日光正在为你送达”

      欢迎勘误吖!   喵, 你可以 Ctrl-F 搜 "lww" 获取少量 lww 笑话. (雾   ↓下面这个是我目前用的 LaTeX 宏, 如果需要可以 "Show ...

  4. 数字世界中的纸张——理解 PDF (转载)

    转载自 https://type.cyhsu.xyz/2018/09/understanding-pdf-the-digitalized-paper/ 引言 PDF 是我们打交道最多的文件格式之一.提 ...

  5. 2024-12-28 AI智能体日报

  6. WPF Play Image slider animation using Storyboard

    using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sys ...

  7. Linux常见问题合集

    Linux基本指令 连接SSH ssh uesrname@ip 例如:ssh root@192.168.43.217 Linux 创建多级目录命令: mkdir -p 示例:mkdir -p proj ...

  8. idea创建一个入门Spring Boot项目(controller层)使用Maven代码管理

    springboot的优质开发体验,能够更快速的搭建生产环境的项目.这篇文章就是一个超级简单的入门springboot项目.包含了一些简单的理论和超简单Controller层 [工具] IDEA 全称 ...

  9. 一些devops、软件工程的个人感悟

    1.devops不是简单的工具,是思想. (1)devops核心在于快速编译构建.自动测试化.自动部署发布 (2)工具只是辅助手段,无论是Jenkins.腾讯蓝盾等等,甚至是手动bat+bash搭建, ...

  10. ctfshow--web4 include日志注入

    这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...