2-HDFS(分布式文件系統(tǒng))

一、簡介

  • 簡介
    HDFS是Hadoop非常重要的核心之一,它也是由Doug Cutting基于Google公司03年10月開源的論文GFS做的開源實現(xiàn),發(fā)展到目前為止,HDFS的運用非常廣泛,基本上很多大數(shù)據(jù)平臺大部分都會選用HDFS(或者類似HDFS)這樣的分布式文件系統(tǒng)、來作為海量數(shù)據(jù)存儲的一個解決方案。
    最初在設(shè)計HDFS時的背景是當時設(shè)備的存儲和讀寫性能都很差,并且單一設(shè)備運行穩(wěn)定性低的情況,于是HDFS在設(shè)計之初就是為了解決大規(guī)模、海量數(shù)據(jù)的存儲以及讀寫,并且盡可能的保證設(shè)備的穩(wěn)定性。
    image.png
  • 優(yōu)缺點
    HDFS的優(yōu)勢有哪些?
    1. 高容錯性,HDFS提供了非常好的“副本冗余機制”,簡單來說就是一份數(shù)據(jù)在HDFS當中存放,包含它自身在內(nèi)至少會有(默認)三個副本類似隨機的存放在集群不同的服務(wù)器上,并且當其中一臺服務(wù)器宕機、當前這臺服務(wù)器上數(shù)據(jù)丟失,但HDFS會自動再將缺失的副本再通過copy的方式、保證數(shù)據(jù)的副本不會低于三個。
    2. 可構(gòu)建在廉價的商業(yè)服務(wù)器上,基于第一條高容錯性的優(yōu)勢,HDFS可以搭建在低成本的廉價服務(wù)器上,而沒有必要選擇非常昂貴的服務(wù)器上,因為即使廉價服務(wù)器穩(wěn)定性相對較差,但是集群規(guī)模成百上千臺宕機一臺、兩臺對于整個HDFS集群來說,基本上沒有任何的影響。
    3. 適合海量數(shù)據(jù)存儲,分布式架構(gòu)設(shè)計、HDFS可支持幾萬臺服務(wù)器的集群規(guī)模,乘以每臺服務(wù)器磁盤容量、整個HDFS文件系統(tǒng)容量非常之大,并且他所支持存放的單個數(shù)據(jù)文件GB、TB、PB級別都沒有任何問題。
    4. 適合批處理,它是通過“移動計算而非移動數(shù)據(jù)”來進行設(shè)計,會把數(shù)據(jù)存放位置暴露給計算框架,從而在海量數(shù)據(jù)計算過程中,數(shù)據(jù)在何處便在何處計算,避免了數(shù)據(jù)跨網(wǎng)絡(luò)、結(jié)點移動拷貝的工作,很大限度的提升計算速度。
    5. 流式數(shù)據(jù)訪問,一次寫入、多次讀取。文件一旦寫入完成、不能修改,僅僅只支持追加。保證了數(shù)據(jù)的一致性。
    以上便是HDFS的一些優(yōu)勢,基于這些優(yōu)勢HDFS適用于以下幾個場景:
    1. 適合大文件存儲、海量數(shù)據(jù)存儲
    2. 適合批量數(shù)據(jù)訪問
    HDFS適用于“大文件存儲、海量數(shù)據(jù)存儲”、“批量數(shù)據(jù)訪問”這些場景,但是HDFS本身設(shè)計上也有他的劣勢、或者不擅長的一些場景:
    1. 低延時數(shù)據(jù)訪問,這里的“低延時”指的是例如毫秒級別要將數(shù)據(jù)寫入HDFS、或毫秒級別讀取HDFS內(nèi)數(shù)據(jù),這個它是做不到的。它的優(yōu)勢是在“高吞吐率”的場景,也就是在某一時間內(nèi)大量寫入、讀取數(shù)據(jù),但是毫秒級這種低延時它是支持不了的。
    2. 并發(fā)寫入、隨機修改,HDFS當中文件只能有一個寫、不支持多個線程同時寫入一個文件。寫好的文件只支持追加功能,并不支持文件的隨機寫入。
    3. 小文件存儲,小文件問題是大家在大數(shù)據(jù)領(lǐng)域需要格外注意的問題。首先撇開HDFS來說,假如10GB數(shù)據(jù)容量,10個1GB的數(shù)據(jù)集、1w個1M的數(shù)據(jù)集,占用存儲空間相同,讓你在這兩種數(shù)據(jù)集中找到其中一個數(shù)據(jù)文件,明顯第二種場景非常耗時,也就是說小文件存儲之后,在尋址的時間開銷會非常之高、以至于會高于讀取時間。此外,回到HDFS當中來考慮,HDFS當中每一個數(shù)據(jù)文件都會對應(yīng)有一份元數(shù)據(jù)信息需要存放,大家可以把元數(shù)據(jù)信息先簡單理解為就是文件的一些基本信息(如文件名稱、大小、權(quán)限等),一個文件對應(yīng)一條元數(shù)據(jù)信息,當你存儲的都是一些小文件、文件個數(shù)會急速增長,對應(yīng)元數(shù)據(jù)也就需要更多的空間來存儲,并且元數(shù)據(jù)是在內(nèi)存介質(zhì)中存儲,這樣一來會非常浪費內(nèi)存資源、顯然是不適用的。所以,在使用HDFS過程當中一定要注意“小文件”的這個問題。
    image.png

