zoukankan      html  css  js  c++  java
  • 附6、Storm面试题目答疑 ---一般有用

    问题:
    1,kafka+storm如何保证消息完整处理。
    一条消息产生----Kafka--KafkaSpout-Storm--->Redis
    问题1:kafka数据生产消费如何保证消息的完整处理
    Producer-batch(缓存机制queue)--重试机制---->ack(-1,1,0)---Broker(partition leader/slave)------>KafkaConsumer(内存中,new offset)---->zk( old offset)
    Producer发送时缓存数据,需要阈值设定(数量阈值,时间阈值),当数据太多并来不及发送时,会产生老数据是否保留的问题,如何配置文件中配置的是删除掉,数据就丢失了。

    KafkaConsumer 消费数据时,由于offset是周期性更新导致zk上的offset值必然小于Kafkaconsumer内存中的值当KafkaConsumer挂掉后重启,必然会导致数据重复消费。
    如何解决重复消费:1,技术方法(不可取),2,业务方法(标识数据:找到消息中的唯一标识 <messageTag,isProcess>)


    问题2:Storm中如何保证消息的完整处理 ack - fail
    自己定义 缓存Map<msgid,messageObj>
    Spout---->nextTuple----Tuple---Bolt(ack(tuple))
    Bolt1-----Tuple1-1
    Bolt1-----Tuple1-2
    Bolt1-----Tuple1-3
    Bolt1-----Tuple1-4
    Bolt2(ack(Tuple1-1))
    Bolt2(ack(Tuple1-2))
    Bolt2(ack(Tuple1-3))
    Bolt2(ack(Tuple1-4))

    如果成功(spout.ack(msg))
    map.remove(msgid)
    如果失败(spout.fail(msg))
    messageObj = map.get(msgid)
    collector.emit(messageObj,msgid)

    问题3:如何保证一条消息路过各个组件时保证全局的完整处理
    保存每个环节的数据不丢失,自然就全局不丢失。


    问题4:在storm环节中自定义的map如何存储,在KafkaConsumer如何处理重复消费的问题?
    1,保存在当前Jvm中,既然出异常导致消息不能完全处理,存放在jvm中的标识数据,缓存Map必然会丢失
    2,保存在外部的存储中,redis。 标识数据<Set> 缓存Map<Map>
    问题:请问存储redis时,由于网络原因或其他异常导致数据不能成功存储 怎么办?
    重试机制,保存3次打印log日志,redis存储失败。

    2,数据量大如何保证到Kakfa中,storm如何消费,解决延迟。
    问题1:请问Kafka如何处理海量数据 -----整体数据:100G
    数据从何而来:producer 集群----DefaultPartition ------保存数据平均分配

    数据保存在哪里: broker 集群
    topic ---partition 10 -------------->每个分片保存10G
    数据保存如何快:pageCache 600M/S的磁盘写入速度 sendfile技术

    问题2: 请问Storm如何处理海量数据,尽可能快
    数据输入: KafkaSpout(consumerGroup,10) 读取外部数据源
    数据计算: 数据计算是根据对数据处理的业务复杂度来的,越复杂并发度越大。
    如果bolt的并发读要设置成1万个,才能提高处理速度,很显然是不行的。需要将bolt中的代码逻辑分解出来,形成多个bolt组合。
    bolt1--->bolt2--->bolt3......

    3,Flume监控文件,异常之后重新启动,如何避免重复读取。
    异常的范围是 flumeNg的异常
    log文件,读取文件,保存记录的行号
    问题1:如何保存行号
    command.type = exec shell<tail -F xxx.log> 自定义shell脚本,保存消费的行号到工作目录的某个文件里。
    当下次启动时,从行号记录文件中拿取上次读到多少行。















  • 相关阅读:
    C# 实现从程序集中抽取内嵌资源文件
    git clone 显著提速,解决Github代码拉取速度缓慢问题
    C# 将List数据 导出到csv 文件
    Nginx的location匹配规则-根据url 路径重定向到不同的IP
    WinForm最小化到托盘以及托盘右键菜单
    安卓手机浏览器调试-Debug模式
    C#-Forms.Timer、Timers.Timer、Threading.Timer的比较和使用
    批处理实现批量创建快捷方式
    设计模式(六)装饰模式(转)
    设计模式(五)桥接模式(转)
  • 原文地址:https://www.cnblogs.com/shan13936/p/13838441.html
Copyright © 2011-2022 走看看