大数据:Hadoop(HDFS 读写数据流程及优缺点)
一、HDFS 写数据流程
写的过程:
- CLIENT(客户端):用来发起读写请求,并拆分文件成多个 Block;
- NAMENODE:全局的协调和把控所有的请求,提供 Block 存放在 DataNode 上的地址;
- DATANODE:负责数据的存储,可以有很多个;
- 客户端想 NameNode 发出请求(包含 Blocksize 和 副本数);
- NameNode 经过计算,反馈给客户端相同副本数的 DataNode,切给出的 DataNode 有优先存储顺序要求;(数据与 DataNode 对应时,一般移动计算,不移动数据)
- 客户端得到信息后开始写数据,当第一个 DataNode 接受 Block 时,会将该数据传给第二个 DataNode ,第二个 DataNode 接受到数据时,也会将该数据传递给第三个 DataNode;在最后一个 DataNode 接受数据完毕时,则该 Block 全部传输完毕;
- DataNode 在接受数据完毕后,每一个 DataNode 都会将完毕信息传递给 NameNode;
- NameNode 将所有 DataNode 反馈的信息(所有数据以传输完毕),反馈给客户端;
- 客户端接受到 NamaNode 反馈的信息后(第一个 Block 传输完毕),开始发送请求传输第二个 Block;
- 传输完毕后,在关闭请求之前,NameNode 将该文件所有 Block 存放在 DataNode 上的 ID 保存在文件中;
二、HDFS 读数据的流程
- 客户端:提供文件名、副本数、Block 数量、Block 地址;
- NameNode:提供 DataNode 地址及内部位置;
- 客户端提供提供文件名、副本数、Block 数量、Block 地址给 NameNode;
- NameNode 收到请求后,根据请求给出 副本及其 Block 所存放的 DataNode,以及Block 在 DataNode 中存放的位置;
- 客户端根据 NameNode 给的信息,给 DataNode 发出请求,由 DataNode 给出数据所在的具体块的信息;
- 客户端根据 DataNode 提供的信息,下载数据;
如果 DataNode 损坏、DataNode 上的数据丢失、数据块异常或者损坏等异常,HDFS会有相应的故障容错措施:
三、HDFS 的优缺点总结
优点:
- 数据冗余(文件以 Block 并且多副本的方式存储在集群的节点上)、硬件容错;
- 处理流式的数据访问;(一次写入,多次读取)
- 适合存储大文件;(通过扩展 DataNode 来实现存储大文件)
- 可构建在廉价的机器上;(降低成本)
缺点:
- 低延迟的数据访问;(一般数据较大,不容易实现在秒级别检索数据)
- 不适合小文件的存储;(无论文件大小,都有对应的元数据存放在 NameNode 上,如果小文件较多,则对应的元数据较多,对应的元数据所占用的内存信息较大,给NameNode 压力较大)
大数据:Hadoop(HDFS 读写数据流程及优缺点)的更多相关文章
- Hadoop -- HDFS 读写数据
一.HDFS读写文件过程 1.读取文件过程 1) 初始化FileSystem,然后客户端(client)用FileSystem的open()函数打开文件 2) FileSyst ...
- HDFS读写数据块--${dfs.data.dir}选择策略
最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要 ...
- 我要进大厂之大数据Hadoop HDFS知识点(2)
01 我们一起学大数据 老刘继续分享出Hadoop中的HDFS模块的一些高级知识点,也算是对今天复习的HDFS内容进行一次总结,希望能够给想学大数据的同学一点帮助,也希望能够得到大佬们的批评和指点! ...
- 我要进大厂之大数据Hadoop HDFS知识点(1)
01 我们一起学大数据 老刘今天开始了大数据Hadoop知识点的复习,Hadoop包含三个模块,这次先分享出Hadoop中的HDFS模块的基础知识点,也算是对今天复习的内容进行一次总结,希望能够给想学 ...
- HDFS 读写数据流程
一.上传数据 二.下载数据 三.读写时的节点位置选择 1.网络节点距离(机架感知) 下图中: client 到 DN1 的距离为 4 client 到 NN 的距离为 3 DN1 到 DN2 的距离为 ...
- HDFS读写数据流程
HDFS的组成 1.NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(创建时间,文件权限,文件大小) 以及每个文件的块列表和块所在的DataNode等.类似于一本书的目录功能. 2 ...
- 大数据 - hadoop - HDFS+Zookeeper实现高可用
高可用(Hign Availability,HA) 一.概念 作用:用于解决负载均衡和故障转移(Failover)问题. 问题描述:一个NameNode挂掉,如何启动另一个NameNode.怎样让两个 ...
- HDFS读写数据过程
一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ...
- 大数据Hadoop——HDFS Shell操作
一.查询目录下的文件 1.查询根目录下的文件 Hadoop fs -ls / 2.查询文件夹下的文件 Hadoop fs -ls /input 二.创建文件夹 hadoop fs -mkdir /文件 ...
随机推荐
- 【数论&线段树】【P4140】[清华集训2015]奇数国
Description 有一个长为 \(n\) 的序列,保证序列元素不超过 \(10^6\) 且其质因数集是前60个质数集合的子集.初始时全部都是 \(3\),有 \(m\) 次操作,要么要求支持单点 ...
- Vue中的v-bind指令
普通: property="value" 此时 value为字符串 v-bind指令 v-bind:property="value" 此时 value会被解析成 ...
- 微信小程序之简单记账本开发记录(七)
记账本已经可以实现添加和删除的功能 现在只需要将上述步骤重复一遍便可将另一个界面做出来. 大体上已制作完成,如果在细节上有变动会在这一篇更新 总体来说,这个作业让我对微信小程序的开发有了更多地认识,大 ...
- 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
SpringBoot 整合 Mybatis 有两种常用的方式,一种就是我们常见的 xml 的方式 ,还有一种是全注解的方式.我觉得这两者没有谁比谁好,在 SQL 语句不太长的情况下,我觉得全注解的方式 ...
- Docker 一步搞定 ZooKeeper 集群的搭建
Docker 一步搞定 ZooKeeper 集群的搭建 背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 ...
- 快速获取更丰富的Sitecore体验数据库
无论您是否立即使用Sitecore的营销功能,我们强烈建议您执行这三项任务,以使您的数据收集更加丰富,并为您以后的决策留下良好的位置. Sitecore的体验数据库,即xDB,是Sitecore营销平 ...
- matlab利用m_map工具包画中国地图及散点云图
开始之前需要准备好malab,中国地图shp文件,m_map工具包. 中国地图shp文件可以在下面的链接中下载: https://gadm.org/download_country_v3.html 本 ...
- 项目启动redis连接报错
问题解决: 1)打开端口6379(修改iptabels文件) 2)关闭防火墙.(可能linux防火墙作用,限制了端口的出入) 3)修改redis.conf文件,将 bind 127.0.0.1这一行注 ...
- Python实现Newton和lagrange插值
一.介绍Newton和lagrange插值:给出一组数据进行Newton和lagrange插值,同时将结果用plot呈现出来1.首先是Lagrange插值:根据插值的方法,先对每次的结果求积,在对结果 ...
- 封装:Cmd命令调用和常用命令
原文:封装:Cmd命令调用和常用命令 一.Cmd命令调用方法 1.静态方法调用 class Program { static void Main(string[] args) { // Todo :打 ...