TypechoJoeTheme

IT技术分享

统计

Hadoop简介——HDFS的体系结构

2015-10-27
/
0 评论
/
637 阅读
/
正在检测是否收录...
10/27

HDFS是Hadoop的分布式文件系统。

一、设计原理

设计HDFS考虑的五个因素:

  • 硬件故障是常态而非偶然因素(最核心的目标)
  • HDFS适用于批处理的数据处理场景,采用高效的流式访问。
  • 计算节点容易扩充,把运算能力赋予数据单元
  • 简单的数据一致性模型(一次写入多次读出的访问模型)
  • 异构平台可移植性。

二、基本概念

以下是四个基本概念:

  • 机架:HDFS集群由分部在大量机架上的DataNode组成。
  • 数据块:是HDFS最基本的存储单元。默认的数据块大小是64M(Hadoop为128M)。
  • 元数据:是文件和目录的属性信息。采用了镜像文件(Fsimage)+日志文件(Editlog)的机制
  • 用户数据:以数据块的形式存储在DataNode上。

三、节点通信

不同机架节点间通过交换机通信(TCP协议)。HDFS通过机架感知策略使NameNode能够确定每个DataNode所属的机架ID。使用副本存放策略,改进数据的可靠性、可用性和网络带宽的利用率。

通过心跳机制DataNode向NameNode报告自己仍然存活。每十次心跳后,向NameNode发送一次数据块报告,告诉自己存储的数据块信息。通过这些信息,NameNode能够重建元数据,并确保每个数据块有足够的副本

四、写数据流程

hadoop-hdfs-1

步骤:

  • 客户端通过Open函数打开分布式文件系统
  • 分布式文件系统通过远程过程调用访问NameNode,在文件系统中创建一个新的文件。
  • 客户端通过文件系统输出流开始写入数据
  • 文件系统输出流将文件分成块写入数据队列,DataStream负责处理队列,
  • 将数据块写入一个DataNode,然后这个DataNode将数据块发送给另一个DataNode。。。
  • 数据写完后,文件系统输出流将受到确认包。
  • 调用Close函数,关闭写入流,标志本次写入完毕。

五、读数据流程

hadoop-hdfs-2

步骤:

  • 客户端调用Open函数打开文件
  • 分布式文件系统通过远程过程调用访问NameNode,得到文件的数据块信息
  • 客户端调用文件系统输入流开始读入数据
  • 文件系统输入流根据相应策略向DataNode发起连接。
  • 建立了连接的DataNode向客户端返回相应的数据块内容。
  • 当本DataNode数据读完后,关闭连接并向下一个DataNode发送连接请求。
  • 当请求的数据块都读取后,关闭文件系统输入流。
  • 当读取出错,就会向副本发出连接请求,并记录错误的DataNode,报告给NameNode。

 

朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/853/(转载时请注明本文出处及文章链接)