首页 > 其他分享 >【博学谷学习记录】超强总结,用心分享 | HDFS读写流程

【博学谷学习记录】超强总结,用心分享 | HDFS读写流程

时间:2023-06-01 10:25:01浏览次数:34  
标签:HDFS 主机 读写 client 超强 namenode Client 上传 block

【博学谷IT技术支持】

HDFS写流程

请添加图片描述

上图是HDFS的写流程图

主要步骤如下

  • client向服务器发起上传请求(RPC)
  • NameNode接受到请求之后会进行权限检查(目录是否存在权限,目录是否存在)
  • NameNode会给client反馈是否可以上传标记
  • Client会将要上传的文件安装设置的Block大小进行切片
  • Client向NameNode请求上传第一个Block
  • 当NameNode收到上传Block请求之后,会根据副本放置策略和主机的优秀程度选出最优主机
  • NameNode返回最优的主机列表给Client
  • Client和主机列表排在最前的主机建立pipeline
  • dataNode告诉应答成功
  • Client开始传输第一个Block数据,传输数据的单位是package(64K)
  • 收到一个package就会缓存datanodeDatas
  • HDFS会产生一个应答队列,从最后一个开始,收到packet,就会将一个ACK应答放入应答队列
  • Client判断应答队列的ACK是否完整,如果完整,则判断此次packet发送成功,继续发送第二个package
  • 当最后一个package发送完成之后,每一个DataNode会将缓存的Package数据存储到硬盘上,也就是一个Block
  • Client重新执行第五步,请求Namenode上传第二个block,
  • client向Namenode汇报文件上传完毕
  • NameNode更新自己内存中的元数据

写流程简单概况

  1. client向namenode发起上传请求,namenode判断权限等告诉client是否可以上传,并返回主机列表。
  2. client与主机建立pipeline,分别上传所有的block。
  3. 上传完毕汇报client,client告诉namenode更新自己内存中的元数组。

HDFS读流程

请添加图片描述

  • Client向服务端发起文件下载请求
  • 服务器做权限检查,判断文件是否存在以及权限问题
  • namenode获取该文件的block信息列表,并且对每一个block的主机进行排序(策略)
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • 将文件的block列表发送到client
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • client分别和三个block所在的主机建立管道通信
  • client分别从三台主机读取数据,读取是并行执行(读取的单位是packet,64k)
  • client将这三个block进行合并(字节数组的合并)

读流程简单概况

  1. 向namenode发起下载请求,namenode判断权限并返回主机列表
  2. client与主机列表建立pipeline并读取数据
  3. client对数据进行合并

标签:HDFS,主机,读写,client,超强,namenode,Client,上传,block
From: https://www.cnblogs.com/neilniu/p/17448177.html

相关文章

  • 【博学谷学习记录】超强总结,用心分享 | Hadoop
    【博学谷IT技术支持】一、介绍概念Apache™Hadoop®项目为可靠、可扩展的分布式计算开发开源软件。允许简单的编程模型在大量计算机集群上对大型数据集群进行分布式处理。项目包含以下模块:Common:支持其他hadoop模块的通用实用程序HDFS(分布式文件系统):可提供对应用程......
  • 【博学谷学习记录】超强总结,用心分享 | shell基础
    【博学谷IT技术支持】一、shell简介shell是一种编写脚本程序的语言,常用于linux,shell是解释型语言,相对于其他的语言更加好学,它的语法和结构也比较简单通过编写脚本,能显著的提高开发的效率二、shell的基础知识每个sh文件都有这个开头,是指此脚本使用/bin/bash来解释执行#!/......
  • 【博学谷学习记录】超强总结,用心分享 | Zookeeper
    【博学谷IT技术支持】一、Zookeeper基础知识Zookeeper地址:https://zookeeper.apache.org/介绍Zookeeper是一个开源的分布式协调服务,用来给分布式应用提供一致性服务。Zookeeper本质是一个分布式的小文件存储系统。是Chubby一个开源的实现,是Hadoop和Hbase的重要组件。特性......
  • 博学谷学习记录】超强总结,用心分享 | 发送邮件-yagmail
    【博学谷IT技术支持】一、介绍yagmail是一个GMAIL/SMTP客户端,旨在使发送电子邮件尽可能简单。在项目中或多或少都需要使用的它,比如监控,比如用户提示等。二、项目使用使用流程首先要安装yagmail其次链接邮箱服务器,这里要设置发件人的邮箱,发件人的邮箱授权码,发件服务器等参......
  • 【博学谷学习记录】超强总结,用心分享 | Django简易开发指南
    【博学谷IT技术支持】一、介绍Django是python语言写的开源web开发框架,遵循MVC设计。Django的主要目的是简便、快捷的开发数据库驱动的网站。但是Django有一个专有名词:MVTM:Model,负责数据处理,内嵌了ORM框架V:View,接收HttpRequest,业务处理,返回HttpResponseT:Template,负责......
  • 【博学谷学习记录】超强总结,用心分享 | hive分区与分桶的区别
    【博学谷IT技术支持】公众号:积雷山摩云洞,欢迎关注!!!概念分区表:将数据分散到多个子目录中,在执行查询是,可以根据条件加快查询效率分桶表:是相对分区更细的颗粒度划分,分桶表是将表查分到不同的文件中,根据数据表某列的hash值进行分区,对某列数据分区就是对该列属性值的hash值取模,......
  • 【博学谷学习记录】超强总结,用心分享 | yarn的执行流程
    【博学谷IT技术支持】yarn的组成部分hadoop是由Common、HDFS、YARN、MapReduce等核心模块组成,yarn负责解决资源调度问题,这里介绍下yarn的业务执行流程。yarn是Master/Slave结构,主要包含ResourceManage、NodeManager、ApplicationMaster和Conainer等组件。ResourceManager......
  • 【博学谷学习记录】超强总结,用心分享 | 系统资源监控-psutil
    【博学谷IT技术支持】一、介绍psutil(python系统和进程实用程序)是一个跨平台库,用于在Python中检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监控、分析、限制进程资源和管理正在运行的进程。二、相关api获取CPU信息cpu_count:......
  • 【博学谷学习记录】超强总结,用心分享 | jupyter常用功能
    jupyter安装文档地址https://jupyter.org/installpipinstallnotebook启动命令jupyternotebookjupyter-themes修改主题安装主题https://github.com/dunovank/jupyter-themesgithub地址pipinstall--upgradejupyterthemes查看所有主题jt-l修改主题jt-tg......
  • 【博学谷学习记录】超强总结,用心分享 | hbase基础操作
    【博学谷IT技术支持】HBase的介绍HBase是一个高可靠性、高性能、面向列、可伸缩的分布式操作系统。它是建立在HDFS之上的数据库系统,HBase是不支持SQL的,没有表关系,也无法join,不支持事务。HBase是基于google发布BigTable这篇论文而产生的,基于HDFS,数据最终存储时是在HDFS上,必......