Hadoop - HDFS分布式存储、HA架构原理、YARN调度原理

Hadoop 的组成

  1. HDFS
    管理者:namenode
    工作者:DataNode
    辅助管理者:secondaryNameNode
  2. MapReduce
  3. YARN
    管理者:ResourceManage
    工作者:NodeManage

HDFS 分布式存储工作机制

HDFS是一个文件存存储系统,他的meta信息以及目录结构是存储在NameNode中的,文件是以block的形式存储在DataNode中,通过与NameNode交互,可以实现读写的操作

读操作

  1. 客户端会先带着读取路径向NameNode发送读取请求
  2. NameNode接收到请求后,会先判断是否有权限,读取文件是否存在等等,如果都无误则将文件所在的DataNode的节点位置,发送给客户端部分或者全部的DataNode的节点位置
  3. 客户端得到文件块存储的位置后,会调用read()方法,去读取数据
  4. 在读取之前会先进行一个checksum的操作,去判断一下校验和是否正确,正确则读,不正确则去下一个存放该block块的DataNode节点上读取
  5. 读取完NameNode这次发送过来的所有的block块后,会再去询问是否还有block块,如果有则接着读取,如果没有则调用close方法,将读取到的文件合并成一个大文件

写操作

  1. 客户端会带着文件路径向NameNode发送写入请求
  2. NameNode会去判断是否有权限,写入路径的父级目录是否存在,如都无误则发送可以写入的请求返回给客户端
  3. 客户端会将文件进行切分,然后上传block
  4. NameNode会根据DataNode的存储空间还有机架感知原理等返回该block块将要存储的DataNode的位置 ABC
  5. 客户端会去ABC三个DataNode节点上建立pipeline A-B B-C然后C建立完成后会将结果返回给B B返回给A A返回给客户端
  6. 开始往A写入 依次进行流水线的复制
  7. 写入完后再去依次写入其他block块
  8. 都写入完成后会将写入完成的信息返回给NameNode
  9. NameNode存储该文件的各个block块的元数据信息

Hadoop HA的架构原理

  1. 在两个节点上都安装一个NameNode
  2. 每个NameNode所在的节点中都有一个监控器
  3. 监控器会监控NameNode的状态,并在zk中注册节点
  4. 两个NameNode谁先在zk中注册成功则谁就是active状态,剩下的那个则是standby
  5. 如果active节点挂掉了,监控器则将zk中注册的节点注销掉
  6. standby中的监控器一旦检测到zk中的节点消失,则立即注册并通知standby状态的NameNode开始工作,standby会先去远程执行kill -9 activeNameNode节点的端口 杀死他后 开始切换到active状态开始工作
  7. activeNameNode和standbyNameNode是使用JN进行做主从复制的

YARN的资源调度工作机制

  1. 客户端向RM提交作业
  2. RM会去NM中开启一个container容器用来运行AM
  3. AM会向RM注册自己
  4. AM向RM申请响应数量的Container用来运行task任务
  5. Container会先进行一个初始化的工作,初始化完成AM会通知对应的NM开启container
  6. NM开启container
  7. container在运行期间会向AM汇报自己的进度,状态等信息,并与AM保持心跳
  8. 等待应用执行完毕,AM向RM注销自己,并允许RM收回资源

你可能感兴趣的:(Hadoop - HDFS分布式存储、HA架构原理、YARN调度原理)