转自:http://www.cnblogs.com/sparkwoo/archive/2013/05/14/3077440.html
并作一些修改,以更容易理解副本存放策略
系统默认为每一个数据块存放3个副本,按照布署在NameNode上的默认机架感知策略存放数据块副本。其中:
第一个block副本放在上传文件的datanode,如果是集群外提交则随机挑选一台磁盘不太满,cpu不太忙的datanode。
注:这里所说的本地节点是相对于客户端来说的,也就是说某一个用户正在用一个客户端来向HDFS中写数据,如果该客户端上有数据节点,那么就应该最优先考虑把正在写入的数据的一个副本保存在这个客户端的数据节点上,它即被看做是本地节点,但是如果这个客户端上的数据节点空间不足或者是当前负载过重,则应该从该数据节点所在的机架中选择一个合适的数据节点作为此时这个数据块的本地节点。另外,如果客户端上没有一个数据节点的话,则从整个集群中随机选择一个合适的数据节点作为此时这个数据块的本地节点。
第二个block副本放置在与第一个datanode节点相同的机架中的另一个datanode中(随机选择)。
第三个block副本放置于另一个随机远端机架的一个随机datanode中。
如果还有更多的副本就随机放在集群的node里。
将第一、二个block副本放置在同一个机架中,当用户发起数据读取请求时可以较快地读取,从而保证数据具有较好的本地性。
第三个及更多的block副本放置于其他机架,当整个本地结点都失效时,HDFS将自动通过远端机架上的数据副本将数据副本的娄得恢复到标准数据。
Hadoop的副本放置策略在可靠性(block在不同的机架)和带宽(一个管道只需要穿越一个网络节点)中做了一个很好的平衡。
相关推荐
三、Block副本放置策略 Block的副本不是随意放置的,而是遵循一定的策略。通常,一个Block的副本会分布在不同机架上的DataNode上,以提高数据的访问效率和容错性。第一副本随机选择在一台低负载的DataNode上,第二...
HDFS在设计时充分考虑了数据的分布策略,一般情况下会在同一个机架内存放一个副本,同时在其他机架存放额外的副本。这种“机架感知”的策略不仅防止了机架失效时数据的丢失,还提高了带宽的利用率。当DataNode启动时...
* 副本存放:每一个文件块可以有多个副本,并存放在不同的DataNode上。 * 元数据管理:目录结构及文件分块信息的管理由NameNode节点承担。 * 分布式存储:HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端...
- 配置副本策略; - 管理HDFS的名称空间; - **DataNode**: - **职责**:DataNode是集群中的“员工”,负责处理文件系统客户端或NameNode发送过来的指令,比如存储、检索和删除数据块等。 - **功能**: - ...
其中两个副本存放在同一机架的不同节点上,第三个副本则存放在另一个机架的节点,以确保数据的冗余和容错性。HDFS在处理读请求时,会提供离客户端最近的副本,优化读取性能。 HDFS提供了两种访问接口,即Shell接口...
5. **Block placement**:NameNode根据集群的拓扑结构和数据节点的健康状态,决定数据块的存放位置。副本通常分布在不同的机架上,以提高容错性和带宽利用率。 6. **写入流程**:客户端选择一个DataNode开始写入第...
客户端向NameNode请求写入,NameNode返回可用的DataNode列表,并根据机架感知策略(RackAwareness)确定副本的存放位置。通常,第一个副本在本地节点,第二个副本在不同机架的节点,第三个副本在第二个副本的同一...
- NameNode 确定哪些 DataNode 可以存放新的数据块,并将这些 DataNode 的信息返回给客户端。 - 客户端直接与 DataNode 通信,将数据写入指定的 DataNode。 #### HDFS 读操作 - 客户端发起读取文件请求给 NameNode...
3. **数据块(Block)**: HDFS将大文件分割成多个固定大小的数据块,默认每个块大小为128MB或256MB。这些块会被复制到多个节点上以提高容错性。 4. **NameNode**: NameNode是HDFS的主节点,负责元数据管理,如文件...
- **副本策略**:默认情况下,每个数据块有3个副本,分别存放在不同的DataNode上,以确保容错性。 - **心跳与Block Report**:DataNode定期向NameNode发送心跳信息,表明其健康状态,并报告存储的块信息。 HDFS的...
- 定义了HDFS的副本存放策略,确保数据可靠性和容错性。 #### DataNode - 在服务器上实际存储文件的block。 - 与NameNode通信,报告自己的状态和block存储情况。 - 直接与客户端交互,响应读写请求。 #### 副本...
在HDFS中,文件被分割成一系列的block,然后这些block被分布式存储到不同的DataNode上。block的副本被保存在多个DataNode中,以防止数据丢失。NameNode是HDFS中的核心组件,负责管理文件系统的命名空间和客户端对...
- 描述:定义 DataNode 在本地磁盘中存放数据块的位置,可以通过逗号分隔多个目录。 - 示例:`dfs.data.dir=file:/opt/hadoop/tmp/dfs/data1,file:/opt/hadoop/tmp/dfs/data2` 4. **NameNode RPC 请求处理器线程...
在副本存放策略上,HDFS采用了机架感知(Rack Awareness)策略,以提高数据的可用性和网络效率,确保在同一机架内的节点优先复制,最大化带宽利用。 总结来说,Hadoop分布式文件系统HDFS是为大规模、容错性、高吞吐...
4. NameNode返回3个DataNode(如dn1、dn2、dn3)作为副本存放点。 5. 客户端建立一个到dn1、dn2、dn3的通信管道,并开始上传数据。 6. DataNodes逐级接收并转发数据包,同时对客户端发送确认响应。 7. 当一个Block...
HDFS设计的主要原则是容错性和高可用性,它将大文件分割成块(通常为128MB或256MB),并分布在集群的不同节点上,每个节点都存储一个或多个数据块的副本。这种设计使得数据可以在集群内部并行处理,提高了处理速度,...
为了保证数据的可靠性,每个Block通常有三个副本,副本的存放策略是:首先,一个副本在上传文件的Client所在的DataNode或随机选择的节点;其次,第二个副本放在与第一个副本不同机架的节点上,增加网络容错性;第三...