问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是HDFS硬盘分布式存储?

发布网友 发布时间:2022-04-19 23:45

我来回答

1个回答

热心网友 时间:2023-09-07 00:51

Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟哪个DataNode联系,否则NameNode会成为系统的瓶颈。
副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延
Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

NameNode支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作。 块存储管理,在整个HDFS集群中有且只有唯一一个处于active状态NameNode节点,该节点负责对这个命名空间(HDFS)进行管理。

1、Name启动的时候首先将fsimage(镜像)载入内存,并执行(replay)编辑日志editlog的的各项操作;
2、一旦在内存中建立文件系统元数据映射,则创建一个新的fsimage文件(这个过程不需SecondaryNameNode) 和一个空的editlog;
3、在安全模式下,各个datanode会向namenode发送块列表的最新情况;
4、此刻namenode运行在安全模式。即NameNode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败);
5、NameNode开始监听RPC和HTTP请求
解释RPC:RPC(Remote Procere Call Protocol)——远程过程通过协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议;
6、系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中;
7、在系统的正常操作期间,namenode会在内存中保留所有块信息的映射信息。
存储文件,文件被分成block存储在磁盘上,为保证数据安全,文件会有多个副本 namenode和client的指令进行存储或者检索block,并且周期性的向namenode节点报告它存了哪些文件的blo
文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)
NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等
DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。
可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。

NameNode启动流程
1、Name启动的时候首先将fsimage(镜像)载入内存,并执行(replay)编辑日志editlog的的各项操作;
2、一旦在内存中建立文件系统元数据映射,则创建一个新的fsimage文件(这个过程不需SecondaryNameNode) 和一个空的editlog;
3、在安全模式下,各个datanode会向namenode发送块列表的最新情况;
4、此刻namenode运行在安全模式。即NameNode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败);
5、NameNode开始监听RPC和HTTP请求
解释RPC:RPC(Remote Procere Call Protocol)——远程过程通过协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议;
6、系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中;
7、在系统的正常操作期间,namenode会在内存中保留所有块信息的映射信息。
HDFS的特点

优点:
1)处理超大文件
  这里的超大文件通常是指百MB、数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。

2)流式的访问数据
HDFS的设计建立在更多地响应"一次写入、多次读取"任务的基础上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。

3)运行于廉价的商用机器集群上
Hadoop设计对硬件需求比较低,只须运行在低廉的商用硬件集群上,而无需昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求设计HDFS时要充分考虑数据的可靠性,安全性及高可用性。

缺点:
1)不适合低延迟数据访问
如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。

2)无法高效存储大量小文件
  因为Namenode把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由Namenode的内存大小来决定。一般来说,每一个文件、文件夹和Block需要占据150字节左右的空间,所以,如果你有100万个文件,每一个占据一个Block,你就至少需要300MB内存。当前来说,数百万的文件还是可行的,当扩展到数十亿时,对于当前的硬件水平来说就没法实现了。还有一个问题就是,因为Map task的数量是由splits来决定的,所以用MR处理大量的小文件时,就会产生过多的Maptask,线程管理开销将会增加作业时间。举个例子,处理10000M的文件,若每个split为1M,那就会有10000个Maptasks,会有很大的线程开销;若每个split为100M,则只有100个Maptasks,每个Maptask将会有更多的事情做,而线程的管理开销也将减小很多。

1280M 1个文件 10block*150字节 = 1500 字节 =1.5KB
1280M 12.8M 100个 100个block*150字节 = 15000字节 = 15KB

3)不支持多用户写入及任意修改文件
  在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。

四、HDFS文件 读写流程
4.1 读文件流程

(1) 打开分布式文件
调用 分布式文件 DistributedFileSystem.open()方法。
(2) 从 NameNode 获得 DataNode 地址
DistributedFileSystem 使用 RPC 调用 NameNode, NameNode返回存有该副本的 DataNode 地址, DistributedFileSystem 返回一个输入流 FSDataInputStream对象, 该对象封存了输入流DFSInputStream。
(3) 连接到DataNode
调用 输入流 FSDataInputStream 的 read() 方法, 从而输入流DFSInputStream 连接 DataNodes。
(4) 读取DataNode
反复调用 read()方法, 从而将数据从 DataNode 传输到客户端。
(5) 读取另外的DataNode直到完成
到达块的末端时候, 输入流 DFSInputStream 关闭与DataNode 连接,寻找下一个 DataNode。
(6) 完成读取, 关闭连接
即调用输入流 FSDataInputStream.close() 。

4.2 写文件流程

