hadoop2.0内核介绍

1  hadoop2.0内核


1.1 HDFS


分布式文件存储系统HDFS,提供高可用、高扩展性、高吞吐率的数据存储服务

高可用:NameNode通过zookeeper实现高可用

高扩展性:可以通过添加服务器来水平扩展hadoop集群

将文件切分成等大的数据块,存储到多台机器上,并且数据块是冗余存储,高容错性

可以将HDFS看成是一个容量巨大、高容错的磁盘

提供了移动计算,而非移动数据移动,只是将数据位置暴漏给计算框架,提高批处理效率

适用于海量数据的可靠性存储

数据归档,落地


缺点:

不适合低延时数据访问

不适合小文件存取,当小文件数量非常多的时候,元数据(文件位置、大小等)信息占用大量内存,寻道时间超过读取时间长

不适合并发写入、随机修改,一个文件只能有一个写,仅支持追加操作,不支持修改


架构:

NameNode Active 、NameNode Standby和DataNode

NameNode Active存储一些元数据信息(一个文件被分割成几个数据块,每一个数据块对应的DataNode的位置)

DataNode存储真正的数据块

NameNode Standby是NameNode Active的热备,当NameNode宕机之后,可以迅速切换到NameNode Standby


HDFS数据块:

文件会被默认切分成固定大小的数据块,可以配置,默认是64M

数据块如此之大,可以保证大部分时间花费在传输时间上,而不是寻道时间,确保高吞吐率


HDFS写流程:

客户端写入数据时,打开分布式文件系统,通知namenode创建一个文件(namenode先确定该文件不存在,并确定客户端有权限),之后客户端通过写入流将数据写入数据队列,DataStreamer负责处理数据队列,要求namenode分配适合的datanode来存储数据副本,每一个数据库默认复制三块,将数据写入第一个datanode,第一个datanode将数据块发送给第二个datanode,第二个数据块再给第三个,之后datanode告知数据写入成功


HDFS读流程:

客户端读取数据时,先去namenode获取元数据的位置,到对应的datanode进行IO读取


HDFS数据块部署策略:

一个文件分割成多个block,每一个block存储多份,首先将两个副本放置在同一个机架的上,再将第三个副本放置在不同机架上的节点


HDFS可靠性策略:

文件锁坏:副本冗余

网络或机器失败:DataNode定期向NameNode发送心跳信息

NameNode挂掉:主备热备


1.2 YARN


hadoop2.0新增的系统

资源管理系统YARN,负责集群资源的统一管理和调度

使得多种计算框架可以运行在一个集群中(计算框架:MapReduce、spark、storm)

良好的可扩展性、高可用

ResourceManager和NodeManager

ResourceManager:

           集群资源的统一管理和调度

           处理客户端请求

           启动/监控ApplicationMaster,接收来自ApplicationMaster的资源申请,并且为其分配资源

           监控NodeManager,接收来自NodeManager的资源和健康汇报

ApplicationMaster:

           负责每一个应用程序的资源调度,资源申请,任务容错

NodeManager:

          单个节点上的资源管理和任务管理

          处理来自ResourceManager和ApplicationMaster的命令

          NodeManager宕机后,ResourceManager会通知对应的ApplicationMaster

Container:

         任务运行资源的封装,如内存、cpu

          任务运行环境


       1 client提交应用程序到ResourceManager上,提交的同时将ApplicationMaster相关信息告知ResourceManager

       2 ResourceManager根据ApplicationMaster寻找到对应资源的NodeManager

       3 NodeManager接收到RsourceManager命令后,将ApplicationMaster启动起来

       4 ApplicationMaster提交资源信息给ResourceManager,要求ResourceManager分配资源

       5 ApplicationMaster拿到资源后,与对应的NodeManager通信,要求启动一个Task


ResourceManager HA

ResourceManager通过Zookeeper解决单点故障,实现类了自动切换

NodeManager失败,ResourceManager将失败任务告知ApplicationMaster,ApplicationMaster处理

ApplicationMaster失败,ResourceManager重启


YARN资源调度特征

双层调度:ResourceManager将资源分配给ApplicationMaster,ApplicationMaster将资源进一步分配给Task

调度策略:资源预留,当Task资源不足时,预留资源给Task,直至资源充足

多类型资源调度:支持CPU、内存两种资源


1.3 MapReduce计算框架


分布式计算框架MapReduce

良好的可扩展性,高容错

适合海量数据的离线处理

计算过程分为两个Map阶段和Reduce阶段,Map阶段并行处理输入数据,Reduce阶段对Map阶段结果进行汇总

Shuffle连接Map和Reduce两个阶段,Map阶段将产生的结果写入到本地磁盘,reduce阶段从其读取结果

Map阶段由一定数量的Map Task组成:数据格式解析InputFormat、输入数据处理Mapper、数据分组Partitioner

Reduce阶段由一定数量的Reduce Task组成:数据远程拷贝、数据按照key排序、数据处理Reducer、数据输出格式OutputFormat

编程模型:
Map阶段
InputFormat (默认TextInputFormat),将分片数据解析成key/value对
Mapper
Combiner(local reducer),相当于本地reducer,与Reduce逻辑一致,优化计算效率
Partitioner,决定Map Task输出的每条数据交给哪个Reduce Task处理,默认实现为hash(key) mod R ,R为reduce Task的数量

Reduce阶段
Reducer
OutputFormat(默认TextInputFormat)


数据本地性

同一个机架共用一个交换机,不同机架之间交换信息需要跨越多个交换机进行通信

任务运行在它将处理的数据所在节点上,称为数据本地性,数据本地性可以避免节点或机架数据传输,提高效率

分类:同节点、同机架、其它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值