版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hadoop、Hive高频面试题及详细答案(实操版)一、Hadoop基础面试题1、简单说下Hadoop的核心组件及各自作用?Hadoop核心由三大组件构成,是分布式大数据存储和计算的基础框架,各组件分工明确:HDFS(分布式文件系统):负责海量数据的分布式存储。分为NameNode、DataNode、SecondaryNameNode。NameNode管理整个文件系统的元数据,比如文件目录、权限、块存储位置;DataNode是实际的数据存储节点,默认文件切块大小128M,多副本存储保证数据安全;SecondaryNameNode主要辅助NameNode做日志合并、快照备份,不承担主节点调度功能,不能做主节点故障切换。YARN(资源调度框架):负责集群资源管理和任务调度,相当于集群的操作系统。核心组件为ResourceManager、NodeManager、ApplicationMaster。ResourceManager全局统一调度CPU、内存资源,接收客户端任务提交;NodeManager是单个节点的资源管理者,负责本节点任务启动、监控、资源占用统计;ApplicationMaster是单个任务的管理者,负责向ResourceManager申请资源、协调任务执行。MapReduce(分布式计算框架):基于分而治之思想的离线计算引擎,分为Map阶段和Reduce阶段。Map阶段负责分片读取数据、处理、输出中间结果;Reduce阶段负责对Map输出的分组数据聚合、汇总,最终输出结果数据,适合大规模离线批量计算。2、HDFS的副本机制是什么?默认副本数、存放策略?HDFS为了防止数据节点故障导致数据丢失,采用多副本冗余存储机制。默认副本数为3,可在配置文件中自定义修改。默认存放策略:1、第一个副本:存放在客户端上传数据的当前节点;如果客户端不在集群节点,随机选一个节点存储;2、第二个副本:存放在当前节点同机架的不同节点;3、第三个副本:存放在不同机架的节点。该策略兼顾了读写性能和数据安全性,同机架传输速度快,跨机架存储能避免整机架断电、故障导致数据全部丢失。3、NameNode宕机后集群会怎么样?SecondaryNameNode能否顶替?NameNode是HDFS的主节点,管控整个文件系统元数据,一旦宕机:1、整个HDFS集群无法写入新数据,客户端无法上传、删除、修改文件;2、集群原有数据可以正常读取,因为DataNode本地存有真实数据;3、所有新提交的任务会提交失败,正在运行的任务大概率中断。SecondaryNameNode不能顶替NameNode工作。它只是定期合并NameNode的fsimage和edits日志,生成最新的元数据快照,仅用于数据恢复,不具备实时调度、客户端交互、资源管控的能力。生产环境中一般配置HA高可用,用Active、Standby双NameNode实现故障自动切换。4、YARN任务提交流程详细说一下?1、客户端向ResourceManager提交计算任务,提交内容包含任务程序、资源需求、执行参数等;2、ResourceManager接收任务后,校验权限和参数,分配一个空闲节点启动ApplicationMaster;3、ApplicationMaster启动后,向ResourceManager正式申请运行任务所需的CPU、内存资源;4、ResourceManager统一分配资源,通知对应NodeManager启动容器Container;5、Container启动后,运行对应的Map、Reduce任务;6、任务运行期间,NodeManager实时上报任务状态、资源占用情况;7、任务执行完成后,ApplicationMaster释放资源、注销任务,集群资源回收,等待下一次调度。5、MapReduce工作流程,Map和Reduce阶段各自做什么?完整流程:分片读取→Map处理→分区排序→Shuffle洗牌→Reduce聚合→结果输出Map阶段:框架会把输入的大文件按块分片,每个分片对应一个Map任务。Map读取分片数据,按业务逻辑清洗、转换、拆分数据,以key-value形式输出中间结果。Shuffle阶段:是MapReduce的核心,负责对Map输出的数据进行分区、排序、合并、拉取。相同key的数据会被分到同一个分区,发送到同一个Reduce节点。Reduce阶段:接收多个Map传来的有序数据,按key分组,对每组数据进行聚合、求和、去重、统计等计算,最终输出落地结果文件。二、Hive核心基础面试题1、Hive是什么?和MySQL的核心区别?Hive是基于Hadoop的数据仓库工具,可以通过SQL语句读写、管理分布式存储的大数据,底层会把SQL转换为MapReduce、Spark、Tez任务运行,专门用于离线大数据分析。和MySQL核心区别:1、定位不同:MySQL是关系型数据库,用于在线业务、实时增删改查;Hive是数据仓库,用于离线海量数据统计分析;2、延迟不同:MySQL毫秒级实时查询;Hive是离线批量计算,查询延迟高,秒级、分钟级甚至更久;3、更新机制不同:MySQL支持行级增删改查;Hive早期不支持行级更新,新版支持有限更新,默认是批量写入、覆盖写入;4、存储不同:MySQL数据存在本地磁盘;Hive数据存储在HDFS,元数据存储在MySQL;5、事务支持:MySQL完整支持事务;Hive仅支持有限事务,生产基本不用。2、Hive的内部表和外部表区别?生产怎么选择?内部表(管理表):Hive全权管理表的数据和元数据,数据默认存放在Hive仓库目录下。删除表时,元数据和HDFS真实数据会一起删除。外部表:Hive仅管理元数据,真实数据存放在用户指定的HDFS路径,不受Hive仓库管控。删除表时,只删元数据,HDFS原始数据保留。生产选择原则:1、原始数据、多任务共用的数据、需要保留备份的数据,一律用外部表,防止误删数据;2、中间计算结果、临时表、可重跑的结果表,可以用内部表,方便自动清理冗余数据。3、Hive分区表、分桶表的作用和区别?分区表:按照时间、地区、渠道等维度对数据进行目录层级划分,本质是HDFS的子目录。作用:缩小查询扫描范围,查询指定分区时,只扫描对应目录数据,不用全表扫描,大幅提升查询速度,生产最常用的是时间分区。分桶表:对表数据按字段哈希取模,将数据均匀分散到多个固定桶文件中,本质是文件级拆分。作用:提升抽样查询效率、优化大表join性能、让数据分布更均匀,避免数据倾斜。核心区别:分区是粗粒度的目录划分,分桶是细粒度的文件划分;分区字段是伪列,分桶字段必须是表中真实字段;分区侧重减少扫描范围,分桶侧重优化join和抽样。4、Hive动态分区和静态分区区别?使用场景?静态分区:手动指定分区值,一次性写入单个或少量分区数据,分区值固定写死。优点是数据可控、不易出错;缺点是批量导入多分区数据时操作繁琐。动态分区:根据源表数据的分区字段值,自动创建分区、自动写入对应分区数据,无需手动指定。需要开启动态分区参数,默认关闭。使用场景:每日定时同步数据、批量导入海量多分区数据,用动态分区;少量历史数据修复、单分区补数,用静态分区。注意:生产使用动态分区必须设置严格模式,防止空值、异常数据批量生成大量无用分区。5、Hive严格模式和非严格模式区别?由参数hive.mapred.mode控制,生产一般开启严格模式(strict)。严格模式:限制高风险、低效率的SQL执行,避免集群资源浪费。主要限制:1、禁止执行不带分区过滤的分区表查询,防止全表扫描超大分区数据;2、禁止执行orderby不带limit的语句,避免全局排序产生超大任务;3、禁止笛卡尔积join,防止无关联条件产生海量数据爆炸。非严格模式:不做任何限制,所有SQL都可执行,测试环境常用,生产禁止长期开启。三、Hive数据倾斜面试题(高频重点)1、什么是Hive数据倾斜?产生原因?数据倾斜就是任务运行时,数据分布极度不均匀,大部分数据集中在少数几个Reduce节点,其他节点空闲,导致整体任务拖慢、超时、甚至OOM内存溢出。常见原因:1、join关联字段存在大量空值、无效值;2、维度字段数据集中度高,比如大量数据对应同一个城市、同一个渠道;3、groupby分组字段单一,大量数据聚合到同一个key;4、笛卡尔积、异常脏数据导致数据扎堆。2、数据倾斜的常用解决方案(实操版)?1、空值、无效值预处理:join时将null、空字符串随机打散,避免全部扎堆到一个reduce;2、参数调优:开启hive.groupby.skewindata解决groupby倾斜,开启倾斜join自动优化参数;3、拆分倾斜key:对热点key单独查询,非热点key正常查询,最后合并结果;4、加盐打散:对倾斜字段追加随机数,打散数据,计算完成后再还原聚合;5、提前过滤脏数据:清洗掉无效、异常、重复数据,从源头避免倾斜。四、Hive优化面试题(生产实操)1、HiveSQL日常优化手段有哪些?1、分区过滤优先:查询必须加分区条件,杜绝全表扫描;2、字段裁剪:只查询需要的字段,禁止select*;3、join优化:小表驱动大表,小表放join左侧;多表join时按表数据量从小到大关联;4、避免全局排序:orderby必须加limit,大数据量优先使用sortby;5、合理使用分桶、分区:大表必须分区,高频join字段建分桶表;6、开启并行执行:多段无依赖SQL开启并行执行,缩短整体耗时;7、压缩存储:数据落地使用ORC、Parquet列式存储+压缩格式,减少HDFS读写IO。2、Hive中sortby、orderby、distributeby、clusterby区别?1、orderby:全局有序,只启动一个Reduce,数据量大时效率极低,必须加limit;2、sortby:分区内有序,多Reduce并行排序,全局无序,速度快;3、distributeby:控制数据分发,指定字段哈希分发,相同字段数据进入同一个Reduce,常配合sortby使用;4、clusterby:等价于distributeby+sortby,既能控制分发又能分区内排序。3、Hive三种存储格式TextFile、ORC、Parquet区别?生产选型?TextFile:行式存储,默认格式,无压缩、占用空间大、IO高,查询慢,仅用于原始日志临时存储,生产不推荐长期使用。ORC:优化的列式存储,压缩率极高、查询速度快、支持索引、事务,适合离线数仓分层表(ODS、DWD、DWS),是生产最常用格式。Parquet:列式存储,兼容性好,适配Spark、Flink等多种计算引擎,跨引擎查询场景优先使用。生产选型:纯Hive离线分析优先ORC;多引擎混用、数据同步场景优先Parquet。五、故障与实操面试题1、Hive任务OOM内存溢出怎么解决?1、调大Map、Reduce容器内存参数,提升单任务资源上限;2、拆分大任务,将复杂SQL拆分为多段分步执行;3、解决数据倾斜,打散热点数据,避免单节点数据量过大;4、开启数据压缩、开启分片并行计算;5、提前过滤无效数据,减少内存加载的数据量。2、HDFS小文件过多的危害及Hive解决方案?危害:小文件会占用大量NameNode元数据内存,导致集群性能下降;任务启动、调度耗时增加,IO频繁,严重时导致集群卡顿、任务堆积。解决方案:1、查询结束后开启自动合并小文件参数;2、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北京北方长城光电仪器有限公司人员招聘笔试模拟试题及详细答案解析
- 2026年期末化学通关试卷
- 2026年高桥石化人员招聘参考题库及详细答案解析
- 2026年苏教版初中语文七年级下册第4章同步练习题及答案
- 2026年中国电信浙江分公司人员招聘笔试模拟试题及详细答案解析
- 原始记录留存管理制度
- 2026年沈阳鼓风机集团股份有限公司人员招聘考试备考试题及详细答案解析
- 第五章 原子核 单元检测(含解析)2026-2027学年高中物理人教版选择性必修第三册
- 2026年中国能源建设集团新疆电力建设公司人员招聘考试题库及详细答案解析
- 2026年海南炼化公司人员招聘考试题库及详细答案解析
- 新能源项目保险方案
- 仪器分析(第四版)-仪器分析-绪论
- 2026年中国五矿招聘真题及答案
- 2026年水厂招聘考试题库(含答案)
- 埃博拉病毒病诊疗方案(2026年版)核心解读与临床实践指导
- NB∕T 11970-2026 电动汽车充电设施接入运营安全评价规范
- 2026 ESC-ERA 心血管疾病与慢性肾病管理指南解读
- 2026年广东省公需课《人工智能赋能高质量发展》试题及答案
- 2026中国医疗AI软件商业模式验证与收费模式创新分析
- 2026秋苏教版四年级上册单元测试 第二单元 周长与面积
- BBT0060-2025包装容器 聚对苯二甲酸乙二醇酯(PET)瓶坯(高清)
评论
0/150
提交评论