ToB企服应用市场:ToB评测及商务社交产业平台

标题: 大数据——分布式文件系统HDFS [打印本页]

作者: 盛世宏图    时间: 2024-10-3 19:58
标题: 大数据——分布式文件系统HDFS
分布式文件系统HDFS

   参考书目:人民邮电出书社《大数据技术》
  一、概述

1.什么是分布式文件系统

分布式文件系统(Distributed File System)是一种通过网络连接多台主机并在这些主机上进行分布式文件存储的文件系统,目前被广泛应用的有GFS和HDFS
2.什么是计算机集群布局

若干主机放在机架上,若干机架通过交换机相连共同构成的一个计算机集群通常可用于分布式文件系统。
3.分布式文件系统的布局

在windows大概Linux操纵系统中,文件系统会把磁盘空间分别为固定大小的一块,被称为“磁盘块”,文件系统中“块”的大小通常是磁盘块大小的整数倍,以便于读写。当一个文件小于数据块,他也会完整占用整个数据块。
分布式文件系统也有块的概念,只是在平凡操纵系统中,一个块通常比较小,是以字节为单位的,但是对于分布式文件系统,好比HDFS,一个块默以为64MB,而且如果一个文件大小小鱼一个数据块时,他也不单独完全占用一个数据块。
分布式文件系统在物理层面上由一个个节点构成,这些节点分为两类,一类叫做“主节点”/“名称节点”,另外一种叫做“从节点”/“数据节点”。主节点会负责一些重要的关乎大局的事务,好比文件和目录的创建删除重定名等,以及存储了数据节点和文件之间的映射关系,数据节点负责数据的存储,其他概不负责。
在数据的读写过程中,流程往往是这样的:
4.分布式文件系统的计划需求

透明性、并发控制、文件复制、硬件和操纵系统的异构性、可伸缩性、容错、安全需求
二、HDFS简介

HDFS原来是Apache Nutch搜索引擎的一部分,厥后独立成为一个子项目,并和MapReduce一起成为Hadoop的核心构成部分。HDFS支持流数据读取和处理惩罚超大规模文件,并且可以在廉价的平凡机器构成的集群上部署和使用,其被要求实现以下目的:(特点)

三、HDFS的干系概念

1. 块

传统的文件系统中,为了进步磁盘读写利用率,通常会把按照一定的大小把须要读写的文件分成一个一个的块,每次读写一个数据块,这样做可以避免每次数据读写大小不一致造成的资源浪费。
HDFS默认的一个块为64MB,明显大于传统文件系统,这是因为HDFS定位是处理惩罚大数据,采用较大的数据块可以减少磁盘寻道开销。具有以下好处:

2. 名称节点和数据节点

名称节点负责管理分布式文件系统的定名空间,生存了FsImage和EditLog两个数据布局:

3. 第二名称节点

当EditLog记载过多操纵之后,会导致EditLog文件也变大,进而影响到系统效率,于是产生了第二名称节点,可以完成EditLog和FsImage的合并操纵,形成新的FsImage文件。具体过程如下:

四、HDFS体系布局

1. 概述

HDFS采用了主从布局模型,包含一个名称节点和若干个数据节点,每个数据节点会周期性的向名称节点发送“心跳”信号陈诉自己的状态,如果没有按时发送陈诉信息,则这个数据节点会被标志为“死机”不会再给这个数据节点分配IO请求。
对用户来说,HDFS可以使用文件名去存储和访问文件,固然一个文件会被分为若干份分布存储到若干个数据节点上。
客户端访问文件前,把文件名发送给名称节点,名称节点会根据文件名查询数据对应存储的数据块,并把数据节点的位置发送给客户端,客户端直接访问数据节点获取数据,在此过程中,数据节点不参与数据的传输,这样可以让数据节点并发访问,进步数据访问速度。用户数据不会经过名称节点,这样大大减轻了中央服务器的负担,方便数据管理。
2. 定名空间管理

HDFS的定名空间包含目录、文件和块,定名空间管理是指定名空间支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除等基本操纵。
3. 通信协议

客户端与名称节点直接使用TCP/IP协议连接,名称节点和数据节点之间使用数据节点协议进行交互,客户端与数据节点之间使用远程调用RPC实现。
4. 客户端

客户端不算HDFS的一部分
5.HDFS体系布局的范围性

HDFS通过设置一个名称节点的方式,简化了系统计划,但是也造成了以下明显的范围性:
五、HDFS的存储原理

1. 数据的冗余存储

HDFS采用了多副本方式对数据进行冗余存储,一个数据块的多个副本会被放置在差别机架的差别的数据节点上,一般是三个,他有以下优点:

2. 数据存取策略


3. 数据错误与恢复

名称节点堕落:

六、HDFS的数据读写过程

FileSystem是一个通用文件系统的抽象类,可以被分布式文件系统继承,所有大概使用Hadoop文件系统的代码都要使用这个类(java语言)。
DistributedFileSystem时FileSystem在HDFS中的实现。
FileSystem中的open()方法返回的是一个输入流FSDataInputStream对象,在HDFS中具体的输入流就是DFSInputStream。
FileSystem中的create()方法返回的是一个输出流FSDataOutputStream对象,在HDFS中具体的输出流就是DFSOutputStream。
1. 读数据的过程

2. 写数据的过程

简单来说吧

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4