二、原理

  • 系統(tǒng)架構(gòu)
    首先HDFS的架構(gòu)是一個經(jīng)典的主/從架構(gòu)設(shè)計,在這張圖當中NameNode是主節(jié)點,DataNode是從節(jié)點,HDFS Client是客戶端、HDFS提供了比較豐富的客戶端像cli、api、gui等等支持,SecondaryNameNode相當于輔助NameNode工作的一個節(jié)點、但并不是NameNode的備份結(jié)點(這個一定要注意區(qū)分)。
    NameNode,他作為主從架構(gòu)當中的主節(jié)點,其實主要負責接受客戶端提交過來的讀寫請求、以及一些類似管理的工作,比如說,數(shù)據(jù)存到HDFS當中每個文件都會對應(yīng)一份元數(shù)據(jù)信息(先可以簡單認為元數(shù)據(jù)信息記錄了文件的一系列基本屬性、后邊緊接著會展開介紹),這些元數(shù)據(jù)信息都是存放在NameNode的內(nèi)存區(qū)域內(nèi)、由NameNode來進行維護。
    DataNode,他作為一個從節(jié)點出現(xiàn),主要負責數(shù)據(jù)的存放。數(shù)據(jù)文件寫入到HDFS當中會切分為小的數(shù)據(jù)塊block(也就是圖中DataNode方框中紫色、橙色、紅色等小的方塊),這些數(shù)據(jù)塊會存放在DataNode節(jié)點上。在一個HDFS集群當中DataNode結(jié)點可以有任意多臺,當然要根據(jù)你文件系統(tǒng)的數(shù)據(jù)量來確定,并且后期如果容量不足的情況下,也支持DataNode結(jié)點動態(tài)添加、擴容。
    NameNode與DataNode之間的連線,DataNode在運行過程當中一直會和NameNode結(jié)點保持通信。一方面,在DataNode啟動時,會給NameNode上報自己服務(wù)器上有哪些數(shù)據(jù)塊、也就是block的位置存放信息,NameNode接收到這些block位置信息會維護好一份完整的元數(shù)據(jù)信息,從而找到具體數(shù)據(jù)存放在哪些DataNode上;另一方面,運行過程當中,DataNode會每隔3秒定時和NameNode做一次心跳,從而NameNode可以知道DataNode的運行狀況。
    image.png

    一個10G的文件上傳到HDFS中,首先,會在客戶端處進行切分,切分成一個個Block塊,默認情況下Block塊的大小是128M。
    這些切分后的Block塊,會以多副本的形式均勻放置到DataNode中。
    數(shù)據(jù)存放在DataNode中后,主節(jié)點NameNode需要知道這份文件具體切分了多少Block塊和每個Block塊具體存放的位置。所以NameNode節(jié)點保存有一份元數(shù)據(jù)來記錄這些信息。
    image.png

    ActiveNameNode是主節(jié)點,它的具體功能是管理整個集群,是當前活動的管理節(jié)點。
    作為管理節(jié)點,管理命名空間和元數(shù)據(jù)信息,管理Block副本策略。并處理客戶端讀寫請求,為DataNode分配任務(wù)。
    Standby Namenode是Master的熱備節(jié)點,并負責定期合并元數(shù)據(jù)文件
    image.png

    NameNode元數(shù)據(jù)文件分為edits和fsimage。在內(nèi)存中最新的元數(shù)據(jù)是fsimage和edits的合并。Standby NameNode會定期將fsimage和edits合并成一個新的fsimage文件,保證edits文件不會特別大。
    DataNode是Slave節(jié)點,具體功能請見PPT的描述部分。
    image.png

    Block數(shù)據(jù)塊是HDFS最小存儲單元,文件寫入HDFS時會被切分成若干個Block,默認為128M,且備份3個副本。
    Client是客戶端,包括文件切分,并與NameNode和DataNode進行交互,從NameNode獲取元數(shù)據(jù)信息,向DataNode交互進行數(shù)據(jù)的讀取或?qū)懭搿?br>
    image.png
  • 存儲機制
    Block是HDFS的最小存儲單元,默認大小為128M,可以自定義修改,但是要注意修改的一些影響,塊太大和太小都可能會影響性能。
    Block存儲到DataNode上,會以多副本的形式進行存儲,默認副本數(shù)為3,通過機架感知和副本均勻分布的策略保證數(shù)據(jù)的高可用性。數(shù)據(jù)存儲之后,對應(yīng)的元數(shù)據(jù)會保存在NameNode中。
    image.png

    Block文件在DataNode本地磁盤中的目錄結(jié)構(gòu)。其中:
    ·BP-random integer-NameNode-IP address-creation time:BP代表BlockPool,就是Namenode的VERSION中的集群唯一blockpoolID
    ·finalized/rbw:其中finalized目錄用于實際存儲Block文件,finalized用于存 放Block文件以及Block元數(shù)據(jù)文件;rbw是“replica being written”的意思,該目錄用于存儲用戶當前正在寫入的數(shù)據(jù)
    ·VERSION:VERSION文件是java屬性文件,保存了HDFS的基本信息
    ·blk_前綴文件:HDFS中的文件塊本身,存儲的是原始文件內(nèi)容
    ·in_use.lock:防止一臺機器同時啟動多個Datanode進程導致目錄數(shù)據(jù)不一致
    image.png

    block切分之后,會有三個副本,三個副本之間完全都是一樣的沒有任何區(qū)別,注意他們之間并沒有“主備”這樣的區(qū)分。他們會存放到不同的DataNode節(jié)點上。如圖所示,左右兩個為兩個機架,在機架上分別放置多臺服務(wù)器作為DataNode。block在放置的時候,如果默認為三個副本,首先,第一個隨機選擇一臺負載比較低、資源比較空閑的DataNode;然后,第二個會在不同的機架上隨機找一臺服務(wù)器;最后,第三個會在和第二個副本服務(wù)器相同的機架上,找另外一臺服務(wù)器存放。
    image.png

    元數(shù)據(jù)信息持久化,包含有兩種文件:第一個是fsimage文件,大家可以把它理解為是一個內(nèi)存的快照,他會將內(nèi)存當中除去block位置存放信息之外的所有元數(shù)據(jù)信息持久化寫到一個磁盤當中的文件內(nèi);第二個是edits文件,這種文件可以理解為是日志記錄文件。為什么有了fsimage內(nèi)存快照、還需要有edits文件呢?因為如果每次對于文件系統(tǒng)有操作,元數(shù)據(jù)信息就有可能發(fā)生變化,那么每次變化都去更新一下fsimage文件,顯然成本非常之高而且性能也不好,所以fsimage并不會實時去發(fā)生變化,那么后邊這些操作則通過edits文件做一個記錄。
    image.png

    元數(shù)據(jù)持久化文件在DataNode本地磁盤中的目錄結(jié)構(gòu):
    ? fsimage_前綴文件:即fsimage文件,之所以有多個是因為他定時要做合并,所以會保留有多份fsimage文件
    ? edits_前綴文件:即edits文件。
    ? VERSION:VERSION文件是java屬性文件,保存了HDFS的基本信息
    ? seen_txid:是存放transactionId的文件,format之后是0,它代表的是namenode里面的edits_*文件的尾數(shù),namenode重啟的時候,會按照seen_txid的數(shù)字,循序從頭跑edits_0000001~到seen_txid的數(shù)字。
    看一下他們的名稱命名規(guī)則,fsimage名稱中一大串數(shù)字是合并時的一個id標識,edits文件名當中通過下劃線分割前后分別代表合并前、后的id標識。
    image.png

    如圖所示,左右分別為NameNode以及SecondaryNameNode。整個合并流程為,NameNode在磁盤中有fsimage,集群在運行過程當中,客戶端各項操作記錄會寫入到edits文件內(nèi),當觸發(fā)合并時,SecondaryNameNode會主動從NameNode中通過HttpGet方式將edits和fsimage文件拷貝并存放在本地磁盤中,然后開始合并,合并過程其實就是將該fsimage加載到內(nèi)存當中,然后逐條執(zhí)行edits日志中的各項操作、來更新內(nèi)存里的元數(shù)據(jù)信息,全部日志執(zhí)行完成后,此時內(nèi)存當中的元數(shù)據(jù)信息便是觸發(fā)合并那個時間點一份完整的元數(shù)據(jù)信息,再往后,SecondaryNameNode將內(nèi)存當中元數(shù)據(jù)持久化(做快照)產(chǎn)生一個新的fsimage文件,再通過Http Post方式將這個新的fsimage文件發(fā)送給NameNode,NameNode接收到新的fsimage文件啟用新的fsimage文件。并且在觸發(fā)合并的時候,NameNode除會把fsimage、edits交給SecondaryNameNode去合并,與此同時還會生成一個空的edits文件,SecondaryNameNode在做合并的整個過程中,所有客戶端的操作都會記錄在這個新的空edits文件中,直到SecondaryNameNode把新的fsimage文件推給NameNode,NameNode會同時將新的fsimage、以及新的edits文件啟用整個合并過程完成結(jié)束。
    這邊是HDFS元數(shù)據(jù)合并的機制,在運行過程中HDFS會定期觸發(fā)整個合并流程,從而會保證fsimage文件越來越大、但edits文件會在比較的一個范圍內(nèi),這樣一個效果。
    image.png
  • 讀寫操作
    寫流程詳細描述:客戶端在寫文件時,首先通過FileSystem的create函數(shù)發(fā)出創(chuàng)建文件請求,Distributed FileSystem通過RPC協(xié)議將該請求發(fā)送給NameNode,NameNode此時會對寫請求做權(quán)限判斷,不滿足權(quán)限則直接返回,滿足則在文件系統(tǒng)的命名空間中創(chuàng)建一個新的文件,Distributed FileSystem返回DFSOutputStream給客戶端,用于寫數(shù)據(jù),DFSOutputStream在客戶端將數(shù)據(jù)分成block塊,寫入Data Queue,之后由Data Streamer讀取,然后通知NameNode節(jié)點分配DataNode,用來存儲數(shù)據(jù)塊,每塊默認備份3塊,被分配的Datanode放到一個pipeline里面。Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個數(shù)據(jù)節(jié)點,第一個DataNode將數(shù)據(jù)塊發(fā)送到第二個DataNode,第二個DataNode將數(shù)據(jù)塊發(fā)送給第三個DataNode。DFSOutputStream將已經(jīng)發(fā)送出去的數(shù)據(jù)塊保存在ack queue,等待pipeline中的Datanode告知數(shù)據(jù)是否寫入成功。如果數(shù)據(jù)在寫入DataNode的過程中失敗,則首先關(guān)閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開始,當前正在寫入的Datanode被NameNode標示,失效的Datanode在重啟后能察覺到該數(shù)據(jù)塊是過時的,會刪除該數(shù)據(jù)塊,而失效的DataNode會從pipeline中移除,data queue中剩余的數(shù)據(jù)塊會寫入pipeline中的另外兩個Datanode中。在寫入完畢后close FSDataInputStream,并通知NameNode寫入完畢。
    image.png

    image.png

    讀流程詳細描述:客戶端在讀取文件時,首先通過FileSystem的open函數(shù)發(fā)出打開文件請求,Distributed FilesSystem通過RPC協(xié)議將該請求發(fā)送給NameNode,獲得存放文件的數(shù)據(jù)塊信息,對于每一個數(shù)據(jù)塊,NameNode都會返回所有保存數(shù)據(jù)塊的DataNode的地址,客戶端會從網(wǎng)絡(luò)拓撲最近的那個DataNode中讀取數(shù)據(jù)塊。Distributed FileSystem會將從選出的最近的DataNode上打開一個FSDataInputStream并返回給客戶端,用來讀取數(shù)據(jù)。客戶端通過調(diào)用FSDataInputStream的read函數(shù)開始讀取數(shù)據(jù),當此block數(shù)據(jù)塊讀取完畢后,關(guān)閉此流與DataNode的連接,然后連接此文件下一個block數(shù)據(jù)塊距離最近的DataNode,然后進行讀取。當客戶端讀取完畢數(shù)據(jù)后,調(diào)用FSDataInputStream的close函數(shù),關(guān)閉該流。
    image.png

    image.png
  • 安全模式
    安全模式是HDFS所處的一種特殊狀態(tài),在這種狀態(tài)下,文件系統(tǒng)只接受讀數(shù)據(jù)請求,而不接受刪除、修改等變更請求。在NameNode主節(jié)點啟動時,HDFS首先進入安全模式,DataNode在啟動的時候會向namenode匯報可用的block等狀態(tài),當整個系統(tǒng)達到安全標準時,HDFS自動離開安全模式。
    核心的配置項:dfs.namenode.safemode.threshold-pct: 副本數(shù)達到最小要求的block占系統(tǒng)總block數(shù)的百分比,當實際比例超過該配置后,才能離開安全模式(但是還需要其他條件也滿足)。默認為0.999f,也就是說符合最小副本數(shù)要求的block占比超過99.9%時,并且其他條件也滿足才能離開安全模式。如果為小于等于0,則不會等待任何副本達到要求即可離開。如果大于1,則永遠處于安全模式。其他配置項一般默認不啟用,先不做討論。
    image.png

    觸發(fā)安全模式的原因有多種,其實本質(zhì)上是導致了上報率缺失。
    故障排查可以有多種方式,如果是DataNode掛掉,則需要將DataNode進行重啟,如果是NameNode磁盤空間不足,需要清理NameNode磁盤。
    image.png
  • 高可用
    HDFS在設(shè)計上有一些優(yōu)勢和劣勢,劣勢主要是NameNode內(nèi)存受限,可以使用聯(lián)邦機制解決。NameNode單點故障的問題,可以用HA解決。
    image.png

    Hadoop2.x中對NameNode實現(xiàn)了高可用。思考一下PPT中實現(xiàn)高可用的細節(jié)問題。
    image.png

    高可用的本質(zhì)是在主節(jié)點宕機之后,從熱備節(jié)點可以立馬代替宕機的主節(jié)點接管集群,保證服務(wù)是不中斷的。那對于NameNode來說,如果要立馬接管集群并且保證服務(wù)不中斷,那就需要元數(shù)據(jù)保持一致。
    在QJM這種高可用方案中,Journal集群可以實現(xiàn)edits共享,實現(xiàn)Master主備節(jié)點的元數(shù)據(jù)同步。
    Journal集群需要部署奇數(shù)臺,每次edits文件的寫入都需要半數(shù)以上的節(jié)點返回成功才代表成功。保證edits元數(shù)據(jù)文件的高可用。
    image.png

    如圖所示:
    3、 我們可以看到此時集群一共有兩臺NameNode、分別處于Active、Standby狀態(tài),Active狀態(tài)的NameNode相當于處于工作狀況、對集群負責管理并且接受客戶端請求,另外一臺Standby狀態(tài)的NameNode處于一個等待狀況如果Active的出現(xiàn)問題由它來負責接管集群。
    4、 JournalNode集群,它負責管理NameNode日志edits文件的管理,也就是ActiveNameNode寫日志是直接寫入到JournalNode集群上。
    5、 ZKFC – ZookeeperFailoverController,每臺NameNode服務(wù)器上都會運行一個ZKFC進程,主要負責兩個任務(wù):監(jiān)控當前NameNode運行狀況信息、與Zookeeper集群保持心跳并將這些信息匯報給Zookeeper集群;控制NameNode Active、Standby狀態(tài)的切換管理。
    6、 Zookeeper集群,實際中也是部署2N+1臺,核心也是通過Paxos算法,在HDFS集群中主要負責接收到ZKFC匯報的NameNode健康信息做“選舉”,“選舉”哪一臺NameNode應(yīng)該是Active狀態(tài)。
    7、 最下邊是DataNode集群,負責數(shù)據(jù)的存儲,但是區(qū)別于1.x的設(shè)計、在2.x集群中DataNode上報block信息會同時上報給兩臺NameNode。
    HDFS運行過程中,如果Active的NameNode運行出現(xiàn)故障,此時當前NameNode上的ZKFC會將異常的健康信息匯報給Zookeeper集群,或者NameNode這臺服務(wù)器宕機,Zookeeper集群長時間接收不到ZKFC的數(shù)據(jù),都會得知第一臺NameNode運行出現(xiàn)了問題。此時,Zookeeper集群會做選舉、推選第二臺NameNode作為Active的NameNode來接管集群,之后Zookeeper先通知給第二臺NameNode上的ZKFC,由ZKFC將當前這臺NameNode狀態(tài)從Standby切換為Active。fsimage文件在第二臺NameNode上有一份,運行過程中edits文件一直寫在JournalNode集群上、第二臺NameNode可以直接拿到這些edits文件,狀態(tài)切換之后,便可以先將fsimage加載內(nèi)存,然后一條一條執(zhí)行edits日志內(nèi)容,并且集群在運行過程中DataNode會將各自服務(wù)器上block信息匯報給第一臺和第二臺,第二臺上緩存有這些block信息再將它和內(nèi)存當中部分原數(shù)據(jù)信息進行拼接。當這些操作全部執(zhí)行完成之后,此時第二臺NameNode內(nèi)存當中元數(shù)據(jù)信息和第一臺NameNode出現(xiàn)故障時內(nèi)存當中元數(shù)據(jù)信息完全一致,這樣整個HA便達到了。
    image.png

