| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 大数据—— Hadoop 常见面试题整理 -> 正文阅读 |
|
[大数据]大数据—— Hadoop 常见面试题整理 |
目录 7. 简单说明下 HDFS 中,NameNode ,SecondaryNameNode 和 DataNode 的作用 8. 简单描述一下 dfs-start.sh 的启动流程(或者 NameNode 的启动流程) 15. Hadoop 中数据块(Block)大小如何确定,现有一个文件大小为260M,Block大小设定为128MB,在进行 split 操作时,会生成几个 Block 1. 大数据的特点(4V特征)
2. 谈谈 Hadoop 的优缺点优点:
缺点:
3. 为什么 HDFS 不适合存小文件HDFS 文件存储是以 Block 进行存储的(Hadoop 2.x 以后 Block 大小默认为128M),而 Block 元数据大小大概在 150 字节左右,Block 的元数据会在 NameNode 启动时加载到内存,也就意味着一个小文件就要占用 NameNode 150 字节内存,如果小文件过多,NameNode 内存很有可能被消耗殆尽,但整个集群存储数据的量却很小,失去了HDFS的意义,同时也会影响 NameNode 的寻址时间,导致寻址时间过长 4. Hadoop 的核心组件有哪些,并说明下功能HDFS:分布式文件系统,解决分布式存储 MapReduce:分布式计算框架 YARN:分布式资源管理系统,在 Hadoop 2.x 中引入 Common:支持所有其他模块的公共工具程序 5. Hadoop 与关系型数据库对比6. 如果集群中 DataNode 出现错误(比如 DataNode 进程死亡或者网络故障造成无法与 NameNode 通信),集群能否立即将宕机的DataNode下线?另外DataNode 下线后,集群将进行什么工作?(1)不能立即下线,NameNode不会立即把该节点判定死亡,HDFS 默认的超时时长为10分30秒,如果定义timeout为超时时长,则超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval,默认的heartbeat.recheck.interval为5分钟,dfs.heartbeat.interval默认为3秒 (2)DateNode 下线后,集群将复制下线的 DataNode 管理的块,在其他 DataNode 上做备份 7. 简单说明下 HDFS 中,NameNode ,SecondaryNameNode 和 DataNode 的作用NameNode:
SecondaryNameNode:
DataNode:
8. 简单描述一下 dfs-start.sh 的启动流程(或者 NameNode 的启动流程)第一阶段:NameNode 启动
第二阶段:DataNode 启动
第三阶段:SecondaryNameNode 启动
另外,在这3个阶段完成之前,集群处于安全模式 9. 什么情况下集群会进入安全模式集群启动时: 由于 NameNode 在启动时加载的是所有块位置的映射信息,而非完整的块数据,所以需要各个 DataNode 向 NameNode 发送最新的块列表信息来验证块是否有效,在此期间 NameNode 的文件系统对于客户端来说是只读的? Block异常损坏: 当 NameNode 发现集群中的 Block 丢失数量大于设定阈值时,NameNode 会进入安全模式,对低于阈值的 Block 在其他 DataNode 节点上做备份 在执行负载均衡操作时需要进入安全模式: 由于在做负载均衡操作时会对Block进行复制和删除操作,所以需要进入安全模式 10. HDFS 的读写执行流程写数据执行流程
读数据执行流程
11. HDFS 的可靠性策略有哪些文件完整性:
网络或机器失效时:
NameNode 挂掉时:
其他保障可靠性机制:
12. 如果一个 DataNode 宕机了,如何做恢复将宕机的 DataNode 上的数据删除,重新当成新节点加入到集群即可 13. MapReduce 的执行流程
14. Yarn 的 Job 提交流程?作业提交: ????????(1)client 调用 job.waitForCompletion 方法,想整个集群提交 MapReduce 作业。 ????????(2)client 向 ResourceManager 申请一个作业 id ????????(3)ResourceManager 给 Client 返回该 job 资源的提交路径(HDFS 路径)和作业 id,每个作业都有唯一的 id ????????(4)client 发送 jar 包、切片信息和配置文件到指定的资源提交路径 ????????(5)client 提交完资源后,向 ResourceManager 申请运行 ApplicationMaster 作业初始化: ????????(6)当 ResourceManager 收到 client 的请求后,将该 job 添加到容器调度器(Resource Scheduler)中 ????????(7)在某一个空闲的 NodeManager 领取到该 job ????????(8)该 NodeManager 创建 Container,并产生 ApplicationMaster ????????(9)下载 Client 提交的资源到本地,根据分片信息生成 MapTask 和 ReduceTask 任务分配: ????????(10)ApplicationMaster 向 ResourceManager 申请运行多个 MapTask 任务资源 ????????(11)ResourceManager 将运行 MapTask 任务分配给空闲的多个 NodeManager,NodeManager 分别领取任务并创建容器 任务运行: ????????(12)ApplicationMaster 向接收到任务的 NodeManager 发送程序启动脚本,每个接收到任务的 NodeManager 启动 MapTask,MapTask 对数据进行处理,并分区排序 ????????(13)ApplicationMaster 等待所有 MapTask 运行完毕后,向 ResourceManager 申请容器运行 ReduceTask ????????(14)程序运行完毕后,ApplicationMaster 会向 ResourceManager 申请注销自己 ????????(15)进度和状态更新。Yarn 中的任务将其进度和状态(包括 counter)返回给应用管理器,客户端每秒(通过 mapreduce.client.progressmonitor.pollinterval 设置)向应用管理器请求进度更新并展示给用户。可以从 Yarn WebUI 查看任务执行状态 作业完成: ????????除了向应用管理器请求作业进度外,客户端每5分钟都会通过调用 waitForCompletion() 方法来检查作业是否完成。时间间隔可以通过 mapreduce.client.completion.polinterval 来设置。作业完成后,应用管理器和 container 会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查 15. Hadoop 中数据块(Block)大小如何确定,现有一个文件大小为260M,Block大小设定为128MB,在进行 split 操作时,会生成几个 Block????????根据官网描述,Hadoop 2.7.3 版本之前,Block 默认大小为 64MB,Hadoop 2.7.3 以后,Block 默认大小为 128MB,可以通过修改hdfs-site.xml文件中的dfs.blocksize对应的值 ? ? ? ? 会产生2个 Block,因为每次切片时,都要先判断剩余部分是否大于 Block 大小的1.1倍,不大于1.1倍就划分到一个 Block 16. Block 大小设置成多少合适
17. MapReduce 中有哪些关键类GenericOptionsParser:为了 Hadoop 框架解析命令行参数的工具类 InputFormate接口可以实现的类:FileInputFormat、ComposableInputformat 等,主要用于文件为输入及切割 Mapper:将输入的 kv 对映射成中间数据 kv 对集合。Maps 将输入记录转变为中间记录 Reducer:根据 key 将中间数据集合处理合并为更小的数据结果集 Partitioner:对数据按照 key 进行分区 OutputCollecter:文件输出 Combine:本地聚合,Mapper 端的 reduce? 18. Mapper 中 setup 方法是干嘛的setup 方法用于管理 Mapper 生命周期中的资源,加载一些初始化工作,每个 job 执行一次,setup 在完成 Mapper 构造,即将开始执行 map 动作前执行 19. Hadoop Shuffle 原理定义: ????????把 map 方法之后 reduce 方法之前这段处理过程称之为 Shuffle 具体步骤:
20. MapReduce 的调优????????MapReduce 优化方法主要从6个方面考虑:数据输入、Map 阶段、Reduce 阶段、IO 传输、数据倾斜和常用调优参数 数据输入:
Map 阶段:
Reduce 阶段:
IO传输:
21. Hadoop 中支持的存储格式和压缩算法存储格式:
压缩算法:
???特点: ??应用场景:
???特点: ???应用场景:
???特点: ???应用场景:
???特点: ???应用场景: 22. Hadoop 的资源调度器有哪些 FIFO(先入先出调度器) Hadoop 1.x 默认调度器 只有一个队列,将一个一个 job 任务按照时间先后顺序进行服务 Capacity Scheduler(容量调度器) hadoop 2.x 默认调度器 支持多个队列,每个队列可以配置一定量的资源,每个采用 FIFO 的方式调度 防止同一个用户的 job 任务独占队列中的资源,调度器会对同一用户提交的 job 任务所占资源进行限制 分配新的 job 任务时,首先计算每个队列中正在运行 task 个数与其队列应该分配的资源量做比值,然后选择最小的队列 其次,按照 job 任务的优先级和时间顺序,同时要考虑到用户的资源量和内存的限制,对队列中的 job 任务进行排序执行 多个队列同时按照任务队列内的先后顺序一次执行。 Fair Scheduler(公平调度器) 支持多个队列,每个队列可以配置一定资源,每个队列中的 job 任务公平共享器所在队列的所有资源 队列中的 job 任务都是按照优先级分配资源,优先级越高分配的资源越多,但是为了确保公平每个 job 任务都会分配到资源。游侠你是根据每个 job 任务的理想获取资源量减去实际获取资源量的差值决定的,差值越大优先级越高 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:59:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |