

HDFS: 是Hadoop分布式文件存储系统
HDFS是将文件划分为固定大小的数据块(严格按照字节切割文件,因此,如果在末尾切割一点,它也被视为单独的块. hadoop2的默认固定大小. x为128MB,不同版本,默认值不同. 可以通过在客户端上传文件来设置)hdfs分布式存储,
存储在不同的节点上. 默认情况下,每个块都有三个副本. (存储三份副本的原因是为了防止设备崩溃并使文件无法使用. 如果其中一份副本损坏,则可以更改到另一台服务器. 保证运行,并且可以在一个副本上复制不同的块副本. 节点).
上传后无法更改副本大小,但是可以更改副本数量
每个块都分散并存储在集群中,并且每个块的大小相同,除非最后还剩一点. 文件和文件之间的块可能不一致. 块的副本数不应超过节点数. 这是多余的. ,
该文件只能写入一次,但是可以读取多次,并且一次只能有一个写入器. 您可以附加其他数据. 您无法更改数据,因为更改数据后副本的大小将更改.
p>
NameNode: 它主要接受客户端的读/写服务,并收集DateNode报告的阻止列表信息. HDFS Clinet客户端使用次要NameNode从NameNode获取副本的地址以读取存储的数据. NameNode使用内存存储元素Data(元数据: fileName块地址允许时间,简称为与称为元数据的文件内容无关的信息. 源数据为文件的内容),因此功能为: 它不会与磁盘交换(即源数据信息存储在内存中,并且次要NameNode将Namenode中的数据传输到磁盘,而NameNode只是管理功能),仅在磁盘中记忆. 和持久性
元数据包括: 文件所有权(属性)和权限(权限),文件大小,时间. 块列表: 块偏移量,位置信息(将不会保留,因为它将更改): 块存储在Information中(在启动DataNode时报告,未存储在磁盘上)

启动后,NameNode的元数据信息将被加载到内存中,然后由辅助NameNode存储到名为“ fsimage”的磁盘文件中,块位置将不会保存到fsimage文件中,因为该位置信息将不会持久. edits记录元数据的操作日志,类似于虚拟机的快照,但与快照不同. editslog保存自最新检查点以来的元数据更改. 客户端修改文件时,首先将其写入editlog,成功后将更新内存中的内存. 元数据. 因此hdfs分布式存储,元数据= fsimage + editslog
图形说明:

fsimage将元数据保存到磁盘. 然后每小时保存一次记录,因此当客户端操作在12:30创建旧国王时,f3文件信息出现在NameNode中,但是此时存在停机时间,请首先通过fsimage还原文件,但这一次是没有达到保存时间,因此文件为f3. 老王不存在. 如果是12:30创建老王的客户端操作,则首先将操作日志保存到. 在editlog中,将其保存到名称节点. 如果此时已关闭,则首先将fsimage的磁盘数据还原到名称节点,然后阅读editlog,然后您需要再次操作该日志. 将再次创建F3以完美解决它. 因此,只要将fsimage保存一次,就可以删除一次日志,否则日志将变得越来越大.
简而言之,必须先将客户端操作记录在日志中,然后再保存在内存中.
DateNode: 本地存储数据(块),文件格式,存储块元数据(md5值)信息文件. DateNode将块信息报告给NameNode. 通过发送心跳信号到NameNode保持联系,如果NameNode在10分钟内未收到DateNode. 如果心跳信号丢失,则认为它丢失了,并将原始DateNode上的块复制到其他DateNodes.
SecondaryNameNode: 帮助NameNode合并edits.log文件以减少NameNode的启动时间. 它不是NameNode的备份.
SNN执行合并的时间和机制:
1. 根据配置文件设置的时间间隔,fs.checkpoint.period默认为3600秒.
2. 根据配置文件设置edits.log的大小. fs.checkpoint.size规定默认情况下,编辑文件的最大值为64MB

SecondaryNameNode SNN合并过程: 首先,复制Fsimage并通过网络将文件从NameNode编辑到SNN服务器. 同时,将在NN中生成用户的实时操作数据以记录用户的操作. ,另一侧的SNN将复制的编辑内容和fsimage合并,并在合并后替换NN中的fsimage. 之后,NN根据fsimage进行操作(当然,它偶尔会替换,合并和循环一次). 当然,新的修改和合并后传输的fsimage将在下一次再次合并.
块的副本放置策略: 第一个副本放置在上载文件的DN上. 如果它是在集群外部提交的,则是一个随机节点,其磁盘不是太满,并且CPU也不太忙. 第二份副本: 放置在与第一份副本不同机架中的节点上. 第三份副本: Yudie的两份副本位于同一机架中的不同节点上. 多余的副本放置在随机节点上.
HDFS读取和写入文件的过程:

1. HDFS客户端客户端首先创建DFS,然后向NameNode询问副本地址和副本数,然后客户端获取该地址,然后通过管道(datanode的管道)将文件传输到DataNode(将文件划分为一一转移). 小包数据包,然后传输数据包,然后通过当前的DateNode传输到下一个DataNode,然后依次传输. )块传输完成后,DN将Block信息报告给NameNode,而DN报告完成向客户端,客户端将完成情况报告给NN. 然后获取下一个块存储的DN列表,NN会在写入过程中更新文件状态

2. 文件读取过程: HDFS Cline客户端首先打开DFS系统,然后从NN获取块复制位置列表的一部分. 然后获得该块,最后合并为一个文件. 通过DataNode获取块时,采用了最近原则.
HDFS文件权限: 类似于linux文件权限. r: 读取,w: 写入,x: 执行,其中文件和文件夹的权限x被忽略,它指示是否允许访问其内容. 如果Linux系统用户zhangsan使用hadoop命令创建File,则HDFS中此文件的所有者为Zhang San. HDFS权限的目的是防止好人做坏事,而不是防止坏人做坏事. HDFS相信,如果您告诉我您是谁,我认为您是谁.
HDFS的安全模式: 启动名称节点时,图像文件(fsimage)首先被加载到内存中,并执行编辑日志中的各种操作. 在内存中成功建立文件系统元数据映射后,将创建一个新的fsimage文件(此操作不需要SecondaryNameNode)和一个空的编辑日志. 此时,namenode正在安全模式下运行. 也就是说,名称节点的文件系统对于客户服务是只读的. (显示目录,显示文件内容等. 写入,删除和重命名将失败)在此阶段,Namenode从每个数据节点收集报告. 当数据块达到最小副本数时,将以一定比例将其视为“安全”. (可设置的)数据块被确定为“安全”后,在一定时间后,安全模式结束.

当检测到副本数量不足的数据块时,将复制该数据块,直到达到最小副本数为止. 数据块在系统中的位置不是由名称节点维护的,而是作为阻止列表存储在数据节点中.
HDFS的优缺点
1. 优点:
–高容错能力
•自动保存数据的多个副本
•副本丢失后,它将自动恢复
–适用于批处理
•移动计算而非数据
•数据位置公开给计算框架(块偏移量)
–适用于大数据处理
•GB,TB甚至PB级数据

•超过一百万个文件的数量
•10K +节点
–可以在便宜的机器上构建
•通过多次复制提高可靠性
•提供容错和恢复机制
2. 缺点:
-低延迟和高数据吞吐量访问问题
•例如,它支持二级响应,但不支持毫秒级
•延迟和高吞吐量问题(大吞吐量,但受其延迟限制)
-小文件访问
•在NameNode上占用大量内存
•搜索时间超过读取时间
-并发写入,随机文件修改
•一个文件只能有一个作者
•仅支持添加
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-287971-1.html
你想
耗电量也不那么吓人惹
军演准备