(1) 发送创建文件请求: 调用分布式文件系统DistributedFileSystem.create()方法;
(2) NameNode中创建文件记录: 分布式文件系统DistributedFileSystem 发送 RPC 请求给namenode, namenode 检查权限后创建一条记录, 返回输出流 FSDataOutputStream, 封装了输出流 DFSOutputDtream;
(3) 客户端写入数据: 输出流 DFSOutputDtream 将数据分成一个个的数据包, 并写入内部队列。 DataStreamer 根据 DataNode 列表来要求 namenode 分配适合的新块来存储数据备份。一组DataNode 构成管线(管线的 DataNode 之间使用 Socket 流式通信)
(4) 使用管线传输数据: DataStreamer 将数据包流式传输到管线第一个DataNode, 第一个DataNode 再传到第二个DataNode ,直到完成。
(5) 确认队列: DataNode 收到数据后发送确认, 管线的DataNode所有的确认组成一个确认队列。 所有DataNode 都确认, 管线数据包删除。
(6) 关闭: 客户端对数据量调用close() 方法。 将剩余所有数据写入DataNode管线, 并联系NameNode且发送文件写入完成信息之前等待确认。
(7) NameNode确认
(8) 故障处理: 若过程中发生故障, 则先关闭管线, 把队列中所有数据包添加回去队列, 确保数据包不漏。 为另一个正常DataNode的当前数据块指定一个新的标识, 并将该标识传送给NameNode, 一遍故障DataNode在恢复后删除上面的不完整数据块. 从管线中删除故障DataNode 并把余下的数据块写入余下正常的DataNode。 NameNode发现复本两不足时, 会在另一个节点创建一个新的复本
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我要买狗!!!高手来!!!人在天津 93年,骗子一人设局卖掉河北1座大桥,被捕后大笑:他们真去拆了 看了很多狗,不知道为什么我就是喜欢京巴,真的超可爱,找了很多地方都没... 植物大战僵尸魔幻版怎么安 怎么下载植物大战僵尸魔幻最新版 植物大战僵尸魔幻版中文版下载 植物大战僵尸魔幻版中文在哪下载 以闪亮之名体验服官方正版如何下载 以闪亮之名 以闪亮之名内测版什么时候上线? 两个三角形放在一起,重叠部分的面积占小三角形3分之一,占大三角形的... 我做了个相似性的算法,要与数据库上百万比对,其... 如果有一个集群有三个datanode,当有一个出现错误,H... HDFS,的通信协议是通过什么来构建的?客户端与数据... 那个知道js防水涂料配方 有谁懂js防水涂料配方 如何使用Js防水材料 JS属于刚性防水材料吗 JS防水涂料与聚氨酯防水涂料区别是什么? js防水涂料是什么 js防水涂料优缺点 JS防水涂料1型和2型有什么不同 JS聚合物水泥防水涂料与JS复合防水涂料有什么区别? 水泥基渗透结晶型防水涂料和JS防水涂料有什么区别 js防水涂料能在室外用吗 JS防水涂料1型和2型有什么不同? 聚氨酯防水涂料与JS防水涂料有什么区别? JS防水涂料十大品牌有哪些? 聚合物水泥基防水涂料和js防水涂料是一样的吗? js防水涂料是什么 JS防水涂料十大品牌有哪些 什么是js防水涂料 hadoop中存储文件系统hdfs的冗余机制是怎么进行的?... Hadoop有哪几个组成部分?-ITJOB hdfs出现了Datanode Volume Failures怎么处理 五体大字系统进阶课讲什么 以道大数据课程体系都讲什么 大数据培训课程安排有哪些,深圳大数据培训哪家好 在Ubuntu里面搭建四个节点内存怎么分配? hdfs工作流程 大数据培训课程好学吗 有了spark的streaming,还有必要学习storm吗 经常看到快手抖音,十秒种就能播放好几天的视频时常。这是怎么做到的,什么软件? 格力空调 型号 KFR-72LW/(72569)Ba-3 是变频还是... 格力kfr72lwnhaa-3是变频空调吗 海尔空调kfr一72lw是几匹 kfr一72w/FNhxF05一B1是代表什么? 海信空调KFR-72LW/99FJ-N3是变频空调? 美的空调型号KFR-72LW/BP2DN1-F(3)代表意义 海尔空调KFR-72LW/01ZAC23A(花开时节)是不是变频... 请问规格型号是KFR-72Lw/BP2DN1Y-lD(B3)是变频大... 海尔kfr一72lw0622是变频空调