苏先生之大数据面试经验总结(二)

1、flume与kafka的区别
flume适合做日志采集,可以定制多种数据源,减少开发量;而kafka是分布式消息处理的中间件,自带存储功能,适合做日志缓存;flume主要用于将数据往HDFS、HBASE发送;如果涉及多个系统的使用,可以选择用kafka
2、kafka如何保证数据不丢失、不重复消费
(1)在同步模式下,将ACKS设为-1,也就是将消息写入leader和所有的副本
(2)在异步模式下,如果消息发送出去了还没有收到确认的时候,缓冲池满了,在配置文件中设置成不限时阻塞超时的时间,也就是说让生产一直阻塞下去,这样数据也不会丢
(3)将消息的offset存储起来(如存储到HBASE),每次消息处理时判断是否处理过
3、如何搭建一个高并发高可用的平台
(1)空间换时间
多级缓存:用户页面缓存、反向代理缓存、cache机制等
索引:哈希(适用于数据的快速存取)、B+树(适用于查找,避免多次IO)、倒排(适用于搜索领域)
(2)并行与分布式计算
切分任务、分而治之(基于数据的分解)
多进程、多线程并行执行(基于问题的分解)
(3)多维度的可用
负载均衡、容错、备份
读写分离
依赖关系(能异步处理则异步)
监控模块的运行
(4)伸缩
拆分(业务逻辑的分段、对数据的分表分库)
(5)优化资源利用
资源的释放

你可能感兴趣的:(笔记)