面试题-Storm框架
前言
Storm框架在实际项目中已经平稳运行快一年了,也很好的支撑了海量读写器的数据处理需求,不过和RabbitMQ一样,为了项目进度,实际工作中只能尽快的调研,关注一些关键点,其他的细节就只能放一放。这次面试题总结也希望自己能够在关于提升我项目亮点的框架上多下一些功夫,被问到一些技术细节时,能够做到心中有数。
Storm实时流计算框架
Storm与hadoop对比?
- 应用场景:Storm专注于分布式实时流处理;Hadoop关注的是离线批处理
Storm集群架构是什么样的,简单介绍一下
Storm是master/slave架构,在传统的master/slave架构中,主节点一般负责任务的接受分配和监控,从节点负责具体任务的执行,Storn框架也类似,但是在其中有一些不同:
- nimbus主节点依然负责集群中分发任务以及监控
- supervisor从节点会启动一个worker来执行具体的任务,一个worker就是一个JVM进程
实际项目中,有四个服务器节点,选择了两台机器部署supervisor,防止单点问题;把nimbus和zookeeper部署在另外一台服务器上,只部署了一个实例,这个是根据Storm官方文档推荐部署的。因为对我们的业务系统来说,nimbus和zookeeper本身负载不算高。
Storm集群中的任务是什么样子的?简单介绍一下
Storm集群中的任务叫做拓扑,拓扑中包含两种类型的组件:
- Spoult:负责对接外部数据源,获取数据
- bolt:负责处理数据
我们实际项目中,有一个spoult对接RabbitMQ获取读写器实时数据,一个bolt组件进行去重分组以及相关统计信息的计算。处理完毕的数据,会继续传递到RabbitMQ中等待下层服务处理。
Topology在Storm集群中是如何分发的?
- storm jar命令上传jar包到storm的nimbus节点
- nimbus节点根据配置的信息查询空闲的worker
- 分配任务到具体的worker中,worker从nimbus下载待处理的jar包
具体的线程模型是怎样的?并发度如何设置?
Storm中多线程的设置叫做并发度,一个bolt或者spoult如果并发度设置大于1的话,就会实例多个,每一个对应一个线程去处理。
我们实际项目中,从RabbitMQ中获取数据使用了并发度为2的设置,一可以提高处理速度,二可以防止单点问题。bolt实际处理线程设置为10,分别对应了epc尾数0-9,可以并发的处理
消息是如何分发的?如何进行grouping分组设置?
storm中可以通过设置grouping分组,来自定义消息的分发细节。比如随机分组,按字段分组
我们实际项目中,使用的是按字段分组,分组字段是epc的后一位,相同epc尾数的可以被分到同一个线程处理,保证了线程安全问题。
Storm中是如何保证消息可靠性的?
Storm中消息链中的处理过消息的链条都会产生一个以数据源为tuple头的处理链,链上的每一个节点都需要显式的说明处理成功或者失败,如果有一个没有显式处理,那么这个消息就没有正确处理完毕。如果超时时间范围内没有处理完毕,就算处理失败。
如果成功处理或者处理失败,Storm框架会回调Spoult中的ack方法或者fail方法,可以在里面做可靠性的后续业务处理。
面试题-Storm框架的更多相关文章
- Storm框架:Storm整合springboot
我们知道Storm本身是一个独立运行的分布式流式数据处理框架,Springboot也是一个独立运行的web框架.那么如何在Strom框架中集成Springboot使得我们能够在Storm开发中运用Sp ...
- Storm框架入门
1 Topology构成 和同样是计算框架的Mapreduce相比,Mapreduce集群上运行的是Job,而Storm集群上运行的是Topology.但是Job在运行结束之后会自行结束,Topolo ...
- Storm框架基础(一)
* Storm框架基础(一) Storm简述 如果你了解过SparkStreaming,那么Storm就可以类比着入门,在此我们可以先做一个简单的比较: 在SparkStreaming中: 我们曾尝 ...
- java面试题-常用框架
Spring Spring 是什么 一个开发框架,一个容器,主要由面向切面AOP 和依赖注入DI两个方面,外加一些工具 AOP和IOC AOP 面向切面 AOP是一种编程思想,主要是逻辑分离, 使业务 ...
- [大数据面试题]storm核心知识点
1.storm基本架构 storm的主从分别为Nimbus.Supervisor,工作进程为Worker. 2.计算模型 Storm的计算模型分为Spout和Bolt,Spout作为管口.Bolt作为 ...
- 面试题: Spring 框架 Bean的生命周期
[Java面试五]Spring总结以及在面试中的一些问题. 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本 ...
- 【分布式】流式计算Storm框架
Storm简介: Storm起源Twitter开源的一个类似于Hadoop的实时数据处理框架,不过两则还是有区别的,Hadoop是批量处理数据,而Storm处理的是实时的数据流. Storm应用场景: ...
- java面试题——集合框架
先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...
- Storm框架:如何实现crontab定时任务
Storm除了能对消息流进行处理,还能实现crontab定时任务. 只要在bolt中配置TOPOLOGY_TICK_TUPLE_FREQ_SECS项即可实现. @Override public Map ...
- Storm框架:如何根据业务条件选择不同的bolt进行下发消息
Strom框架基本概念就不提了,这里主要讲的是Stream自定义ID的消息流.默认spout.bolt都需实现接口方法declareOutputFields,代码如下: @Override publi ...
随机推荐
- 神仙打架的一期「GitHub 热点速览」
由于上周出月刊「GitHub 热点速览」断更了一期,本期攒了两周的热门开源项目,真可谓是神仙打架! 这两天开源的大模型 DeepSeek-V3 凭借极低的训练成本和出色的评测表现,迅速出圈.开源仅 5 ...
- Spring Cloud Alibaba AI 入门与实践
一.概述 Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用. 可参考文章<S ...
- find_package()使用指南
关于find_package() 在使用cmake引用第三方库(比如OpenCV)时,我们总是使用find_package()这个指令来实现对包的查找(比如find_package(OpenCV)). ...
- web应用分页-copy
1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑. (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端 ...
- Superset 稀奇古怪的bug
1.filterbox 及 native filter 等组件里面,日期筛选器下拉框,显示的不是日期格式,而是时间戳格式,如: 解决方法: 修改superset\utils\core.py 里面的js ...
- 比特c语言-分支与循环
# 分支与循环 if语句 目录 if语句 if eg:输入一个整数,判断是否为奇数 else eg:输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数 嵌套if eg:输入一个人 ...
- 数字先锋 | 车企,出海!天翼云AOne擦亮车企“智慧服务”新名片!
近年来,中国汽车市场迎来巨变,消费者的消费习惯不断变迁,价格战愈演愈烈......如何紧跟数字化转型步伐,实现稳健经营,成为车企所面临的时代命题. 作为一家科技型制造企业,某车企主营业务涉及汽车及核心 ...
- Iceberg metrics导致的问题
一.问题描述 在iceberg rewrite时报错:org.apache.iceberg.exceptions.ValidationException: Cannot commit, found n ...
- 如何配置支付宝密钥之如何配置普通 RSA2 密钥|保姆级教学(一)
进行支付宝开发的第一步就是:配置密钥. 但是有很多小伙伴都不知道怎么配置,这篇文章将手把手帮你从头开始捋清如何配置支付宝密钥- 这次首先放一下官方文档:[如何生成及配置 RSA2 密钥],大佬们也可以 ...
- 鸿蒙开发 - 数据持久化 Preferences (内存存储) (封装)
这篇文章介绍鸿蒙中的 Preferences,它是一种轻量级存储方式,数据存储在内存中,用于存储少量的数据. 可以执行 flush() 方法将内存中的数据写入到磁盘文件,保证下次重启后数据可以继续使用 ...