hdfs的安全模式与退出观察 hdfs关闭安全模式_数据


一.HDFS的架构:

1.构成:HDFS架构由HDFSClient、NameNode、SecondaryNameNode、DataNode组成。

三种节点:NameNode(NN)、SecondaryNameNode(SNN)、DataNode(DN)
不可替代性:目前为止

2。主要作用:数据--->>文件(表是一种抽象出来的逻辑概念)----》存放HDFS---》数据文件(元数据(在NameNode上),内容数据(形成block,在DN上))

a.存放海量数据 存储模型:字节

b.非常兼容各种分布式计算

问题:假设一台机器上所有元数据丢失,数据还找的回?

答:找不回了

4.可以appand追加数据,不支持修改。

二.节点的作用:

NN(NameNode):

基于内存存储:不会与磁盘发送交换()

1.只存在在内存中

2.持久化:两种产物:快照/写日志文件

主要功能:

1.接收客户端的读写请求

2.存储和管理HDFS的元数据

SNN(Secondary NameNode):

1.合并元数据文件(edits和fsimage)(这个工作可以由其他节点完成,没有SNN很正常,有SNN也很正常)

DN(DataNode):

1.存储和管理数据块

2.往NN汇报(汇报管理的block信息)

元数据:在HDFS中除了真正的内容数据(文件内容)之外都是元数据,如存储文件的文件名、上传用户的用户名。

三.block(数据块):128M(hadoop2)(最大存储空间)

1.HDFS默认文件块Block大小为64MB。单一文件block大小一致,文件与文件可以不一致。

问题:文件大小默认为 64M,改为 128M 有啥影响?

答:增加文件块大小,需要增加磁盘的传输速率。

2.MapReduce的Map任务一次只能处理一个Block的数据.

3.HDFS无法高效存储大量小文件.

原因:a.检索效率:HDFS中NameNode的元数据保存在内存中,过多的小文件需要大量内存空间,降低数据检索效率; b.寻址开销:访问大量小文件,需要不断从一个DataNode跳到另一个DataNode,寻址开销增大; c.线程开销:MapReduce处理大量小文件时会产生过多的Map任务,线程管理开销会大大增加;

4.HDFS中数据副本的存放策略:

HDFS默认副本系数是3,,副本分散在不同的节点中,第一块放在本机的HDFS目录下;第二块放在不同Rack的某个DataNode上;第三块放在本机同机架的某台机器上。

问题来了:如果 HDFS 为每一个 block 存三份,那 client 如何来写呢?同时向三个 data node 写吗?

答:no,当 client 写文件创建新 block 的时后,Name nodes 会为这个 block 创建一个整个 HDFS cluster 里独有的 block ID,并且决定哪些 Data nodes l来存储这个 block 的所有备份。这些被选择的 Data nodes 组成一个队列,client 向队列的第一个 Data node 写,那么第一个 Data node 除了把数据存在自己的硬盘上以外,还要把数据传给队列里的下一个 data node,如此这般,直到最后一个 data node 接到数据完毕。

四.读写流程:

写(上传文件):

  1. 客户端先连接NameNode并发送请求(传参:用户/文件路径)
  2. NN判断有无上传权限、合法性
  3. 返回上传的第一个DN地址
  4. 把需要上传的数据形成一个数据队列
  5. 客户端连接DN并上传数据(通过IO流)(DN之间会互相复制,复制失败不影响上传进程,过半数就ok)
  6. 关闭写入流
  7. DN标记为已完成。

问题:上传500M的数据,第一次上传给DN1,第二次上传给DN1,是存在的。

节点获取分配的存储位置,然后根据存储位置直接把数据写入DataNode;

读(下载文件):

  1. 先连接NameNode并发送读请求(传参:用户/文件路径)
  2. 验证是否有读的权限/合法性
  3. 返回所有block块的所有位置
  4. 连接并且读取第一个block(从第一个开始读,不是并发)

5.形成文件

五.HDFS不适合的场景:

1.低延时数据访问

2.小文件存储

3.并发写入、文件随机修改

Hadoop的安全模式:

1.当我们开始启动一个集群的时候,会先启动NameNode,NameNode加载fsimage到内存,对内存数据执行edits.log日志中的事务操作。此时NameNode内存中已经恢复到上次关闭的状态了。

2.文件系统元数据在内存中的镜像加载完毕,这时候会进行fsimage和edits.log日志的合并,合并完成后会创建新的fsimage文件和一个空的edits.log日志文件,edits.log用于记录后续的操作。

3.NameNode等待DataNode上传的block列表信息,直到副本数满足“最小副本条件”(指整个文件系统中有99.9%的block达到了最小副本数,默认值是1 ,可以设置)。

4.当满足了最小副本条件,再过30秒,NameNode就会退出安全模式。

在安全模式下对文件进行只读操作,不允许进行文件的修改(写,删除或者重命名)

负载均衡作为一个独立的进程与NameNode分开执行,HDFS负载均衡的处理步骤:

1.NN会搜集到所有DN的磁盘信息;

2.启动进程Rebalancing Server;

3.移动数据到目标机器上,同时删除自己机器上的数据。