當前位置:首頁 » 存儲配置 » hdfs存儲原理

hdfs存儲原理

發布時間: 2024-08-13 01:57:59

Ⅰ 大數據要學哪些課程

《大數據實訓課程資料》網路網盤資源免費下載

鏈接:https://pan..com/s/1RiGvjn2DlL5pPISCG_O0Sw

?pwd=zxcv 提取碼:zxcv

大數據實訓課程資料|雲計算與虛擬化課程資源|課程實驗指導書綜合版|機器學習與演算法分析課程資源|Spark課程資源|Python課程資源|Hadoop技術課程資源|雲計算課程資料.zip|微課.zip|演算法建模與程序示例.zip|spark課程資源.zip|hadoop課程資源.zip|實驗指導書|教學視頻|教學PPT

Ⅱ 3.4 HDFS存儲原理

一、涉及的問題

1. 冗餘數據保存

2. 數據保存策略

3. 數據恢復

二、冗餘數據保存問題

1. 冗餘因子

出於成本考慮(也是HDFS優勢),HDFS常架構在廉價機器上——經常出故障。所以必須有冗餘機制。一般每個塊都保存3份,即冗餘因子默認是3

注意:偽分布式配置,即名稱節點和數據節點都放在同一個機器上,則冗餘因子顯然只能是1,因為只有一個機器

2. 冗餘機制的好處

(1) 加快數據傳輸速度——當多個客戶端同時想訪問相同數據塊時,可以同時並行而不需要排隊

(2) 很容易檢查數據錯誤——互相對照發現錯誤

(3) 保證數據可靠性——HDFS有這樣的機制:一旦探測到一個副本故障,會自動復制正確副本,使冗餘因子恢復默認值

三、數據保存與讀取

1. 第一副本存放策略:

(1) 如果保存請求來自集群內部,第一個副本放在發起者(應用)所在節點。比如一個在DataNode1上的應用發起存數據請求,那就把它第一份副本也存在DataNode1

(2) 如果保存請求來自集群外部,HDFS會隨機挑選一台磁碟不太忙且CPU不太忙的節點來放置第一個副本

2. 第二個副本存放策略:

放在和第一副本不同的機架的節點上 。如下圖中DataNode4,它和DataNode1在不同機架上

3. 第三副本放置策略:

放在和第一副本相同的機架的其他節點。如圖中的DataNode2或DataNode3

4. 更多副本存放策略:

全部隨機放置(依靠隨機演算法)

5、數據讀取

原則:就近讀取

——HDFS提供一個API可以告訴數據節點的機架ID,客戶端也可以用API診斷自己所在機架ID。ID相同說明在同一機架。而相同機架數據間通信很快,它們就是「相近」的數據。

——而前面也說了,每個數據塊都有多個不同的副本,如果找到某個副本和客戶端在同一個機架上,就優先選此副本。如果沒有就隨機找一個副本讀取

四、數據的錯誤與恢復

1. 名稱節點出錯

只有一個名稱節點,而且它保存了核心數據結構FsImage和EditLog。恢復方法:

(1) 在HDFS1.0里只能暫停服務,從第二名稱節點(冷備份)恢復

(2) 在HDFS2.0里可以直接用熱備份恢復而不用暫停服務

2. 數據節點出錯

(1) 如何發現數據節點出問題:

在整個運行期間,DataNode都會定期通過遠程調用向NameNode發送心跳信息。一旦隔了一個周期收不到心跳信息,則NameNode就知道這個DataNode發生了故障

(2) 如何恢復數據節點:

NameNode會在狀態列表裡把出錯的DataNode標記為不可用(宕機),然後把它裡面的數據塊對應的備份(在其他DataNode上)復制到另一個DataNode上去

——HDFS和其他分布式文件系統最大的區別就是 可以調整冗餘數據位置 。這種調整不僅發生在故障時,也可以在在機器負載不均衡時把一個DataNode的數據遷移到另一個上面以平衡負載

3. 數據出錯

(1) 如何發現數據出錯:

「校驗碼機制」——客戶端每寫入一個數據塊,都會為其生成一個校驗碼並保存在同一文件目錄下。讀取數據塊同時會核對其校驗碼,如果不對說明數據出問題了。

(2) 如何恢復數據:

從備份復制過來

Reference:

https://www.icourse163.org/learn/XMU-1002335004#/learn/content?type=detail&id=1214310117&cid=1217922275&replay=true

