HDFS 原理
2015-12-05 15:45:48 31 举报
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。它基于流数据模式访问和处理超大文件系统,通过多副本机制,提高数据的可靠性和容错性。其主要原理是将大文件切分成多个块,每个块分别存储在集群中的不同节点上,从而实现数据的分布式存储。同时,HDFS还提供了数据冗余备份机制,确保数据的可靠性。此外,HDFS还支持数据的并行读写,提高了数据处理的效率。总的来说,HDFS通过其独特的设计和实现,为大数据的存储和管理提供了强大的支持。
作者其他创作
大纲/内容
NameNode
Shared dir on NFS在NFS共享dir (早期实现)
Client JVM
datanode 节点
DataNode 需要向 2个 NameNode 汇报
5. ack packet
DistributedFileSystem
DataNode
StandbyNameNode
ActiveNameNode
6.close
HDFS 写原理
1. create
3. write
2.create
HDFS 读原理
FSDataInputStream
构建于 Zookpeeper 之上的 BookKeeper 系统(最新的方法)
DataNode2
5
Client Node
3. read
4
基于实现
HDFSClient
这台 datanode 接收块完毕后,会把数据发送给 3
namenode 节点
ClientProtocol 协议RPC 调用
这台datanode 接收完毕后会停止复制
客户端向 HDFS 读数据流程: 写在前面: 客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件1. 客户端向namenode发起RPC调用,请求读取文件数据2. namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)3. 客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求4. datanode与客户端简历socket连接,传输对应的数据块,客户端收到数据缓存到本地,之后写入文件5. 依次传输剩下的数据块,直到整个文件合并完成ps : 文件合并的问题从某个Datanode获取的数据块有可能是损坏的,损坏可能是由Datanode的存储设备错误、网络错误或者软件bug造成的。HDFS客户端软件实现了对HDFS文件内容的校验和(checksum)检查。当客户端创建一个新的HDFS文件,会计算这个文件每个数据块的校验和,并将校验和作为一个单独的隐藏文件保存在同一个HDFS名字空间下。当客户端获取文件内容后,它会检验从Datanode获取的数据跟相应的校验和文件中的校验和是否匹配,如果不匹配,客户端可以选择从其他Datanode获取该数据块的副本
2.get block locations
FSDataOutStream
DatanodeProtocol 协议RPC 调用
4. read
1. Open
Pipeline ofdatanodes管道datanode
DataNode3
DataNode1
5. read
4. write packet
HA 高可用
0 条评论
下一页