HDFS中block默認保存幾個備份

一、HDFS中block備份的概念和作用

副本(Replication)是Hadoop HDFS中的一個非常重要的特性,作為分佈式文件系統的一種實現方式,
HDFS的數據是被切分成一個個固定大小的block,而這些block默認情況下會被分別保存在不同的DataNode上,
並且會有若干備份數來保證數據的安全性,防止因為Node失效而引發的數據丟失。
一般而言,HDFS為每個block副本數建議設為3個,即默認情況下,每個block會被保存三個副本。

為了更好的理解副本的作用,在HDFS架構中可以分為三種角色:Client、NameNode和DataNode,
可以通過下面偽代碼中的示例了解副本的實現方式。

    Client ----> NameNode     ----> DataNode
    write 10 blocks ------> choose 3 DN for each block ------> receive block written ok 
    Client ----> NameNode ------> choose 3 DN for each block ------> read 10 blocks ------> return block data to client

當客戶端向HDFS寫入數據時,數據會被分割成若干個block,然後分別將每個block的副本寫入不同的DataNode中。
當客戶端讀取數據時,NameNode會查詢HDFS元數據信息,然後返回包含block副本位置信息的響應,
然後客戶端可以通過與DataNode交互,獲取數據塊的副本,以此實現數據讀取的目的。

二、3個備份數的優劣分析

那麼,為什麼在HDFS中,block默認保存三個備份呢?其實,這是一個數字的折中考慮。
當副本數過多時,HDFS存儲的空間和網絡帶寬的消耗就會劇增,而副本數過少可能會面臨DataNode失效導致數據丟失的風險,
所以副本數為3是為了在數據可靠性和性能資源方面做一個平衡,也是經過很多實踐總結出來的一個較為理想的取值。

具體來說,對於3個備份的優劣分析可以從以下角度入手:

1. 數據可靠性

當HDFS中的某一台機器失效時,NameNode會查詢block副本信息並將該副本從DataNode上刪除,然後將它從其他的副本恢復過來,
以此保持數據的可靠性。如果HDFS中只有一個副本的話,那麼如果該副本所在的機器掛掉,數據就會丟失。
如果副本過多,數據的可靠性就會變得更高,但是這樣會犧牲存儲空間和網絡帶寬,而3個副本的情況能夠在存儲空間和帶寬消耗上做到一定的平衡。

2. 數據可用性

當HDFS中的某一台機器失效時,它所存儲的數據塊會由其他機器提供服務以保證數據可用性。由於副本數比較少,這個過程可能會比較耗費時間,
這樣就會導致一定程度上的停滯。當副本數目增加到比較多時,如果一台機器掛掉,剩餘機器將被迅速調度以繼續服務,
當副本數目過多時,即使幾個機器同時掛掉,整個集群依然有足夠的數據副本來提供服務,這樣可以防止停滯。
而3個副本的情況再次在可用性和可靠性之間做到了平衡。

3. 數據存儲容量

隨着副本數目的增加,佔用的磁盤和存儲空間也會隨之增加,所以副本數目不能太多,否則就會消耗太多的資源。
當然,若副本數目過低,數據即不能保證可靠性。三個副本的情況比較適宜。

三、更改HDFS中block備份數的方法

如果默認的3個備份數滿足不了業務需求,用戶也可以自行更改HDFS中block的備份數目,這裡提供兩種方法:

1. 通過配置文件更改備份數目

Hadoop將配置文件分為 core-site.xml 和 hdfs-site.xml 配置文件,其中 hdfs-site.xml 文件用於配置 HDFS 相關參數。
在這個文件中,有一個參數 dfs.replication 確定了 block 的副本數。可以通過修改這個參數重新設置HDFS中block的備份數目。
其配置信息如下所示:

    <property>
      <name>dfs.replication</name>
      <value>3</value>
    </property>

2. 通過命令更改備份數目

另外一種方法是通過hadoop fs命令修改備份數目。下面的命令將會修改目錄 /path/to/file 的文件副本數為5:

    hadoop fs -setrep -w 5 /path/to/file

結論

在HDFS中,block默認的備份數目為3。這個數目的取值是經過很多實踐總結出來的一個較為理想的取值,可以在數據可靠性和性能資源方面做到一定的平衡。
同時,如果需要修改備份數目,用戶可以通過配置文件或者命令行等多種方式來更改,以滿足不同業務需求。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/160939.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-21 01:17
下一篇 2024-11-21 01:17

相關推薦

  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • 用什麼來備份 ssbackup 文件?

    SSBackup是一種用於存儲數據的文件格式,可以在Snapshots和Debian GNU / Linux系統上使用。備份文件是大多數用戶和數據中心管理員的關鍵需求。通過備份,可…

    編程 2025-04-27
  • 使用VRRP實現路由器冗餘備份

    一、什麼是VRRP? VRRP(Virtual Router Redundancy Protocol)是一種可以實現路由器冗餘備份的協議,可以確保網絡中的路由器在主備之間自動切換。…

    編程 2025-04-23
  • Mondorescue-一個強大的備份和還原工具

    一、詳細介紹Mondorescue Mondorescue是一個基於Linux的備份和還原工具。它可以將整個系統備份到一個壓縮的ISO映像文件中,並且可以使用該映像文件進行系統恢復…

    編程 2025-04-12
  • Hadoop HDFS詳細介紹

    一、HDFS簡介 Hadoop Distributed File System(HDFS)是一個為處理超大數據集而設計的分佈式文件系統。它旨在提供高吞吐量數據訪問,以及為運行在大規…

    編程 2025-02-25
  • RMAN備份恢復

    一、RMAN備份介紹 Oracle Recovery Manager(RMAN)是Oracle數據庫的備份和恢復工具,提供了數據備份,恢復和複製等重要功能,有利於保證數據庫的可用性…

    編程 2025-02-24
  • SpringBoot HDFS詳解

    一、介紹 Apache Hadoop是一個開源大數據框架,可將大量數據存儲在分佈式文件系統中,並使用MapReduce抽取,轉換和加載數據。 HDFS是Hadoop分佈式文件系統,…

    編程 2025-02-24
  • bakdb文件:一種可靠的數據庫備份文件格式

    一、什麼是bakdb文件 bakdb文件是一種數據庫備份文件格式,通常用於備份數據庫,以便在出現故障或數據丟失時進行恢復。該文件格式通常包含數據庫中的所有表、視圖、存儲過程、觸發器…

    編程 2025-02-24
  • MySQL備份的幾種方式及實現

    一、mysqldump備份 1、mysqldump工具是MySQL自帶的備份工具,它可以導出MySQL數據庫的結構和數據,利用導出後的.sql文件進行備份還原操作。備份時可以選擇備…

    編程 2025-02-15
  • Xtrabackup遠程備份指南

    一、概述 Xtrabackup是一個由Percona提供的MySQL備份工具,它可以進行物理備份和恢復,支持MySQL、MariaDB和Percona Server等多種數據庫。本…

    編程 2025-02-05

發表回復

登錄後才能評論