Ⅲ hdfs主要功能

hdfs主要功能?1.HDFS各個角色和主要功能.
(1)、Client其主要的職責如下
(a)、在上傳數據的時候對數據進行分塊,在進行數據的下載的時候對數據進行合並
(b)、與NameNode進行通信在進行數據上傳的時候獲取數據上傳時的數據節點,在數據下載的時候獲取存儲數據的節點
(c)、與DataNode進行通信進行數據的上傳和下載
(2)、NameNode主要的職責如下
(a)、負責數據塊映射信息的管理,在上傳數據的時候給Client返回可以上傳的數據節點,在需要獲取數據的時候返回數據所在的節點,其本身並不存儲數據。
(b)、副本數據的管理策略。
(c)、管理HDFS的名稱空間
(3)、DataNode的主要的職責如下
(a)、負責數據的存儲以及數據的讀寫。
(4)、SecondaryNameNode主要職責
(a)、是NM的一個備用。
(b)、減去NM的負擔,對NM中的日誌以及鏡像文件進行合並在把合並之後的數據發回到NM。
2.HDFS的寫過程及內部原理

1. 使用HDFS提供的客戶端開發庫,向遠程的Namenode發起RPC請求;
2. Namenode會檢查要創建的文件是否已經存在,創建者是否有許可權進行操作,成功則會為文件創建一個記錄,否則會讓客戶端拋出異常;
3. 當客戶端開始寫入文件的時候,開發庫會將文件切分成多個packets(信息包),並在內部以"data queue"的形式管理這些packets,並向Namenode申請新的blocks,獲取用來存儲replicas(復製品)的合適的datanodes列表,列表的大小根據在Namenode中對replication的設置而定。
4. 開始以pipeline(管道)的形式將packet寫入所有的replicas中。開發庫把packet以流的方式寫入第一個datanode,該datanode把該packet存儲之後,再將其傳遞給在此pipeline(管道)中的下一個datanode,直到最後一個datanode,這種寫數據的方式呈流水線的形式。
5. 最後一個datanode成功存儲之後會返回一個ack packet,在pipeline里傳遞至客戶端,在客戶端的開發庫內部維護著"ack queue",成功收到datanode返回的ack packet後會從"ack queue"移除相應的packet。
6. 如果傳輸過程中,有某個datanode出現了故障,那麼當前的pipeline會被關閉,出現故障的datanode會從當前的pipeline中移除,剩餘的block會繼續剩下的datanode中繼續以pipeline的形式傳輸,同時Namenode會分配一個新的datanode,保持replicas設定的數量。

Ⅳ 關於hbase的問題,開啟hbase後一會hmaster和hregionserver就沒了

一、通常向HBase批量導入數據有三種常用方式
1、使用HBase提供的TableOutputFormat,原理是通過一個Maprece作業將數據導入HBase
2、還有一種方式就是使用HBase原生Client API(put)
3、前兩種方式因為須要頻繁的與數據所存儲的RegionServer通信。一次性入庫大量數據時,特別佔用資源,所以都不是很有效。因為HBase在HDFS中是以HFile文件結構存儲的,所以高效便捷的方法就是直接生成HFile文件然後使用Bulk Load方法,即HBase提供的HFileOutputFormat類。
二、Bulk Load基本原理
Bulk Load處理由兩個主要步驟組成:
1、生成HFile文件
Bulk Load的第一步會執行一個Maprece作業,其中使用到了HFileOutputFormat輸出HBase數據文件:StoreFile。
HFileOutputFormat的作用在於使得輸出的HFile文件能夠適應單個region。使用TotalOrderPartitioner類將map輸出結果分區到各個不同的key區間中,每一個key區間都相應著HBase表的region。
2、導入HBase表
第二步使用completebulkload工具將第一步的結果文件依次交給負責文件相應region的RegionServer,並將文件move到region在HDFS上的存儲文件夾中。一旦完畢。將數據開放給clients。
假設在bulk load准備導入或在准備導入與完畢導入的臨界點上發現region的邊界已經改變,completebulkload工具會自己主動split數據文件到新的邊界上。可是這個過程並非最佳實踐,所以用戶在使用時須要最小化准備導入與導入集群間的延時,特別是當其它client在同一時候使用其它工具向同一張表導入數據。
Bulk Load常遇到的一個ERROR:」java.io.IOException: Retry attempted 10 times without completing, ling out」
錯誤解析:
我們使用的Hbase1.0.2版本下,如果Hfile文件 跨越多個region,bulkload會自動地將Hfile文件split,但是對於每次retry只會將指定的Hfile文件split一次。但是在hbase-site.xml配置文件里有個參數hbase.bulkload.retries.number控制了hbase對一個hfile最多plit多少次。這個參數默認是10,如果某個hfile跨越的region數超過10個就會報上述Exception。
解決方案:
將hbase.bulkload.retries.number這個參數設置為更大的值,比如目標表的region數量或者將這個參數設置成0,0表示不斷重試直到成功。設置之後問題解決。

