雲小課 | MRS基礎入門之HDFS元件介紹
摘要:HDFS是MapReduce服務中的基礎檔案系統,全稱為Hadoop的分散式檔案系統(Hadoop Distributed File System),可支援實現大規模資料可靠的分散式讀寫。
本文分享自華為雲社群《【雲小課】EI第21課 MRS基礎入門之HDFS元件介紹》,原文作者:Hi,EI 。
HDFS針對的使用場景是資料讀寫具有“一次寫,多次讀”的特徵,而資料“寫”操作是順序寫,也就是在檔案建立時的寫入或者在現有檔案之後的新增操作。HDFS保證一個檔案在一個時刻只被一個呼叫者執行寫操作,而可以被多個呼叫者執行讀操作。
HDFS結構
HDFS是一個Master/Slave的架構,主要包含主、備NameNode和多個DataNode角色。在Master上執行NameNode,而在每一個Slave上執行DataNode,ZKFC需要和NameNode一起執行。
NameNode和DataNode之間的通訊都是建立在TCP/IP的基礎之上的。NameNode、DataNode、ZKFC和JournalNode能部署在執行Linux的伺服器上。
圖1-1中各模組的功能說明如表1-1所示。
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寫入失敗。
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元件支援以下部分特性:
- HDFS元件支援糾刪碼,使得資料冗餘減少到50%,且可靠性更高,並引入條帶化的塊儲存結構,最大化的利用現有叢集單節點多磁碟的能力,使得資料寫入效能在引入編碼過程後,仍和原來多副本冗餘的效能接近。
- 支援HDFS元件上節點均衡排程和單節點內的磁碟均衡排程,有助於擴容節點或擴容磁碟後的HDFS儲存效能提升。
更多關於Hadoop的架構和詳細原理介紹,
請參見:http://hadoop.apache.org/。
HDFS檔案基礎操作
在MRS叢集中,您可以通過管理控制檯、客戶端命令以及API介面等多種方式進行HDFS檔案的操作。
MRS叢集的建立您
可參考建立叢集。
1、通過MRS管理控制檯檢視HDFS檔案資訊
在MRS管理控制檯,點選叢集名稱進入到MRS叢集詳情頁面,單擊“檔案管理”。
在檔案管理頁面,即可檢視HDFS檔案列表,並可以執行檔案刪除、資料夾增刪以及與OBS服務資料的匯入匯入。
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開發指南》。
更多華為雲MapReduce(MRS)服務功能介紹及詳情,請戳這裡瞭解。