Hadoop和yarn面试题(详解)

  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的筛选

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若能绽放光丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值