Hadoop学习总结

本文为Hadoop学习总结,分为HDFS,MapReduce,YARN三部分

一、HDFS

1个Master(NameNode/NN),N个Slave(DataNode/DN)

1个文件会被拆分为多个Block
BlockSize:128M

NN:
1)负责客户端请求的相应
2)负责元数据(文件的名称,副本系数,Block存放的DN)的管理

DN:
1)存储用户文件对应的数据块(Block)
2)定期向NN发送心跳信息,汇报本身以及其所有的Block信息,健康状况

文件系统映像(fsimage),编辑日志(edits log),辅助NN:
1)fsimage:每个fsimage文件都是文件系统元数据的一个完整的永久性检查点
2)edits log:客户端执行操作时,事务首先被记录到edits log文件中,当edits log文件被修改时,相关元数据信息也同步更新
3)辅助NN:辅助NN不能用作NN,它的作用是定期合并edits log和fsimage,以防止edits log过大

NN的启动过程:
NN启动时,首先将fsimage文件载入内存,并执行edits log文件中的各项编辑操作(如果edits log文件过大,会导致启动操作较慢)。一旦在内存中成功创建元数据的映像,则创建一个新的fsimage文件(该过程不需辅助NN)和一个空的edits log文件。此过程中,NN运行在安全模式

创建fsimage的步骤:
1)辅助NN请求NN停止使用正在进行的edits log文件,新的编辑操作将记录到新的edits log文件中
2)辅助NN从NN获取最近的fsimage文件和edits log文件
3)辅助NN将fsimage文件载入内存,逐一执行edits log文件中的事务,创建新的合并后的fsimage文件
4)辅助NN将新的fsimage文件发送回NN,NN将其保存为临时的.ckpt文件
5)NN重新命名临时的fsimage文件,便于日后使用

最终,NN拥有最新的fsimage文件和一个更小的正在进行的edits log文件(可能非空,因为在创建检查点时NN还可能收到一些编辑请求)
由上过程可知,NN与辅助NN需运行在不同的两台专用机器上

Hadoop2的HA支持:
即使在多个文件系统中备份NN元数据和通过辅助NN创建检查点能防止数据丢失,但是依然无法解决HDFS的NN单点失效问题,为此Hadoop2增加了对HDFS高可用性(HA)的支持:即一对活动-备用(active-standby)NN。当活动NN失效后,备用NN就会接管它的任务并开始服务于来自客户端的请求,不会有明显中断。为实现这一目标,需要在架构上做如下修改:
1)NN之间需要通过高可用共享存储(NS过滤器或QJM)实现edits log文件的共享。当备用NN接管工作后,它将通读共享edits log文件直至末尾,实现与活动NN的状态同步,并继续读取由活动NN写入的新条目
2)DN需要同时向两个NN发送数据块处理报告
3)客户端需要使用特定的机制来处理NN失效的问题,此机制对用户透明
4)辅助NN的角色被备用NN所包含,备用NN为活动NN命名空间设置周期性检查点

优点:
1)高容错
2)适合批处理
3)适合大数据处理
4)可构建在廉价机器上

缺点:
1)数据访问延迟较高
2)不适合大量小文件存储

二、MapReduce

input --> map&reduce --> output

shuffle:混洗(每个reduce任务输入都来自许多的map任务输出)

combiner(优化方案,为减少map任务与reduce任务之间的数据传输量):为map输出制定一个combiner,combiner输出作为reduce输入,其不影响reduce输出结果

combiner与reduce区别:combiner处理相同map输出中具有相同键的记录,reduce处理不同map输出中具有相同键的记录

三、YARN

为什么需要YARN?
1)解决MapReduce1.x存在的问题:
JobTracker:资源管理,任务调度
TaskTracker:任务执行
JobTracker为单点,如宕机导致整个任务无法执行
2)资源利用率&运维成本

1个ResourceManager(RM),N个NodeManager(NM)

RM(一个集群只有一个active状态的RM):
1)处理客户端请求(启动/杀死)
2)启动/监控ApplicationMaster(一个作业对应一个AM)
3)监控NM
4)系统的资源分配,调度

NM(一个集群有N个):
1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态
2)接受并处理RM的Container启停的各种命令
3)单个节点的资源管理和任务管理

ApplicationMaster(每个应用/作业对应一个):
1)数据切分
2)为应用程序向RM申请资源(Container),并分配给内部任务
3)与NM通信以启停task,task运行在Container中
4)task的监控及容错

Container:
1)任务运行情况的描述:CPU,Memory等

YARN执行流程:
1)Client向YARN提交作业
2)RM为该作业分配第一个Container
3)RM与对应的NM通信,要求NM在这个Container上启动应用程序的AM
4)AM首先向RM注册,准备为各个任务申请资源并监控运行情况
5)AM采用轮询方式通过RPC协议向RM申请和领取资源
6)AM申请资源完成后,和相应的NM通信,要求NM启动任务
7)NM启动作业对应的task

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值