(一)Hadoop组成

Hadoop的优势

  1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
  2. 高拓展性:在集群间分配任务数据,可方便的拓展数以千计的节点
  3. 高效性:在MR的思想下,Hadoop是并行工作的,以加快任务处理速度
  4. 高容错性:能够自动将失败的任务重新分配

Hadoop的组成:

在这里插入图片描述

HDFS(数据存储)架构概述

HDFS时一个文件系统,用于存储文件,通过目录树来定义文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
使用场景:适合一次写入,多读读出的场景,且不支持文件的修改。适合用来做数据分析,不适合用来做网盘应用
优缺点
优点——
1) 高容错,数据自动保存多个副本。它通过增加副本的形式,提高容错性。一个副本丢失之后,它自动恢复。
2)适合处理大数据。
3)可构建在廉价的机器上,通过多副本机制,提高可靠性。
缺点——
1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
2)无法高效的对大量小文件进行存储。存储大量的小文件,会占用NameNode大量的内存来存储文件目录和块信息。而且小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3)不支持并发写入、文件随机修改。一个文件只能有一个写,不允许多个线程同时写。仅支持数据追加,不支持文件的随机修改。
在这里插入图片描述

NameNode(nn)

就是master,它是一个主管、管理者。
1) 管理HDFS的名称空间
2)配置副本策略
3)管理数据块(block)映射信息
4)处理客户端读写请求
存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的Datanode //书籍目录

DataNode(dn)

1)存储实际的数据块
2)执行数据块的读/写操作
在本地文件系统存储文件块数据,以及数据的校检和。 //书籍内容

Client客户端

1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的block,然后进行上传
2)与NameNode交互,获取文件的位置信息。
3)与DataNode交互,读取或写入数据。
4)Client提供一些命令来管理HDFS,比如NameNode格式化。
5)Client可用通过一些命令来对HDFS增删改查操作。

Secondary NameNode(2nm)

用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照;
并非是NameNode的热备,当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;
2) 在紧急情况下,可辅助恢复NameNode

HDFS文件块的大小

HDFS中的文件在物理上是分块存储,块的大小可以通过配置参数来规定,默认大小在Hadoop2.0x版本是128M,老版本是64M。
HDFS块的设置大小取决于磁盘传输速率。
1)如果块的设置太小,会增加寻址时间,程序一直在找块的开始位置
2)如果块的设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。

YARN(资源调度)架构概述

在这里插入图片描述

ResourceManager(RM)

  1. 处理客户端请求
  2. 监控NodeManager
  3. 启动或监控ApplicationMaster
  4. 资源的分配和调度

NodeManager(NM)

  1. 管理来自单个节点上的资源
  2. 处理来自ResourceManager的命令
  3. 处理来自ApplicationMaster的命令

ApplicationMaster(AM)

  1. 负责数据的切分
  2. 为应用程序申请资源并分配给内部的任务
  3. 任务的监控与容错

Container

Container的YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等

MapReduce架构

MapReduce将结果分为两个阶段:Map和Reduce
从HDFS内部看,一个文件储存到HDFS后,被分成一个或多个数据块(block),这些数据块存储在Datenode上。数据块与MapReduce的处理单位split相对应:

在这里插入图片描述
1.map任务处理

(a)读取文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一个map函数。

(b)在map函数中可以编写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

©对输出的key、value进行分区。

(d)对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。

2.reduce任务处理

(a)对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

(b)对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、reduce处理,转换成新的key、value输出。

©把reduce的输出保存到文件中。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值