Ⅳ Hadoop(一) HDFS概念及原理總結

HDFS的文件讀取原理,主要包括以下幾個步驟:

1、首先調用FileSystem對象的open方法,其實獲取的是一個DistributedFileSystem的實例。

2、DistributedFileSystem通過RPC(遠程過程調用)獲得文件的第一批block的locations,同一block按照重復數會返回多個locations,這些locations按照hadoop拓撲結構排序,距離客戶端近的排在前面。

3、前兩步會返回一個FSDataInputStream對象,該對象會被封裝成 DFSInputStream對象,DFSInputStream可以方便的管理datanode和namenode數據流。客戶端調用read方法,DFSInputStream就會找出離客戶端最近的datanode並連接datanode。

4、數據從datanode源源不斷的流向客戶端。

5、如果第一個block塊的數據讀完了,就會關閉指向第一個block塊的datanode連接,接著讀取下一個block塊。這些操作對客戶端來說是透明的,從客戶端的角度來看只是讀一個持續不斷的流。

6、如果第一批block都讀完了,DFSInputStream就會去namenode拿下一批blocks的location,然後繼續讀,如果所有的block塊都讀完,這時就會關閉掉所有的流。

HDFS的文件寫入原理,主要包括以下幾個步驟:

1、客戶端通過調用 DistributedFileSystem 的create方法,創建一個新的文件。

2、DistributedFileSystem 通過 RPC(遠程過程調用)調用 NameNode,去創建一個沒有blocks關聯的新文件。創建前,NameNode 會做各種校驗,比如文件是否存在,客戶端有無許可權去創建等。如果校驗通過,NameNode 就會記錄下新文件,否則就會拋出IO異常。

3、前兩步結束後會返回 FSDataOutputStream 的對象,和讀文件的時候相似,FSDataOutputStream 被封裝成 DFSOutputStream,DFSOutputStream 可以協調 NameNode和 DataNode。客戶端開始寫數據到DFSOutputStream,DFSOutputStream會把數據切成一個個小packet,然後排成隊列 data queue。

4、DataStreamer 會去處理接受 data queue,它先問詢 NameNode 這個新的 block 最適合存儲的在哪幾個DataNode里,比如重復數是3,那麼就找到3個最適合的 DataNode,把它們排成一個 pipeline。DataStreamer 把 packet 按隊列輸出到管道的第一個 DataNode 中,第一個 DataNode又把 packet 輸出到第二個 DataNode 中,以此類推。

5、DFSOutputStream 還有一個隊列叫 ack queue,也是由 packet 組成,等待DataNode的收到響應,當pipeline中的所有DataNode都表示已經收到的時候,這時akc queue才會把對應的packet包移除掉。

6、客戶端完成寫數據後,調用close方法關閉寫入流。

7、DataStreamer 把剩餘的包都刷到 pipeline 里,然後等待 ack 信息,收到最後一個 ack 後,通知 DataNode 把文件標示為已完成。

熱點內容
存儲台設計 發布:2024-11-25 10:40:04 瀏覽:668
如何查看自己電腦的所有配置 發布:2024-11-25 10:14:02 瀏覽:771
java編譯器偽編譯指什麼 發布:2024-11-25 10:08:53 瀏覽:961
amax伺服器默認地址 發布:2024-11-25 10:07:20 瀏覽:318
甘肅省浪潮伺服器雲伺服器 發布:2024-11-25 10:07:17 瀏覽:522
android手環 發布:2024-11-25 10:03:55 瀏覽:163
如何將安卓機設置為蘋果機 發布:2024-11-25 09:41:24 瀏覽:970
伺服器屏蔽一段ip 發布:2024-11-25 08:52:06 瀏覽:100
售茶源碼 發布:2024-11-25 08:37:29 瀏覽:463
壓縮包改直鏈 發布:2024-11-25 08:34:33 瀏覽:612