天天看點

雲小課 | MRS基礎入門之HDFS元件介紹

摘要:HDFS是MapReduce服務中的基礎檔案系統,全稱為Hadoop的分布式檔案系統(Hadoop Distributed File System),可支援實作大規模資料可靠的分布式讀寫。

作者:Hi,EI 。

雲小課 | MRS基礎入門之HDFS元件介紹

HDFS針對的使用場景是資料讀寫具有“一次寫,多次讀”的特征,而資料“寫”操作是順序寫,也就是在檔案建立時的寫入或者在現有檔案之後的添加操作。HDFS保證一個檔案在一個時刻隻被一個調用者執行寫操作,而可以被多個調用者執行讀操作。

HDFS結構

HDFS是一個Master/Slave的架構,主要包含主、備NameNode和多個DataNode角色。在Master上運作NameNode,而在每一個Slave上運作DataNode,ZKFC需要和NameNode一起運作。

NameNode和DataNode之間的通信都是建立在TCP/IP的基礎之上的。NameNode、DataNode、ZKFC和JournalNode能部署在運作Linux的伺服器上。

雲小課 | MRS基礎入門之HDFS元件介紹

圖1-1中各子產品的功能說明如表1-1所示。

雲小課 | MRS基礎入門之HDFS元件介紹

HA即為High Availability,用于解決NameNode單點故障問題,該特性通過主備的方式為主NameNode提供一個備用者,一旦主NameNode出現故障,可以迅速切換至備NameNode,進而不間斷對外提供服務。

在一個典型HDFS HA場景中,通常由兩個NameNode組成,一個處于Active狀态,另一個處于Standby狀态。

為了能實作Active和Standby兩個NameNode的中繼資料資訊同步,需提供一個共享存儲系統。本版本提供基于QJM(Quorum Journal Manager)的HA解決方案,如圖1-2所示。主備NameNode之間通過一組JournalNode同步中繼資料資訊。

通常配置奇數個(2N+1個)JournalNode,且最少要運作3個JournalNode。這樣,一條中繼資料更新消息隻要有N+1個JournalNode寫入成功就認為資料寫入成功,此時最多容忍N個JournalNode寫入失敗。比如,3個JournalNode時,最多允許1個JournalNode寫入失敗,5個JournalNode時,最多允許2個JournalNode寫入失敗。

由于JournalNode是一個輕量級的守護程序,可以與Hadoop其它服務共用機器。建議将JournalNode部署在控制節點上,以避免資料節點在進行大資料量傳輸時引起JournalNode寫入失敗。

雲小課 | MRS基礎入門之HDFS元件介紹

HDFS原理

MRS使用HDFS的副本機制來保證資料的可靠性,HDFS中每儲存一個檔案則自動生成1個備份檔案,即共2個副本。HDFS副本數可通過“dfs.replication”參數查詢。

  • 當MRS叢集中Core節點規格選擇為非本地盤(hdd)時,若叢集中隻有一個Core節點,則HDFS預設副本數為1。若叢集中Core節點數大于等于2,則HDFS預設副本數為2。
  • 當MRS叢集中Core節點規格選擇為本地盤(hdd)時,若叢集中隻有一個Core節點,則HDFS預設副本數為1。若叢集中有兩個Core節點,則HDFS預設副本數為2。若叢集中Core節點數大于等于3,則HDFS預設副本數為3。
雲小課 | MRS基礎入門之HDFS元件介紹

MRS服務的HDFS元件支援以下部分特性:

  • HDFS元件支援糾删碼,使得資料備援減少到50%,且可靠性更高,并引入條帶化的塊存儲結構,最大化的利用現有叢集單節點多磁盤的能力,使得資料寫入性能在引入編碼過程後,仍和原來多副本備援的性能接近。
  • 支援HDFS元件上節點均衡排程和單節點内的磁盤均衡排程,有助于擴容節點或擴容磁盤後的HDFS存儲性能提升。

HDFS檔案基礎操作

在MRS叢集中,您可以通過管理控制台、用戶端指令以及API接口等多種方式進行HDFS檔案的操作。

MRS叢集的建立您

1、通過MRS管理控制台檢視HDFS檔案資訊

在MRS管理控制台,點選叢集名稱進入到MRS叢集詳情頁面,單擊“檔案管理”。

在檔案管理頁面,即可檢視HDFS檔案清單,并可以執行檔案删除、檔案夾增删以及與OBS服務資料的導入導入。

雲小課 | MRS基礎入門之HDFS元件介紹

2、通過叢集用戶端檢視HDFS檔案資訊

a. 登入MRS叢集的FusionInsight Manager頁面(如果沒有彈性IP,需提前購買彈性IP),建立一個使用者hdfstest,綁定使用者組supergroup,綁定角色System_administrator(叢集未開啟Kerberos認證可跳過)。

b. 下載下傳并安裝叢集全量用戶端,例如用戶端安裝目錄為“/opt/client”,可參考​​安裝用戶端​​。

c. 為用戶端節點綁定一個彈性IP,然後使用root使用者登入主Master節點,并進入用戶端所在目錄并認證使用者。

cd /opt/client

source bigdata_env

kinit hbasetest(叢集未開啟Kerberos認證可跳過)

d. 使用hdfs指令進行HDFS檔案相關操作。

例如:

  • 建立檔案夾:

hdfs dfs -mkdir /tmp/testdir

  • 檢視檔案夾:

hdfs dfs -ls /tmp

Found 11 items 
drwx------   - hdfs       hadoop          0 2021-05-20 11:20 /tmp/.testHDFS 
drwxrwxrwx   - mapred     hadoop          0 2021-05-10 10:33 /tmp/hadoop-yarn 
drwxrwxrwx   - hive       hadoop          0 2021-05-10 10:43 /tmp/hive 
drwxrwx---   - hive       hive            0 2021-05-18 16:21 /tmp/hive-scratch 
drwxrwxrwt   - yarn       hadoop          0 2021-05-17 11:30 /tmp/logs 
drwx------   - hive       hadoop          0 2021-05-20 11:20 /tmp/monitor 
drwxrwxrwx   - spark2x    hadoop          0 2021-05-10 10:45 /tmp/spark2x 
drwxrwxrwx   - spark2x    hadoop          0 2021-05-10 10:44 /tmp/sparkhive-scratch 
drwxr-xr-x   - hetuserver hadoop          0 2021-05-17 11:32 /tmp/state-store-launcher 
drwxr-xr-x   - hdfstest   hadoop          0 2021-05-20 11:20 /tmp/testdir 
drwxrwxrwx   - hive       hadoop          0 2021-05-10 10:43 /tmp/tmp-hive-insert-flag      
  • 上傳本地檔案至HDFS:

hdfs dfs -put /tmp/test.txt /tmp/testdir (/tmp/test.txt提前準備)

執行hdfs dfs -ls /tmp/testdir指令檢查檔案是否存在。

Found 1 items 
-rw-r--r--   3 hdfstest hadoop         49 2021-05-20 11:21 /tmp/testdir/test.txt      
  • 下載下傳HDFS檔案到本地:

hdfs dfs -get /tmp/testdir/test.txt /opt

3、通過API接口通路HDFS檔案

HDFS支援使用Java語言進行程式開發,使用API接口通路HDFS檔案系統,進而實作大資料業務應用。

具體的API接口内容請參考​​HDFS Java API​​。

關于HDFS應用開發及相關樣例代碼介紹,請參考​​《HDFS開發指南》​​。

​​​​

繼續閱讀