ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hadoop和yarn面试题(详解)

2021-05-10 18:00:39  阅读:329  来源: 互联网

标签:文件 面试题 Standby Reduce Hadoop yarn hadoop Namenode


  1. Hadoop优化有哪些方面
  2. 列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用
  3. Hadoop总job和Tasks之间的区别是什么?
  4. Hadoop高可用HA模式
  5. 简要描述安装配置一个hadoop集群的步骤
  6. fsimage和edit的区别
  7. yarn的三大调度策略
  8. hadoop的shell命令用的多吗?,说出一些常用的
  9. 用mr实现用户pv的top10?

1. Hadoop优化有哪些方面

0)HDFS 小文件影响

(1)影响 NameNode 的寿命,因为文件元数据存储在 NameNode 的内存中
(2)影响计算引擎的任务数量,比如每个小的文件都会生成一个 Map 任务

1)数据输入小文件处理:

(1)合并小文件:对小文件进行归档(Har)、自定义 Inputformat 将小文件存储成SequenceFile 文件。

(2)采用 ConbinFileInputFormat 来作为输入,解决输入端大量小文件场景。

(3)对于大量小文件 Job,可以开启 JVM 重用。

2)Map 阶段

(1)增大环形缓冲区大小。由 100m 扩大到 200m

(2)增大环形缓冲区溢写的比例。由 80%扩大到 90%

(3)减少对溢写文件的 merge 次数。(10 个文件,一次 20 个 merge)

(4)不影响实际业务的前提下,采用 Combiner 提前合并,减少 I/O。

3)Reduce 阶段

(1)合理设置 Map 和 Reduce 数:两个都不能设置太少,也不能设置太多。太少,会导致 Task 等待,延长处理时间;太多,会导致
Map、Reduce 任务间竞争资源,造成处理超时等错误。

(2)设置 Map、Reduce 共存:调整 slowstart.completedmaps 参数,使 Map
运行到一定程度后,Reduce 也开始运行,减少 Reduce 的等待时间。

(3)规避使用 Reduce,因为 Reduce 在用于连接数据集的时候将会产生大量的网络消耗。

(4)增加每个 Reduce 去 Map 中拿数据的并行数

(5)集群性能可以的前提下,增大 Reduce 端存储数据内存的大小。

4)IO 传输

(1)采用数据压缩的方式,减少网络 IO 的的时间。安装 Snappy 和 LZOP 压缩编码器。

(2)使用 SequenceFile 二进制文件

5)整体

(1)MapTask 默认内存大小为 1G,可以增加 MapTask 内存大小为 4-5g

(2)ReduceTask 默认内存大小为 1G,可以增加 ReduceTask 内存大小为 4-5g

(3)可以增加 MapTask 的 cpu 核数,增加 ReduceTask 的 CPU 核数

(4)增加每个 Container 的 CPU 核数和内存大小

(5)调整每个 Map Task 和 Reduce Task 最大重试次数

2. 列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用

  1. NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。

  2. SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。

  3. DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。

  4. ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。

  5. NodeManager(TaskTracker)执行任务

  6. DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active
    NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。

  7. JournalNode 高可用情况下存放namenode的editlog文件.

3. Hadoop总job和Tasks之间的区别是什么?

Job是我们对一个完整的mapreduce程序的抽象封装
Task是job运行时,每一个处理阶段的具体实例,如map task,reduce task,maptask和reduce
task都会有多个并发运行的实例

4. Hadoop高可用HA模式

HDFS高可用原理:

Hadoop HA(High
Available)通过同时配置两个处于Active/Passive模式的Namenode来解决上述问题,状态分别是Active和Standby.
Standby
Namenode作为热备份,从而允许在机器发生故障时能够快速进行故障转移,同时在日常维护的时候使用优雅的方式进行Namenode切换。Namenode只能配置一主一备,不能多于两个Namenode。

主Namenode处理所有的操作请求(读写),而Standby只是作为slave,维护尽可能同步的状态,使得故障时能够快速切换到Standby。为了使Standby
Namenode与Active Namenode数据保持同步,两个Namenode都与一组Journal
Node进行通信。当主Namenode进行任务的namespace操作时,都会确保持久会修改日志到Journal
Node节点中。Standby Namenode持续监控这些edit,当监测到变化时,将这些修改同步到自己的namespace。

当进行故障转移时,Standby在成为Active Namenode之前,会确保自己已经读取了Journal
Node中的所有edit日志,从而保持数据状态与故障发生前一致。

为了确保故障转移能够快速完成,Standby
Namenode需要维护最新的Block位置信息,即每个Block副本存放在集群中的哪些节点上。为了达到这一点,Datanode同时配置主备两个Namenode,并同时发送Block报告和心跳到两台Namenode。

确保任何时刻只有一个Namenode处于Active状态非常重要,否则可能出现数据丢失或者数据损坏。当两台Namenode都认为自己的Active
Namenode时,会同时尝试写入数据(不会再去检测和同步数据)。为了防止这种脑裂现象,Journal
Nodes只允许一个Namenode写入数据,内部通过维护epoch数来控制,从而安全地进行故障转移。

5. 简要描述安装配置一个hadoop集群的步骤

  1. 使用root账户登录。

  2. 修改IP。

  3. 修改Host主机名。

  4. 配置SSH免密码登录。

  5. 关闭防火墙。

  6. 安装JDK。

  7. 上传解压Hadoop安装包。

  8. 配置Hadoop的核心配置文件hadoop-evn.sh,core-site.xml,mapred-site.xml,hdfs-site.xml,yarn-site.xml

  9. 配置hadoop环境变量

  10. 格式化hdfs # bin/hadoop namenode -format

  11. 启动节点start-all.sh

6. fsimage和edit的区别

fsimage:filesystem image 的简写,文件镜像。

客户端修改文件时候,先更新内存中的metadata信息,只有当对文件操作成功的时候,才会写到editlog。

fsimage是文件meta信息的持久化的检查点。secondary
namenode会定期的将fsimage和editlog合并dump成新的fsimage

7.yarn的三大调度策略

FIFO
Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。

Capacity(容量)调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。

在Fair(公平)调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源。当第一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。

需要注意的是,在下图Fair调度器中,从第二个任务提交到获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的Container。小任务执行完成之后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。

8. hadoop的shell命令用的多吗?,说出一些常用的

-ls

-put

-get

-getmerge

-mkdir

-rm

9. 用mr实现用户pv的top10?

map输入数据,将数据转换成(用户,访问次数)的键值对,然后reduce端实现聚合,并且将结果写入用户、访问次数的实体类,并且实现排序,最后的结果做一个top10的筛选

标签:文件,面试题,Standby,Reduce,Hadoop,yarn,hadoop,Namenode
来源: https://blog.csdn.net/weixin_51194902/article/details/116602818

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有