hadoop1.x

Hadoop1.x

HDFS工作流程

1:在客户端请求HDFS的时候,会先访问NN服务器
2:NN服务器就告诉客户端,应该去访问那些对应的DN服务器
3:在操作完毕之后,NN服务器会记录本次操作日志到edits日志文件中
4:如果等到阈值【360秒或者当前edits日志文件到了64M】,SecondaryNameNode服务器就会合并Edits和fsimage信息
5:SecondaryNameNode服务器会将最新的Edits文件信息合并到fsimage文件中,然后原来的Edits文件打上标记,成为历史日志文件
【合并后的fsimage文件是最新的NN服务器内存中信息,Edits历史日志全部保留,fsimage只保留两个版本】

在这里插入图片描述

hadoop安全模式

安全模式作用

安全模式是HDFS的一种工作状态,在安全模式下,只向客户端提供文件的只读视图,不接受对命名空间的修改,NN服务器也不会进行数据快的复制或者删除

安全模式相关命令

hadoop dfsadmin -safemode leave 强制NameNode退出安全模式
hadoop dfsadmin -safemode enter 进入安全模式
hadoop dfsadmin -safemode get 查看安全模式状态
hadoop dfsadmin -safemode wait 等待一直到安全模式结束

HDFS启动的工作流程中的安全模式工作内容

1:在HDFS启动后,NN服务器将fsimage文件信息和最后一个版本的edits信息读取到NN服务器内存中
2:启动了安全模式,在安全模式时间,客户端提供文件只读,不能进行其他操作
3:安全模式中,每个DN服务器会上报各自的数据块列表信息给NN服务器
4:正常情况下,会在启动后30退出安全模式,如果发现数据节点过少,就会复制数据到其他节点
【数据块不够最少副本数,在拷贝期间也属于安全模式】
在这里插入图片描述

HDFS权限介绍

对于HDFS中是有权限控制的,但是对于HDFS而言,这里的权限根据用户来判断是否有权限操作文件,但是并不是很严格
在HDFS中,你告诉他你是那个用户,你就拥有那个用户的权限
所以:HDFS权限只是为了防止用户误操作,但防止不了其他人恶意操作文件

HDFS上传文件的机架感知策略

什么是机架感知策略

机架感知策略:是指在上传文件时,因为BLK需要在多个DN服务上传文件信息,而BLK怎么选择DN服务器,就是机架感知策略的事情【这样是为了副本在集群中的安全性】
在放置副本的时候,也会考虑副本的 可靠性,可用性,带宽消耗【尽量在本地机房中保存后,也在其他机房或者其他地区的机房保存】

机架感知策略如何帮助BLK选择DN服务器

  • BLK的第一个节点
    • 集群内部【优先选择和客户端相同的节点作为第一个节点】
    • 集群外部【选择资源丰富但是不繁忙的节点作为第一个节点】
  • BLK的第二个节点
    • 选择和一个节点不同机架的节点
  • BLK的第三个节点
    • 与第二个节点相同机架的其他节点
  • BLK的第N个节点
    • 与前面节点不同的其他节点

HDFS写入数据的宏观流程

  • 客户端给上传文件,给NN服务器发送信息
  • NN服务器检查客户端请求的命令是否正确
    • 如果不正确,就会抛出异常返给客户端
    • 如果正常的话,会创建一个FSDataOutputStream流
  • 在创建一个FSDataOputStream流给客户端后,客户端会询问NN服务器,对应切分的文件存放在那个DN节点
  • NN服务器会返回值客户端通过,建立客户端和DN服务器的通道【DN服务器之间也会建立通道】
  • BLK文件会在切分为Packet包【64K】这样在传输过程中,【1,加快多个节点的传输速度,2:方便传输过程中数据丢失的恢复】
  • 客户端会依次传输Packet到建立通道的DN节点A服务器中【占用A节点输入流】,一个packet传递完后,A节点会将这个Packet传递给B节点服务器【副本节点,占用A节点输出流 , B节点的输入流】,B传递给C节点【占用B输出,C输入】依次传递
    在这里插入图片描述

HDFS写入数据的微观流程

  1. 客户端给上传文件,给NN服务器发送信息
  2. NN服务器检查客户端请求的命令是否正确
    2.1. 如果不正确,就会抛出异常返给客户端
    2.2 如果正常的话,会创建一个FSDataOutputStream流
  3. 在创建一个FSDataOputStream流给客户端后,客户端会询问NN服务器,对应切分的文件存放在那个DN节点
  4. NN服务器会返回值客户端通过,建立客户端和DN服务器的通道【DN服务器之间也会建立通道】
  5. 客户端从自己的硬盘以流的方式读取数据文件到自己的缓存中
  6. 将缓存中的数据以chunk(512B)和checksum(4B)的方式放入到packet(64K)
    6.1 chunk:checksum=128:1
    6.2 checksum:在数据处理和数据通信领域中,用于校验目的的一组数据项的和
    6.3 Packet中的数据分为两类,一类是实际数据包,另一类是header包
    6.4 一个Packet数据包的组成结构
  7. 切分为packet包后,会放在DataQueue队列中,等待传输
  8. 等待服务器读取对应的packet的时候,会取出对应的packet取出来给DN节点响应,这个packet也挂在AckQueue队列中,等待DN服务器应答确认
  9. 客户端会依次传输Packet到建立通道的DN节点A服务器中【占用A节点输入流】,一个packet传递完后,A节点会将这个Packet传递给B节点服务器【副本节点,占用A节点输出流 , B节点的输入流】,B传递给C节点【占用B输出,C输入】依次传递,传递packet后,DN服务器也会返回给对应的输入流一个ACK应答,确认这个packet包传递没有问题,然后AckQueue等待应答队列会将这个packet删除
  10. 如果ACK应答的时候,发现某一个packet包传递出现问题,会把挂在AckQueue中对应的packet已经之后没有传递的packet返回给DataQueue队列,重新给DN服务器传递
  11. 最总在Blk的Packet传递完成后,DFS就保存所有Packet中的ChunkData和ChunkChecksum真实文件内容和文件校验信息
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

HDFS读取数据流程

  1. k客户端发送请求,申请读取文件
  2. DFS通过NN服务器判断客户端用户是否有权限,读取文件是否存在
    2.1 如果文件不存在,返回错误信息
    2.2 如果文件存在,返回成功信息
  3. DFS建立FSDataInputStream对象,客户端通过这个对象读取数据
  4. 客户端通过就近原则 ,选择当前文件离客户端近的DN节点,读取完所有的BLK信息后
  5. 将BLK合并为一个文件,成功后,关闭FSDataInputStream

Hadoop1.X的缺点

  1. 单点故障
    1.1 每个群集只有一个NameNode,NameNode存在单点故障(SPOF), 如果该计算机或进程不可用,则整个群集在整个NameNode重新启动或在另一台计算机上启动之前将不可用
    1.2 如果发生意外事件(例如机器崩溃),则在操作员重新启动NameNode之前,群集将不可用。
    1.3 计划内的维护事件,例如NameNode计算机上的软件或硬件升级,将导致群集停机时间的延长。
  2. 水平扩展
    2.1 将来服务器启动的时候,启动速度慢
  3. namenode随着业务的增多,内存占用也会越来越多
    3.1 如果namenode内存占满,将无法继续提供服务
  4. 业务隔离性差
  5. 存储:有可能我们需要存储不同部门的数据
    5.1 计算:有可能存在不同业务的计算流程
  6. 项目后期namenode的吞吐量将会是集群的瓶颈
  7. 客户端所有的请求都会先访问NameNode
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值