大数据开发面试题-附答案.pdf
《大数据开发面试题-附答案.pdf》由会员分享,可在线阅读,更多相关《大数据开发面试题-附答案.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大数据开发面试题附答案以下为面试过程中提问,岗位为大数据开发:.自我介绍+项目介绍.为什么用 kafkas sparkstreaming、h b ase?有什么替代 方 案 吗?.聊聊你觉得大数据的整个体系?.你 看 过 h d fs 源 码?n n 的高可用说一下.zo o keep er简单介绍一下,为 什 么 要 用 zk?z k 的架构?zab?.h b a se 的 架 构,读 写 缓 存?.b lo ckcache的底层实现?你提到了 L R U 那除了L R U 还可以有什么方案?.聊聊 sparkstreaming 和 flink?flink 流批一体解释一 下?.s p a
2、rk 的 几 种 sh u ffle 说 下?为什么要丢弃hashshuffle?.java g c 可达性分析+垃圾回收器+垃圾回收算法+为什么分代垃圾回收+调优.数 据 库 引 擎,in n o d b 索引实现+聚集和非聚集区别+为什 么 用 b+树 不 用 hash.聊 聊t c p和u d p的区别.h ttp知 道 吗?说一下.h ttp版本之间的比较.让 你 设 计 一 个h ash表,怎么设计?.时间不多了,手橹一个二分查找答案解析本文首发公众号【五分钟学大数据】,可以搜索关注 下,超多大数据精品文章1.自我介绍+项目介绍自我介绍可以参考美团面试的这篇文章:美团优选大数据开发岗
3、面试题2.为什么用kafka、sparkstreaming、hbase?有什么替代方案吗?根据简历中写的项目,谈谈为什么用这几个框架,是公司大数据平台历史选择还是更适合公司业务。然后在说下每个框架的优点:Kafka:高吞吐量、低 延 迟:kafka每秒可以处理几十万条消息、,它的延迟最低只有几毫秒;.可 扩 展 性:k a fk a 集群支持热扩展;.持久性、可 靠 性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;容 错 性:允许集群中节点故障(若 副 本 数 量 为 n,则允许n-1 个节点故障);高 并 发:支持数千个客户端同时读写。K a fk a 应 用 场 景:.日志收集:
4、一 个 公 司 可 以 用 K a fk a 可以收集各种服务的lo g,通 过 k a fk a 以统一接口服务的方式开放给各种consumer;消 息 系 统:解耦生产者和消费者、缓存消息等;.用户活动跟踪:k a fk a 经 常 被 用 来 记 录 w e b 用户或者a p p 用户的各种活动,如浏览网页、搜索、点 击 等 活 动,这些活动信息被各个服务器发布到k a fk a 的 to p ic 中,然后消费者通过订阅这些to p ic 来做实时的监控分析,亦可保存到数据库;.运 营 指 标:k a fk a 也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的
5、集中反馈,比如报警和报告;流 式 处 理:比 如 spark stream in g 和 flinkoSpark Streaming 优点:spark stream in g 会 被 转 化 为 s p a rk 作 业 执 行,由于s p a rk 作 业 依 赖 DAGScheduler和RDD,所以是粗粒度方式而不是细粒度方式,可以快速处理小批量数据,获得准实时的特性;以 s p a rk 作业提交和执行,很方便的实现容错机制;D Stream ing是 在 R D D 上 的 抽 象,更 容 易 与 RDD进行交互操作。需要将流式数据与批数据结合分析的情况下,非常方便。因为我们的业务对
6、实时性要求不是特别高,所 以 使 用 sparkstream in g 是非常合适的。H B a se 优 点:H D F S 有 高 容 错,高扩展的特点,而H b a se 基于H D F S 实现数据的存储,因 此 H b a se 拥有与生俱来的超强的扩展性和吞吐量。H B a se 采 用 的 是 K ey/V alu e的存储方式,这 意 味 着,即便面临海量数据的增长,也几乎不会导致查询性能下降。H B a se 是一个列式数据库相对于于传统的行式数据库而言。当你的单张表字段很多的时候,可以将相同的列(以re g in 为单位)存在到不同的服务实例上,分散负载压力。有什么替代方案
7、,就可以聊聊和这几个功能类似的框架,它们的优缺点等,比 如Apache kafka对 应 的Apache Pulsar;Spark Stream ing对 应 的Flink;H Base对应的列式数据库可以举几个例子,如Cassandra.M ongoDB等。3.聊聊你觉得大数据的整个体系?这个是一个开放性题,把你知道的大数据框架都可以说下,下 面 是 我 做 的 一 个Apache大数据框架的集合图,当然也没有 包 含 全 部,只是比较常见的几个:SparkFlumeSqoop0 0 0 0OozieKuduDorisDruidHudiaAtlas-0说的时候尽量按照它们的功能划分及时间先后
8、顺序讲解。4.你 看 过 h d fs源码?n n 的高可用说一下一 个 N am eN ode有单点故障的问题,那就配置双NameNode,配置有两个关键点,一是必须要保证这两个N N 的元数据信息必须要同步的,二 是 一 个 N N 挂掉之后另一个要立马补上。.元 数 据 信 息 同 步 在 H A 方案中采用的是“共享存储。每次写文件时,需要将日志同步写入共享存储,这个步骤成功才能认定写文件成功。然后备份节点定期从共享存储同 步 日 志,以便进行主备切换。.监 控 N N 状 态 采 用 zookeeper,两 个 N N 节点的状态 存 放 在 Z K 中,另 外 两 个 N N 节点
9、分别有一个进程监控 程 序,实 施 读 取 Z K 中 有 N N 的 状 态,来判断当前的N N 是 不 是 已 经 d o w n 机。如 果 sta n d b y的N N 节点 的 Z K F C 发现主节点已经挂掉,那么就会强制给原本的 active N N 节点发送强制关闭请求,之后将备用的N N 设 置 为 activeo如 果 面 试 官 再 问 H A 中 的 共 享 存 储 是 怎 么 实现的知道吗?可以进行解释下:N am eN ode共享存储方案有很多,比如 Linux HA,VMware FT,QJM 等,目前社 区 已 经 把 由 C lo u d erea公 司
10、实 现 的 基 于 QJM(Quorum Journal Manager)的方案合并到H D F S 的 tru n k 之中并且作为默认的共享存储实现基 于 Q JM 的共享存储系统主要用于保存EditLog,并不保存 FSImage 文件。FSImage 文件 还 是 在 N am eN ode的本地磁盘上。Q JM 共享存 储 的 基 本 思 想 来 自 于 P a x o s算 法,采用多个称为 JournalNode 的节点组成的 JournalNode集 群 来 存 储 EditLog。每 个 JournalN ode保存同 样 的 E d itLo g 副本。每次 N am eN
11、 ode写E d itLo g 的 时 候,除 了 向 本 地 磁 盘 写 入 EditLog之 外 也 会 并 行 地 向 JournalN ode集群之中的每一 个 JournalN ode发送写请求,只要大多数(m a jo rity)的 JournalN ode节点返回成功就认为 向 JournalN ode集 群 写 入 Ed itLo g 成功。如果 有 2N+1 台 JournalNode,那么根据大多数的 原 则,最 多 可 以 容 忍 有 N 台 JournalN ode节点挂掉注:H adoop3.x允 许 用 户运行 多 个 备 用 NameNode。例 如,通 过 配
12、置 三 个 N am eN ode和 五 个 JournalN ode,群集能够容忍两个节点而不是一个节点的故障。H D F S 的其他内容可看之前写的这篇文章:H D F S 分布式文件系统详解5.zookeeper简单介绍一下,为什么要用zk?z k 的架构?zab?z k 介 绍 及 功 能:Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题。ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的
13、数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。诸 如:统一命名服务(dubb。)、分布式配置管理缶。卜的配置集中管理)、分布式消息队列(sub/pub),分布式锁、分布式协调等功能。z k 架 构:z k 架 构 图:Leader:Zookeeper集群工作的核心;事 务 请 求(写 操 作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务器的调度者。对 于create,setData,delete等有写操作的请 求,则 需 要 统 一 转 发 给leader处 理,leader需要决定编号、执 行 操 作,这个过程称为一个事务。Follower:处
14、理客户端非事务(读 操 作)请 求,转 发 事 务 请 求 给Leader;参 与 集 群Leader选 举 投 票2 n-l台可以做集群投票。此 外 针 对 访 问 量 比 较 大 的 zo o keep er集 群,还可新增观察者角色。Observer:观 察 者 角 色,观 察 Zo o keeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Le a d e r服务器进行处理。不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。简 答:说白了就是增加并发的读请求Z A B 协 议
15、 全 称:Zookeeper Atomic Broadcast(Zookeeper原子广播协议)oZ A B 协 议 是 专 门 为 zo o keep er实现分布式协调功能而设计。zo o keep er主 要 是 根 据 Z A B 协议是实现分布式系统数据一致性。zo o keep er根 据 Z A B 协议建立了主备模型完成zo o keep er集群中数据的同步。这里所说的主备系统架构模型 是 指,在 zo o keep er集 群 中,只 有 一 台 le a d e r负责处理外部客户端的事物请求(或写操作),然 后 le a d e r服务器将客户端的写操作数据同步到所有的
16、fo llo w e r节点中。6.HBase的 架 构,读写缓存?H B a se 的架构可以看这篇文章,非 常 详 细:H B a se 底层原理详解下 面 说 下 H B a se 的 读 写 缓 存:H B a se 的RegionServer的缓存主要分为两个部分,分别是 MemStore 和 BlockCache,其中 MemStore 主要用于写 缓 存,而BlockCache用于读缓存。H B a se 执行写操作首先会将数据写入MemStore,并顺序写 入 HLog,等满足一定条件后统一将M em Store中数据刷 新 到 磁 盘,这种设计可以极大地提升H B a se
17、的写性能。不 仅 如 此,M em Store对于读性能也至关重要,假如没有MemStore,读取刚写入的数据就需要从文件中通过1 0 查找,这种代价显然是昂贵的!BlockCache称 为 读 缓 存,H B a se 会将一次文件查找的B lo c k 块 缓 存 到 C a c h e 中,以便后续同一请求或者邻近数据 查 找 请 求,可以直接从内存中获取,避 免 昂 贵 的 I。操作。7.BlockCache的底层实现?你提到了 LRU那除了 LRU还可以有什么方案?我们知道缓存有三种不同的更新策略,分 别 是FIFO(先入先出)、LRU(最 近 最少使用)和LFU(最近最不常使用)。
18、H Base的b lo ck默 认 使 用 的 是LR U策 略:LRUBIockCacheo 止 匕 夕 卜 还 有 BucketCache.SlabCache(止 匕缓 存 在0.9 8版本已经不被建议使用)LRUBIockCache 实现机制:LRUBIockCache 是 HBase 目前默认的 BlockCache 机制,实现机制比较简单。它 使 用 一 个ConcurrentHashMap管 理BlockKey至!B lo ck的映射关系,缓 存B lo ck只需要 将BlockKey和 对 应 的B lo ck放 入 该HashM ap中,查询 缓 存 就 根 据BlockKey
19、从HashM ap中获取即可。同时该方案采用严格的L R U淘 汰 算 法,当Block Cache总量达到一定阈值之后就会启动淘汰机制,最近最少使用的B lo ck会被置换出来。在具体的实现细节方面,需要关注几占,/缓存分层策略H B a se 在L R U 缓 存 基础上,采用了缓存分层设计,将整个BlockCache 分 为三个部分:single-access,mutil-access和 inMemory。需要特别注意的是,H B a se 系 统 元 数 据 存 放 在 InMemory区,因 此 设 置 数 据 属 性 InMemory=t r u e 需要非常谨慎,确保此列族数据量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 开发 试题 答案
限制150内