hadoop-hdfs简介(二)
来源:互联网 发布:如何做erp软件 编辑:程序博客网 时间:2024/06/06 10:40
1.HDFS 体系架构
1) HDFS 是一个主/从(Master/Slave)体系架构,由于分布式存储的性质,集群拥有两类节点 NameNode 和 DataNode。
2)NameNode(名字节点):系统中通常只有一个,中心服务器的角色,管理存储和检索多个 DataNode 的实际数据所需的所有元数据。
3)DataNode(数据节点):系统中通常有多个,是文件系统中真正存储数据的地方,在NameNode 统一调度下进行数据块的创建、删除和复制。
2.HDFS 数据块复制
1)为了系统容错,文件系统会对所有数据块进行副本复制多份,Hadoop 是默认 3 副本管理。
2)复本管理策略是运行客户端节点上放一个复本(若客户端运行在集群之外,会随机选择一个节点),
第二个复本会放在与第一个不同且随机选择的节点上,
第三个复本与第二个复本放在相同节点。
存在其他复本,则放在集群中随机选择的节点上,不过系统会尽量避免在相同机架上放太多复本。
3)所有有关块复制的决策统一由NameNode负责,NameNode会周期性地接受集群中数据节点 DataNode 的心跳和块报告。
一个心跳的到达表示这个数据节点是正常的。一个块报告包括该数据节点上所有块的列表。
3.HDFS 读取和写入流程
1) 读文件的过程:
首先 客服端通过 File System 的 Open 函数打开文件,
DistributedFile System 用RPC 调用 NameNode 节点,得到文件的数据块信息。
对于每一个数据块,NameNode节点返回保存数据块的数据节点的地址。
DistributedFile System 返回FSDataInputStream 给客户端,用来读取数据。
客户端调用 stream 的 read()函数开始读取数据。
DFSInputStream 连接保存此文件第一个数据块的最近的数据节点。
DataNode从数据节点读到客户端(client),当此数据块读取完毕时,DFSInputStream 关闭和此数据节点的连接,
然后连接此文件下一个数据块的最近的数据节点。
当客户端读取完毕数据的时候,调用 FSDataInputStream 的 close 函数。
在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点。失败的数据节点将被记录,以后不再连接。
2) 写文件的过程:
客户端调用 create()来创建文件,Distributed File System 用 RPC调用 NameNode节点,在文件系统的命名空间中创建一个新的文件。
NameNode节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。
Distributed File System返回DFSOutputStream,客户端用于写数据。
客户端开始写入数据,DFSOutputStream 将数据分成块,写入 Data Queue。
Data Queue 由 DataStreamer 读取,并通知 NameNode节点分配数据节点,用来存储数据块(每块默认复制 3块)。
分配的数据节点放在一个 Pipeline里。Data Streamer 将数据块写入Pipeline中的第一个数据节点。
第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。
DFSOutputStream为发出去的数据块保存了Ack Queue,等待Pipeline中的数据节点告知数据已经写入成功。
- hadoop-hdfs简介(二)
- Hadoop自学笔记(二)HDFS简介
- Hadoop学习(二)——HDFS简介
- hadoop学习(二)----HDFS简介及原理
- HADOOP--HDFS简介
- hadoop-hdfs简介(一)
- hadoop-hdfs简介(三)
- Hadoop hdfs 介绍 二
- 深入Hadoop HDFS(二)
- Hadoop之HDFS(二)
- Hadoop学习笔记---HDFS简介
- Hadoop系列一HDFS简介
- [置顶] Hadoop HDFS简介学习
- Hadoop 系列之一:HDFS简介
- Hadoop IO & HDFS manipulation 简介
- Hadoop学习笔记二---HDFS
- Hadoop学习笔记二---HDFS
- hadoop(二):hdfs HA原理
- 数据库系统实现 第三章 索引结构
- 数据结构(二)栈结构
- 深度学习|卷积神经网络(CNN)介绍(后篇)
- Foundation5(六)
- 【笔记】深入理解 java 虚拟机---内存回收
- hadoop-hdfs简介(二)
- 使用JfreeChart查询数据库生成简单图形报表
- 领域驱动设计part2
- 设计模式之观察者模式
- Foundation5(七)
- Matlab2016a 与 GCC 混合编程
- Swift 中关于计时器的使用
- Java入门之Java第一个程序
- Foundation5(八)