学习笔记(二)

Hadoop 架构

HDFS:分布式文件存储
YARN:分布式资源管理
MapReduce:分布式计算
Others:利用YARN的资源管理功能实现其他的数据处理方式
内部各个节点基本都是采用 Master-Worker 架构

Hadoop HDFS
Hadoop Distributed File System,分布式文件系统

HDFS 架构

Block 数据块

基本存储单位,一般大小为 128M,配置大的块主要因为:
减少搜索时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间;
减少管理块的数据开销,每个块都需要在 NameNode 上有对应的记录;
对数据块进行读写,减少建立网络的连接成本。
一个大文件会被拆分为一个个的块,然后存储于不同的机器上。如果一个文件小于 Block 大小,那么实际占用空间为其文件的大小。
基本的读写单位,类似磁盘的页,每次都是读写一个块。
每个块都会被复制到多台机器,默认复制3份。
NameNode

存储文件的 metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于 NameNode 的内存大小。
一个Block在 NameNode 中对应一条记录(一般一个Block占用150字节),如果是大量的小文件,会消耗大量内存。同时 map task 的数量使用 splits 来决定的,所以用 MapReduce 处理大量的小文件时,就会产生过多的 map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此 Hadoop 建议存储大文件。
数据会定时保存到本地磁盘,但不保存 Block 的位置信息,而是由 DataNode 注册时上报和运行时维护(NameNode 中与 DataNode 相关的信息并不保存到 NameNode 的文件系统中,而是 NameNode 每次重启后,动态创建)。
NameNode 失效则整个HDFS都失效了,所以要保证 NameNode 的可用性。
Secondary NameNode

定时与 NameNode 进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的结果传给 NameNode,替换其镜像,并清空编辑日志,类似于 CheckPoint 机制),但 NameNode 失效后仍需要手工将其设置成主机。

DataNode

保存具体的 Block 数据。
负责数据的读写操作和复制操作。
DataNode 启动时会向 NameNode 报告当前存储的数据块信息,后续也会定时报告修改信息。
DataNode 之间会进行通信,复制数据块,保证数据的冗余性。

HDFS的优缺点

1、优点
因为有多个副本,可以保证数据可靠,容错性高
计算向数据移动,适用于批处理
适合大数据处理,GB、TB、PB级数据,百万以上的文件,十万以上的节点
可以构建在廉价机器上,通过多副本提高可靠性

2、缺点
不支持低延迟的数据访问,无法再毫秒之内返回结果
小文件对于HDFS是致命的,会占用大量的NameNode的存储空间
并发写入和文件随机修改困难,因为它一个文件在同一时刻只能有一个写入者,而且只支持append

(1)读过程
1.初始化FileSystem,然后客户端(client)用FileSystem的open()函数打开文件

2.FileSystem用RPC调用元数据节点,得到文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。

3.FileSystem返回FSDataInputStream给客户端,用来读取数据,客户端调用stream的read()函数开始读取数据。

4.DFSInputStream连接保存此文件第一个数据块的最近的数据节点,data从数据节点读到客户端(client)

5.当此数据块读取完毕时,DFSInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。

6.当客户端读取完毕数据的时候,调用FSDataInputStream的close函数。

7.在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点。

8.失败的数据节点将被记录,以后不再连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值