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

摘要:HDFS是MapReduce服務中的基礎文件系統,全稱爲Hadoop的分佈式文件系統(Hadoop Distributed File System),可支持實現大規模數據可靠的分佈式讀寫。

本文分享自華爲雲社區《【雲小課】EI第21課 MRS基礎入門之HDFS組件介紹》,原文做者:Hi,EI 。
image.pnghtml

HDFS針對的使用場景是數據讀寫具備「一次寫,屢次讀」的特徵,而數據「寫」操做是順序寫,也就是在文件建立時的寫入或者在現有文件以後的添加操做。HDFS保證一個文件在一個時刻只被一個調用者執行寫操做,而能夠被多個調用者執行讀操做。apache

HDFS結構

HDFS是一個Master/Slave的架構,主要包含主、備NameNode和多個DataNode角色。在Master上運行NameNode,而在每個Slave上運行DataNode,ZKFC須要和NameNode一塊兒運行。segmentfault

NameNode和DataNode之間的通訊都是創建在TCP/IP的基礎之上的。NameNode、DataNode、ZKFC和JournalNode能部署在運行Linux的服務器上。
image.png服務器

圖1-1中各模塊的功能說明如表1-1所示。
image.png架構

HA即爲High Availability,用於解決NameNode單點故障問題,該特性經過主備的方式爲主NameNode提供一個備用者,一旦主NameNode出現故障,能夠迅速切換至備NameNode,從而不間斷對外提供服務。分佈式

在一個典型HDFS HA場景中,一般由兩個NameNode組成,一個處於Active狀態,另外一個處於Standby狀態。oop

爲了能實現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寫入失敗。
image.png編碼

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。
    image.png

MRS服務的HDFS組件支持如下部分特性:

  • HDFS組件支持糾刪碼,使得數據冗餘減小到50%,且可靠性更高,並引入條帶化的塊存儲結構,最大化的利用現有集羣單節點多磁盤的能力,使得數據寫入性能在引入編碼過程後,仍和原來多副本冗餘的性能接近。
  • 支持HDFS組件上節點均衡調度和單節點內的磁盤均衡調度,有助於擴容節點或擴容磁盤後的HDFS存儲性能提高。

更多關於Hadoop的架構和詳細原理介紹,請參見:http://hadoop.apache.org/

HDFS文件基礎操做

在MRS集羣中,您能夠經過管理控制檯、客戶端命令以及API接口等多種方式進行HDFS文件的操做。

MRS集羣的建立您可參考建立集羣。

一、經過MRS管理控制檯查看HDFS文件信息

在MRS管理控制檯,點擊集羣名稱進入到MRS集羣詳情頁面,單擊「文件管理」。

在文件管理頁面,便可查看HDFS文件列表,並能夠執行文件刪除、文件夾增刪以及與OBS服務數據的導入導入。
image.png

二、經過集羣客戶端查看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

三、經過API接口訪問HDFS文件

HDFS支持使用Java語言進行程序開發,使用API接口訪問HDFS文件系統,從而實現大數據業務應用。

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

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

更多華爲雲MapReduce(MRS)服務功能介紹及詳情,請戳這裏瞭解。

點擊關注,第一時間瞭解華爲雲新鮮技術~

相關文章
相關標籤/搜索