Hadoop常见问题

hdfs文件系统中的角色 NameNode:是HDFS的主节点,负责管理文件系统的命名空间和元数据信息。维护了整个文件系统的目录树结构以及文件和数据块的映射关系 - 重要组件 - fsimage:它是在NameNode启动时对整个文件系统的快照。NameNode启动的时候,会读取fsimage并跟edit logs合并,得到完整的文件系统快照 - edit logs:它是在NameNode启动后,对文件系统的改动序列。改动会通过edit logs写入文件系统 SecondaryNameNode: - 作用:为了避免edit logs文件越来越大,NameNode重启会花费很长时间,SNN的职责
阅读更多

interview record 0

一轮 Java 1. 10亿数取TOPK Hive SQL 2. 最近7天连续登陆3天的用户 3. 每科排名前3的学生 自我介绍 项目经历 kafka isr集合作用 kafka副本同步机制 kafka如何保证数据不丢失 项目和airflow、dolphinscheduler相比优势是什么?事件驱动,延迟队列(没说出来) 项目设计比较好的地方?延迟队列(没说出来),批处理优化(没说出来),dag运行干预(没说出重点) 依赖上游任务情况下,希望最晚等到几点就开始执行,怎么设计?弱依赖最晚等待时间 java基本
阅读更多

Spark原理和实践

Spark概念 Spark 是一个基于内存的大数据分布式计算框架 RDD: Partition: Job: Task: Driver: Executor: Spark为什么比MapReduce执行更快 * DAG 执行模型:Spark 将整个计算构建成一个有向无环图(DAG),可对多步算子进行统一调度和优化;MapReduce 则强制每个 Job 都是单一的 Map→Shuffle→Reduce,阶段之间无融合 * 算子融合(Pipelining):对多个窄依赖算子(如 map、filter)进行链式执行,在同一个 Task 中完成,不产生中间写盘;MapReduce 每步都要落盘并重新
阅读更多

回溯相关题目整理

原则: 1. 回溯函数需要path、ans参数 2. 允许包含重复数字,则处理前一定要先排序 3. 只有全排列需要记录used[i],因为需要区分重复的元素 Generate Parentheses 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”] 示例 2: 输入:n = 1 输出:[“()”] 提示: * 1 <= n <= 8 1 2 3 4 5 6 7 8 9 10 11 12
阅读更多

MySQL原理和实践

一条SQL的执行过程 1. 客户端连接到服务端的连接器 2. 分析器进行词法分析(解析关键字和字段名)和语法分析(判断是否符合MySQL语法) 3. 如果是查询语句,有缓存则查缓存 4. 优化器决定SQL的执行顺序 5. 表权限校验,执行器调用存储引擎读写接口进行操作。如果是InnoDB写操作具体流程是 1. 调用查询接口查询数据 2. 查询引擎从磁盘读取到内存,返回数据 3. 执行器变更数据,调用查询引擎写入数据 4. 新数据更新到内存,写入redolog 5. 执行器写binlog 6. 提交事务,写数据 r
阅读更多

Kafka原理和实践

Kafka部署方案选择 * 操作系统 * I/O模型的选择:I/O模型:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO几种模型。Java Socket对象的阻塞&非阻塞模式对象前两种;Linux的select函数属于IO多路复用;epoll系统调用介于第三四种模型之间;第五种模型Linux少有支持,Windows由OCP线程模型。Kafka客户端底层使用了Java的selector实现,selector在Linux上实现机制是epoll,Windows上实现机制是select。因此Kafka部署在Linux上更有优势,I/O性能更强。 * 零拷贝支持:从磁盘读取数据发送到
阅读更多

Redis原理和实践

数据结构 整体组织形式 全局哈希表,每个哈希桶存储键值对,值存储的是指向实际元素的指针。redis采用链地址法(拉链法)解决哈希冲突,当链表长度过长时查询速度会变慢,所以链表长度过长时需要rehash,增加哈希桶数量 rehash过程: 使用两个全局哈希表实现 1. 给哈希表2分配更大的空间,比如哈希表1的两倍 2. 把哈希表1的数据重新映射拷贝到哈希表2 3. 释放哈希表1的空间 渐进式rehash: 时机:负载因子(哈希表已保存的节点数量/哈希表大小)大于1且没有进行bgsave或bgrewiteaof时。或者负载因子大于5时 原因:第2步涉及大量数据拷贝,如果一次性把哈
阅读更多

高并发问题

问题分类 侧重于“高并发读”的系统 例如如下场景 1. 搜索引擎 2. 电商的商品搜索 3. 电商系统的商品描述、图片和价格 侧重于“高并发读”的系统 例如如下场景 1. 广告扣费系统 同时侧重于“高并发读”和“高并发写”的系统 例如如下场景 1. 电商的库存系统和秒杀系统 2. 支付系统和微信红包 3. IM、微博和朋友圈 高并发读 策略:加缓存 本地缓存或Memcached/Redis集中式缓存 当数据库支持不住的时候,首先想到的就是为其加一层缓存。缓存通常有两种思路:一种是本地缓存,另一种是Memcached/Redis类的集中式缓存 使用缓存时需要考虑一些问题
阅读更多

分布式事务一致性

分布式事务问题 定义:分库架构下无法使用单机数据库的事务能力,需要在多个服务协同操作下保证数据一致性 解决方案:强一致性协议 一个协调者,多个参与者,协同进行分布式事务处理 2PC(两阶段提交) 流程 1. 准备阶段:协调者向各个参与者发起询问,说要执行一个事务,各参与者可能回复YES、NO或超时。 2. 提交阶段:如果所有参与者都回复的是 YES,则事务协调者向所有参与者发起事务提交操作,即Commit操作,所有参与者各自执行事务,然后发送ACK 特点 优点 原理简单,实现方便 缺点 1. 同步阻塞:在阶段1,锁定资源之后,要等所有节点返回,然后才能一起进入阶段2,不能很好地应
阅读更多