获取hdfs_收好!Hadoop-HDFS读写原理的超详细教程
最近在答疑工作中,有很多小伙伴都在问HDFS的读写原理是什么,小编其实在刚开始学习大数据的时候,也对此有所困惑。
可见,同一个知识,同一个困惑啊~
为了让更多的小伙伴能够彻底解决这一困惑,小编下面就为大家介绍一下HDFS文件的读写原理。
敲黑板了啊,仔细听讲!
假设有一个文本文件1.txt,大小为300M,划分为3个数据块,即block_01、block_02、block_03。(这是我为大家举的例子)
1.HDFS写数据原理
在我们把文件上传到HDFS系统中,HDFS究竟是如何存储到集群中去的,又是如何创建备份的?
这就是流程图:
看完了是不是一脸懵,其实呢HDFS中的写数据流程主要分为12个步骤。
(1)客户端发起文件上传请求,通过RPC(远程过程调用)与NameNode建立通讯。
(2)NameNode检查元数据文件的系统目录树。
(3)若系统目录树的父目录不存在该文件相关信息,返回客户端可以上传文件。
(4)客户端请求上传第一个Block数据块,以及数据块副本的数量(可以自定义副本数量,也可以使用集群规划的副本数量)。
(5)NameNode检测元数据文件中DataNode信息池,找到可用的数据节点(DataNode_01,DataNode_02,DataNode_03)。
(6)将可用的数据节点的IP地址返回给客户端。
(7)客户端请求3台节点中的一台服务器DataNode_01,进行传送数据(本质上是一个RPC调用,建立管道Pipeline),DataNode_01收到请求会继续调用服务器DataNode_02,然后服务器DataNode_02调用服务器DataNode_03。
(8)DataNode之间建立Pipeline后,逐个返回建立完毕信息。
(9)客户端与DataNode建立数据传输流,开始发送数据包(数据是以数据包形式进行发送)。
(10)客户端向DataNode_01上传第一个Block数据块,是以Packet为单位(默认64K),发送数据块。当DataNode_01收到一个Packet就会传给DataNode_02,DataNode_02传给DataNode_03;DataNode_01每传送一个Packet都会放入一个应答队列等待应答。
(11)数据被分割成一个个Packet数据包在Pipeline上依次传输,而在Pipeline反方向上,将逐个发送Ack(命令正确应答),最终由Pipeline中第一个DataNode节点DataNode_01将Pipeline的 Ack信息发送给客户端。
(12)DataNode返回给客户端,第一个Block块传输完成。客户端则会再次请求NameNode上传第二个Block块和第三块到服务器上,重复上面的步骤,直到3个Block都上传完毕。
2.HDFS读数据原理
HDFS中的读数据流程可以分为4个步骤,具体如下:
(1)客户端向NameNode发起RPC请求,来获取请求文件Block数据块所在的位置。
(2)NameNode检测元数据文件,会视情况返回Block块信息或者全部Block块信息,对于每个Block块,NameNode都会返回含有该Block副本的DataNode地址。
(3)客户端会选取排序靠前的DataNode来依次读取Block块(如果客户端本身就是DataNode,那么将从本地直接获取数据),每一个Block都会进行CheckSum(完整性验证),若文件不完整,则客户端会继续向NameNode获取下一批的Block列表,直到验证读取出来文件是完整的,则Block读取完毕。
(4)客户端会把最终读取出来所有的Block块合并成一个完整的最终文件(例如:1.txt)。
至此,小编为大家讲解了HDFS文件的读写原理,相信大家对HDFS文件的读写原理能够有更深入地理解了。
获取hdfs_收好!Hadoop-HDFS读写原理的超详细教程相关推荐
- Hadoop 2.0集群配置详细教程
Hadoop 2.0集群配置详细教程 前言 Hadoop2.0介绍 Hadoop是 apache 的开源 项目,开发的主要目的是为了构建可靠,可拓展 scalable ,分布式的系 统, hadoop ...
- 条件随机场(CRF)极简原理与超详细代码解析
条件随机场(CRF)极简原理与超详细代码解析 1. 原理 1.1 从名称说起 1.2 优化的目标 1.3 如何计算 2. 代码 2.1 基本结构 2.2 模型初始化 2.3 BERT提取的特征如何输入 ...
- 【大数据】Hadoop完全分布式配置(超详细)
文章目录 概述 1.准备Linux 2.安装JDK 3.克隆两台虚拟机 4.免密登陆 5.安装Hadoop 6.配置Hadoop配置文件 7.启动服务 8.在集群上测试一个jar包-单词统计的功能 问 ...
- hadoop的HA实现,超详细
网上的转载,但超详细http://blog.csdn.net/xiaojin21cen/article/details/42611073 我主要关注第三个问题,他们是主.备关系,但是datanode必 ...
- 基于Python的Excel读写操作--内容超详细,值得排排坐
今日份超详细的解读,Excel文件基础操作,让你以学就会. 写这个的原因是,一位群友问了很久,然后网上的教程写的又不是很详细,看的有些犯迷糊,所以我今日份写一份超详细的基本操作,让你打下良好的基础. ...
- 大数据培训:Hadoop HDFS 实现原理
一.HDFS体系结构 1.1 HDFS 简介 Hadoop分布式文件系统 (HDFS) 是运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File S ...
- 深入Hbase原理(超详细)
目录 Hbase概述 Hbase中的核心概念 原理加强之Region拆分 HMaster的作用 主节点 Region的拆分 负载均衡 1.1 自动负载均衡流程 1.2 强制执行负载均衡 1.3 人 ...
- kettle同步数据到hive 巨慢_超详细教程,kettle ETL mysql到hadoop hive数据抽取,值得收藏...
那么如何将mysql数据导入到hive里呢,kettle里有自带方法,可以通过表输入和表输出来实现,不过自带的方法载入数据极其缓慢,不推荐使用这种方法. 1.hive建表 注意hive表使用" ...
- Hadoop分布式集群搭建完全详细教程
Hadoop分布式集群环境搭建步骤如下 实验环境: 系统:win7 内存:8G(因要开虚拟机,内存建议不低于8G) 硬盘:建议固态 虚拟机:VMware 12 Linux:Centos 7 jdk1. ...
最新文章
- 63万张!旷视发布最大物体检测数据集Objects365 | 技术头条
- 阿里云专家手把手教你重塑 IT 架构!
- Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作
- go语言中go+select的理解
- nodejs+webpack+vue以及npm安装对应的库
- [html] 制作一个页面时,需要兼容PC端和手机端,你是要分别做两个页面还是只做一个页面自适应?为什么?说说你的理由
- [剑指offer][JAVA][第62题][约瑟夫环][LinkedList vs ArrayList]
- Fast-SCNN:多分支结构共享低级特征的语义分割网络
- 你踩过dataguard的哪些坑?
- 由脚本创建的新元素事件不触发和用的easyUI插件中的多选框不起作用的解决方法...
- Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法!
- 腾讯2016实习生招聘有感
- 当系统中存在多个浏览器,如何设置IE为自己的默认浏览器
- 毕业设计 高校排课系统
- 可穿戴市场掘金:VC如何看上小小的ZEPP公司
- 解决linux的-bash: ./xx: Permission denied/tensorflow 运行cpu还是gpu的方法
- iOS 制作framework(SDK)的流程
- 家庭教育机构如何线上线下灵活结合?
- gaussdb200 理论
- 中职计算机英语教师教学总结,中职教师工作总结