1.1 文件系统的基本概念
1.2 Big Data 存储系统的特点
- 硬件失效为常态,采用大量低端廉价的服务器来存储
- 流式数据访问
- 存储数据较大
- 多硬件品台支持, 大量的低端硬件可能来自不同厂商
- 高运算效率,运算量大,所以需要高运算效率
1.3 HDFS简介
- 高容错,认为硬件总是不可靠的
- 高吞吐量,为有大量数据访问的应用提供高吞吐量支持
- 大文件存储,支持TB-PB级别的数据
- 适合:大文件存储,流式数据访问
- 不适合:大量小文件处理,随机写入,低延迟读写(HDFS适合一次写入,多次读取)
1.4HDFS架构
- Client是请求发起方
-
数据就是实际的数据文件,例如音频,视频之类的。
元数据实际是一种管理文件,一个文件被分成了多少元数据,这些数据分开存在不同的设备上
NameNode是对对元数据的管理, Datanodes包含的是数据块,NameNode一般会单独放在一台服务器上。 - 当客户端对一个数据进行访问时,首先会访问Namenode所在的服务器,Namenode服务器会根据请求,查询数据所在的Datanodes服务器,然后将Datanodes的地址发送给Client,然后Client就可以根据Datanodes的地址进行访问
2.1 HDFS写入流程
客户端将文件切片(以64M为单位),然后ask Namenode,NameNode在计算后,会告诉Client存在哪几个DataNode,然后Client会采用流式存储将数据存在要存储的节点上(以包为单位64K),叫流式的原因在于,在存到DataNode1之后,Client会继续传输数据包写在DataNode1,同时之前以及存储在DataNode1上的数据会像水一样继续往下一个节点DataNode2(备份设备,一般是3个)存储,同理,DataNode2会像DataNode3传输并存储。
2.2 HDFS读取流程
Client首先会发起读取请求到NameNode,NameNode会根据数据块的信息返回数据储存的地址,Client会根据这些地址信息访问相应的DataNode,然后在DataNode上读取数据块,然后在本地还原成文件。
3.1 HDFS数据副本机制
同一台服务器距离为0, 同一台机架的不同服务器距离为2,不同机架的服务器距离为4.
副本放置策略(>=3):
- 第一台副本放在本地
- 第二台副本放在远端机架的节点
- 第三个副本选择和第一个副本相同机架的不同节点
- 第四个及以上,随机算则副本存放