HDFS 读写数据流程
一、上传数据

二、下载数据

三、读写时的节点位置选择
1.网络节点距离(机架感知)
下图中:
client 到 DN1 的距离为 4
client 到 NN 的距离为 3
DN1 到 DN2 的距离为 2

2.Block 的副本放置策略
NameNode 通过 Hadoop Rack Awareness 确定每个 DataNode 所属的机架 ID
简单但非最优的策略
将副本放在单独的机架上 这可以防止在整个机架出现故障时丢失数据,并允许在读取数据时使用来自多个机架的带宽。
此策略在群集中均匀分布副本,平衡组件故障的负载。
但是此策略会增加写入消耗,因为写入时会将块传输到多个机架。
常见情况策略(HDFS 采取的策略)
当复制因子为 3 时,HDFS 的放置策略是:
若客户端位于 datanode 上,则将一个副本放在本地计算机上,否则放在随机 datanode 上
在另一个(远程)机架上的节点上放置另一个副本,最后一个在同一个远程机架中的另一个节点上。 机架故障的可能性远小于节点故障的可能性。
此策略可以减少机架间写入流量,从而提高写入性能,而不会影响数据可靠性和可用性(读取性能)。
这样减少了读取数据时使用的聚合网络带宽,因为块只放在两个唯一的机架,而不是三个。
如果复制因子大于 3,则随机确定第 4 个及后续副本的放置,同时保持每个机架的副本数量低于上限(基本上是(副本 - 1)/机架+ 2)。
由于 NameNode 不允许 DataNode 具有同一块的多个副本,因此创建的最大副本数是此时DataNode的总数。
原文(Replica Placement: The First Baby Steps 章节): http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
3.下载时副本的选择
为了最大限度地减少全局带宽消耗和读取延迟,HDFS 会选择最接客户端的节点中的副本来响应读取请求。 如果客户端与 DataNode 节点在同一机架上,且存在所需的副本,则该副本会首读用来响应取请求。 如果 HDFS 群集跨越多个数据中心,则驻留在本地数据中心的副本优先于任何远程副本。
原文(Replica Selection 章节): http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
HDFS 读写数据流程的更多相关文章
- 大数据:Hadoop(HDFS 读写数据流程及优缺点)
		一.HDFS 写数据流程 写的过程: CLIENT(客户端):用来发起读写请求,并拆分文件成多个 Block: NAMENODE:全局的协调和把控所有的请求,提供 Block 存放在 DataNode ... 
- HDFS读写数据流程
		HDFS的组成 1.NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(创建时间,文件权限,文件大小) 以及每个文件的块列表和块所在的DataNode等.类似于一本书的目录功能. 2 ... 
- HDFS读写数据块--${dfs.data.dir}选择策略
		最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要 ... 
- Hadoop(8)-HDFS的读写数据流程以及机架感知
		1. HDFS的写数据流程 1.客户端通过fs模块向NameNode申请文件上传,NameNode检查请求是否合法,如用户权限,目标文件是否已存在,父目录是否存在等等 2.NameNode返回是否可以 ... 
- Hadoop -- HDFS 读写数据
		一.HDFS读写文件过程 1.读取文件过程 1) 初始化FileSystem,然后客户端(client)用FileSystem的open()函数打开文件 2) FileSyst ... 
- HDFS读写数据过程
		一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ... 
- Hdfs读写数据出错
		1.Hdfs读数据出错:若在读数据的过程中,客户端和DataNode的通信出现错误,则会尝试连接下一个 包含次文件块的DataNode.同时记录失败的DataNode,此后不再被连接. 2.Hdfs在 ... 
- HDFS读写文件流程
		读取: 写入:https://www.imooc.com/article/70527 
- HDFS写数据和读数据流程
		HDFS数据存储 HDFS client上传数据到HDFS时,首先,在本地缓存数据,当数据达到一个block大小时.请求NameNode分配一个block. NameNode会把block所在的Dat ... 
随机推荐
- Number Sequence POJ - 1019  递推 数学
			题意 1 12 123 1234 12345 ....这样的序列 问第n位数字是几 是数字! 1-9! 思路:递推关系 主要是位数的计算 用a[i]=a[i-1]+(int)log10((do ... 
- 一种HBase表数据迁移方法的优化
			1.背景调研: 目前存在的hbase数据迁移主要分如下几类: 根据上图,可以看出: 其实主要分为两种方式:(1)hadoop层:因为hbase底层是基于hdfs存储的,所以可以通过把hdfs上的数据拷 ... 
- 【XSY2773】基因 后缀平衡树 树套树
			题目描述 有一棵树,每条边上面都有一个字母.每个点还有一个特征值\(a_i\). 定义一个节点\(i\)对应的字符串为从这个点到根的路径上所有边按顺序拼接而成的字符串\(s_i\). 有\(m\)次操 ... 
- 【XSY1519】彩灯节 DP 数学 第二类斯特林数
			题目大意  有\(n\)盏灯,\(m\)个限制.每个限制\((x,y)\)表示第\(x\)盏灯与第\(y\)盏灯之间必须且只能亮一盏.  记一种情况\(x\)亮着的灯的数量为\(f_x\),求\( ... 
- 【POJ1083】 Moving Tables (并行的搬运)
			BUPT2017 wintertraining(15) #6E 题意 房间1和2,3和4,...,399和400共用一节走廊,有q次从房间li到ri的搬运桌子,一次搬运10分钟.两个搬运如果走廊有重叠 ... 
- Linux 通过Shell 查找问题进程 [转]
			背景介绍: 最近公司服务器不太稳定,总是在凌晨某个时段突发高负载情况,因为客观环境比较复杂,所以很难猜测出到底是哪个进程出现了问题,加之故障发生时,通常我在睡觉,等我被报警短信吵醒,通过公司 VPN ... 
- 自学华为IoT物联网_05 能源工业物联网常见问题及解决方案
			点击返回自学华为IoT物流网 自学华为IoT物联网_05 能源工业物联网常见问题及解决方案 1. 1 能源工业--油田业务面临的三大挑战 故障处理不及时: 部分油田开采难道大.机械故障较多.现场发生的 ... 
- 【BZOJ4911】[SDOI2017]切树游戏(动态dp,FWT)
			[BZOJ4911][SDOI2017]切树游戏(动态dp,FWT) 题面 BZOJ 洛谷 LOJ 题解 首先考虑如何暴力\(dp\),设\(f[i][S]\)表示当前以\(i\)节点为根节点,联通子 ... 
- 【CF809D】Hitchhiking in the Baltic States(Splay,动态规划)
			[CF809D]Hitchhiking in the Baltic States(Splay,动态规划) 题面 CF 洛谷 题解 朴素\(dp\):设\(f[i][j]\)表示当前考虑到第\(i\)个 ... 
- 「SCOI2016」美味 解题报告
			「SCOI2016」美味 状态极差无比,一个锤子题目而已 考虑每次对\(b\)和\(d\)求\(c=d \ xor \ (a+b)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ... 
