HDFS+MapReduce常见问题

  • 首次启动Namenode时怎么格式化?为什么要格式化?非首次启动时,是否只要成功启动了Namenode 和Datanode ,HDFS就能立刻对外提供服务?
    • 1 会生成namenode文件目录结构
    • 2 确定了三个ID namespace cluster blockpool
    • 3 生成了fsimage_000

不会立刻对外提供服务,
namenode启动过程 :

  • 开启安全模式
  • 加载fsimage
  • 逐个执行所有的Edits文件中的每一条操作讲操作合并到fsiamge,完成后生成一个空的edits
  • 接受datanode提供的块信息和心跳信息
  • 根据以上信息确定文件系统的状态
  • 退出安全模式

退出安全模式的条件:

  • 达到最小可用的datanode数量
  • 副本数达到最小要求的block占系统总block的百分比
  • 稳定时间 30s

调整HDFS上的数据块大小分别会造成哪些影响?可能出现的问题的解决方案

  • 设置小数据块的影响:存放大量小文件会占用namenode中大大量内存来存储元数据,会增加寻址时间
  • 设置大数据块的影响:磁盘传输数据的时间明显大于寻址时间,导致程序处理这块数据变得非常慢

大量小文件问题 :

  1. 从源头减少小文件
  2. 使用archive 打包
  3. 使用其他储存方式,如Hbase,ES等

简述Capacity Scheduler资源调度器算法启动具体到container的流程

Capacity Scheduler : 容量调度器

  • 1 选择队列
    • 从跟队列开始 ,使用深度优先算法找出资源占用率最低的叶子节点
  • 2 选择作业
    • 默认按照作业优先级和提交时间顺序选择
  • 3 选择Container
    • 取该作业中最高优先级的Container
      如果优先级相同会选择满足 本地性的Container
      node Local > Rack Local > Diffrent Rack

Capacity Scheduler 和 Fair Scheduler 不同点:前者不支持为每个队列单独设置调度策略,而后者支持

简述每个Container是如何决定启动的,并说明Container里面包含哪些内容?

  • container 包括的内容:

    • 可使用的CPU 资源和内存资源
    • 执行命令
    • 环境变量
    • 外部资源
  • 1 用户向yarn提交应用程序 ,其中报告用户程序,相关文件,启动applicationMaster命令

  • 2 ResourceManager 为该应用程序分配一个Container,并且与Container 所在的NodeManager 通信,要求NodeManager在这个Container中启动应用程序对应的applicationMaster

  • 3 applicationMaster首先会向ResourceManager注册 ,用户可以直接通过ResourceManager查看应用程序状态,然后为它准备该应用程序各个任务申请资源,并监控他们的运行状态直到运行结束 重复4-7步骤

  • 4 applicationMaster 采取轮询的方式通过RPC协议向ResourceManager申请和领取资源

  • 5 一旦applicationMaster申请到资源后,便会与申请到的Container所对应的nodeManager进行通信,并且要求它在该Container中启动任务

  • 6 任务启动,nodeManager为要启动的任务配置好环境,包括环境变量,jar包,二进制程序

  • 7 各个任务通过RPC 协议向其对应的applicationMaster汇报自己的运行状态和进度,以让applicationMaster随时掌握各个人物的运行状态,从而可以再任务运行失败是重启任务

  • 8 运行完毕后,applicationMaster会向ResourceManager要求注销自己

MapReduce性能瓶颈在哪,如何优化?

  • 执行任务的时间很长 瓶颈 计算机性能
  • I/O操作
    • 1 数据倾斜
    • 2 Map Reduce 数设置不合理
    • 3 小文件过多
    • 4 spill次数过多
  • 优化 :
    • 数据输入
    • Map任务。特别大的文件和特别小的文件都会影响Map任务的性能。性能低下的代码也会有影响。(combiner )
    • Reduce任务。数据倾斜(data skew),reduce的数量,未经优化的代码都会影响reduce的性能。
    • IO传输
    • 数据倾斜问题
    • 常见的调优参数

yarn中的资源为什么要进行抽象?对集群的横向扩展有什么影响?

  • 为了提升集群的利用率、资源统一管理, 使用YARN为上层应用提供统一的资源管理和调度的平台。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值