三、操作命令

文件系統(tǒng)命令語法詳見PPT描述。有hadoop fs和hdfs dfs兩種命令,hadoop fs使用廣泛,除了可以操作Hdfs還可以操作本地文件系統(tǒng)。hdfs dfs則只能操作hdfs文件系統(tǒng)。
因為要操作HDFS,所以需要使用URI來定位HDFS位置。URI的具體格式見PPT中描述。如果配置了hdfs客戶端,則可以使用簡寫的形式,否則需使用全寫形式。


image.png

對hdfs的操作命令詳見PPT中所示。這些命令與shell操作本地文件系統(tǒng)是很相似的。只是多了hadoop fs或hdfs dfs這樣的“前綴”。


image.png

對hdfs的操作命令詳見PPT中所示。這些命令可以按照對linux文件系統(tǒng)的操作進行類比。
image.png

四、運維管理

  • 命令管理
    hdfs namenode [-format [-clustered cid] [-force] [-nonInteractive] ] | [-recover [-force] ] 一般我們不需要操作,可能高權(quán)限的系統(tǒng)管理員才會用到。
    image.png

    hdfs namenode -report 查看關(guān)于HDFS集群容量及占用空間大小、DataNode運行狀況、各節(jié)點磁盤使用情況等信息的報告。
    image.png

    hdfs fsck – 全稱file ststem check,用于檢查HDFS上文件和目錄的健康狀態(tài)、獲取文件的block塊信息和位置信息等。
    image.png

    使用FSCK檢查文件系統(tǒng)狀況,可以看到文件系統(tǒng)具體的Block情況,主要關(guān)注Corrupt blocks這個參數(shù),表示壞塊的數(shù)量。
    image.png

    image.png

    Decommission or Recommission 退役、服役,命令行使用較少,web方式可能使用較多。命令行方式執(zhí)行時需要先定義好退役的節(jié)點,在hdfs-site.xml中通過dfs.hosts.exclude項指定配置文件目錄,執(zhí)行hdfs dfsadmin –refreshNodes命令,執(zhí)行過程中后臺會進行block的移動,將即將退役的節(jié)點上將block移動到其他DataNode節(jié)點。
    image.png

    在Transwarp Manager中可以使用圖形化界面進行退役和服役的操作。上下箭頭分別代表服役和退役。
    image.png

    hdfs balancer 各DataNode block分配均勻、負載均衡。場景:集群新增節(jié)點之后,新節(jié)點上block分配相對較少,這時候可以通過該命令讓各個DataNode上block分配相對均勻一些。
    image.png

    可以使用數(shù)據(jù)重分布命令進行數(shù)據(jù)重分布的操作。
    image.png

    數(shù)據(jù)重分布的帶寬默認限制在1M/s,可以使用命令修改數(shù)據(jù)重分布的帶寬
    image.png

    可以使用分布式拷貝命令可以在hdfs集群之間進行大規(guī)模數(shù)據(jù)拷貝,數(shù)據(jù)在拷貝時使用的會使用mapreduce進行處理。
    image.png

    可以使用命令對HDFS進行配額限制,限制目錄下的文件數(shù)量和文件大小。
    image.png

    使用命令進行配額限制。
    image.png

    image.png

    對HDFS目錄進行快照的操作,快照會存儲在源文件夾下命名為.snapshot/,恢復時直接cp拷貝即可。
    image.png
  • 系統(tǒng)監(jiān)控
    image.png

    可以在50070端口查看原生WEB監(jiān)控界面。
    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容