日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
HDFS與Linux文件系統(tǒng)的比較分析(hdfs與linux文件系統(tǒng))

HDFS(Hadoop Distributed File System)與Linux文件系統(tǒng)的比較分析

創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、伊州網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為伊州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

隨著大數(shù)據(jù)時代的到來,分布式存儲系統(tǒng)被廣泛應(yīng)用,其中HDFS和Linux文件系統(tǒng)是常見的分布式文件系統(tǒng)。兩者都是存儲大數(shù)據(jù)集的文件系統(tǒng),但是它們之間存在著很大的差異。本文將對HDFS和Linux文件系統(tǒng)進(jìn)行比較分析,以幫助人們更好地理解它們的區(qū)別和用途。

一、HDFS和Linux文件系統(tǒng)的基本概念

HDFS是一種專為大數(shù)據(jù)量設(shè)計的分布式文件系統(tǒng),由Apache Hadoop項(xiàng)目開發(fā)。它運(yùn)行在低成本硬件上,提供高容錯性和高吞吐量。HDFS將數(shù)據(jù)塊存儲在多個計算機(jī)節(jié)點(diǎn)上,使得大規(guī)模的數(shù)據(jù)集可以被高效地存儲和處理。HDFS具有自我修復(fù)能力,在某個節(jié)點(diǎn)出現(xiàn)故障時,它會自動將數(shù)據(jù)塊復(fù)制到其他節(jié)點(diǎn)上。

Linux文件系統(tǒng)是Linux操作系統(tǒng)使用的文件系統(tǒng),它的設(shè)計目標(biāo)是提供高效的文件存儲和管理能力。Linux文件系統(tǒng)采用基于inode的文件系統(tǒng)結(jié)構(gòu),將文件和目錄存儲在磁盤上的inode節(jié)點(diǎn)中。當(dāng)需要訪問文件時,Linux文件系統(tǒng)會讀取inode節(jié)點(diǎn)信息獲取文件存儲的位置和大小,然后通過磁盤讀寫操作訪問文件。

二、HDFS和Linux文件系統(tǒng)的設(shè)計目標(biāo)

HDFS和Linux文件系統(tǒng)在設(shè)計目標(biāo)上存在差異。HDFS的設(shè)計目標(biāo)是存儲超大規(guī)模數(shù)據(jù)集,并提供高性能和高容錯性。它追求高吞吐量,適合進(jìn)行一次寫入多次讀取的操作。而Linux文件系統(tǒng)的設(shè)計目標(biāo)則是提供可靠的文件存儲和管理能力,支持各種類型的文件系統(tǒng)和操作。它追求低延遲,適合進(jìn)行隨機(jī)讀寫的操作。

三、HDFS和Linux文件系統(tǒng)的文件管理方式

HDFS和Linux文件系統(tǒng)在文件管理方式上也存在很大不同。HDFS采用塊存儲方式,將大文件切分成多個大小相等的塊進(jìn)行存儲。每個塊都會復(fù)制多份存儲到不同的節(jié)點(diǎn)上,以提高數(shù)據(jù)的可靠性和容錯性。HDFS通過NameNode和DataNode兩個服務(wù)來管理和存儲文件。

Linux文件系統(tǒng)則采用inode節(jié)點(diǎn)的方式來管理文件和目錄。每個文件和目錄都有一個唯一的inode節(jié)點(diǎn)來存儲它們的信息和屬性。Linux文件系統(tǒng)使用類似于B樹的方式來組織inode節(jié)點(diǎn),以支持大量的文件和目錄。

四、HDFS和Linux文件系統(tǒng)的性能比較

HDFS和Linux文件系統(tǒng)在性能方面也存在巨大差異。由于HDFS追求高吞吐量,以便支持大規(guī)模數(shù)據(jù)處理,它的寫入性能非常高。但是HDFS的隨機(jī)讀寫性能相對較差,由于它采用塊存儲方式,無法進(jìn)行隨機(jī)讀取。而Linux文件系統(tǒng)則具有較好的隨機(jī)讀寫性能,由于它采用inode節(jié)點(diǎn)的方式,可以快速定位文件和目錄的物理位置,支持隨機(jī)讀寫。

總體而言,HDFS適合用于超大規(guī)模數(shù)據(jù)集的存儲和處理,它可以提供高效的數(shù)據(jù)訪問和可靠的數(shù)據(jù)保護(hù)。而Linux文件系統(tǒng)則適合用于普通文件管理和存儲,它提供高效的隨機(jī)讀寫和靈活的文件操作。

五、HDFS和Linux文件系統(tǒng)的應(yīng)用場景

HDFS和Linux文件系統(tǒng)的應(yīng)用場景也不同。HDFS適合用于大規(guī)模數(shù)據(jù)的存儲和分析,如數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、等。HDFS可以與Hadoop生態(tài)系統(tǒng)中的其他工具配合使用,如MapReduce、Pig、Hive等,提供全面的大數(shù)據(jù)解決方案。而Linux文件系統(tǒng)則適合用于普通文件的存儲和管理,如文檔、圖片、視頻等。Linux文件系統(tǒng)可以與各種操作系統(tǒng)和工具配合使用,如Windows、Mac OS等,提供各種類型的應(yīng)用和服務(wù)。

HDFS和Linux文件系統(tǒng)在設(shè)計、文件管理、性能和應(yīng)用方面存在巨大差異。在實(shí)際應(yīng)用中,需要根據(jù)具體需求選擇適當(dāng)?shù)奈募到y(tǒng),以實(shí)現(xiàn)更佳的性能和效率。對于存儲超大規(guī)模數(shù)據(jù)的應(yīng)用,HDFS是更佳的選擇,它可以提供高效的數(shù)據(jù)管理和保護(hù)。而對于普通文件管理和存儲的應(yīng)用,Linux文件系統(tǒng)則是更為合適的選擇,它提供高效的隨機(jī)讀寫和靈活的文件操作。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!

HDFS 系統(tǒng)架構(gòu)

HDFS Architecture

Hadoop Distributed File System (HDFS) 是設(shè)計可以運(yùn)行于普通商業(yè)硬件上的分布式文件系統(tǒng)。它跟現(xiàn)有的分布式文件系統(tǒng)有很多相通的地方,但是區(qū)別也是顯著的。HDFS具有高度容錯性能,被設(shè)計運(yùn)行于低成本硬件上。HDFS可以向應(yīng)用提供高吞吐帶寬,適合于大數(shù)據(jù)應(yīng)用。HDFS 放寬了一些 POSIX 的要求,以開啟對文件系統(tǒng)數(shù)據(jù)的流式訪問。HDFS 最初是作為Apache Nutch web 搜索引擎項(xiàng)目的基礎(chǔ)設(shè)施開發(fā)的。HDFS 現(xiàn)在是 Apache Hadoop 核心項(xiàng)目的一部分。

HDFS是主從架構(gòu)。一個HDFS集群包含一個NameNode,一個管理文件系統(tǒng)命名空間和控制客戶端訪問文件的master server。以及,若干的 DataNodes,通常集群的每個node一個,管理運(yùn)行DataNode的節(jié)點(diǎn)上的存儲。HDFS 發(fā)布一個文件系統(tǒng)命名空間,并允許用戶數(shù)據(jù)已文件的形式存儲在上面。內(nèi)部,一個文件被分成一個或多個塊,存儲在一組DataNodes上。NameNode 執(zhí)行文件系統(tǒng)命名空間操作,比如:打開、關(guān)閉、重命名文件或目錄。它還確定塊到DataNodes的映射。DataNodes 負(fù)責(zé)向文件系統(tǒng)客戶端提供讀寫服務(wù)。DataNodes 根據(jù) NameNode 的指令執(zhí)行塊的創(chuàng)建、刪除以及復(fù)制。

NameNode 和 DataNode 是設(shè)計運(yùn)行于普通商業(yè)機(jī)器的軟件。這些機(jī)器通常運(yùn)行 GNU/Linux 操作系統(tǒng)。HDFS 是Java 語言編寫的;任何支持Java的機(jī)器都可以運(yùn)行NameNode or DataNode 軟件。使用高移植性Java語言,意味著HDFS可以部署在很大范圍的機(jī)器上。一個典型的部署就是一臺特定的機(jī)器只運(yùn)行NameNode 軟件,而集群內(nèi)的其他機(jī)器運(yùn)行DataNode 軟件的一個實(shí)例。這種架構(gòu)不排除一臺機(jī)器上運(yùn)行多個DataNodes ,但是在實(shí)際部署中很少見。

單 NameNode 節(jié)點(diǎn)的存在大大簡化了架構(gòu)。NameNode 是所有HDFS 元數(shù)據(jù)的仲裁和倉庫。系統(tǒng)設(shè)計上,用戶數(shù)據(jù)永遠(yuǎn)不經(jīng)過NameNode。

HDFS 支持傳統(tǒng)的文件分級組織。用戶或應(yīng)用可以創(chuàng)建目錄,并在目錄內(nèi)存儲文件。 文件系統(tǒng)命名空間的層次結(jié)構(gòu)跟其他文件系統(tǒng)類似;可以創(chuàng)建、刪除、移動、重命名文件。HDFS 支持 user quotas 和 access permissions 。 HDFS 不支持軟、硬鏈接。但是,HDFS 架構(gòu)不排除實(shí)現(xiàn)這些功能。

雖然HDFS遵守 文件系統(tǒng)命名約定 ,一些路徑和名稱 (比如/.reserved 和.snapshot ) 保留了。比如功能 transparent encryption 和 snapshot 就使用的保留路徑。

NameNode 維護(hù)文件系統(tǒng)命名空間。任何文件系統(tǒng)命名空間或?qū)傩缘淖兓紩籒ameNode記錄。 應(yīng)用可以指定HDFS應(yīng)維護(hù)的文件副本數(shù)量。文件副本的數(shù)量被稱為該文件的復(fù)制因子 replication factor 。該信息存儲于NameNode。

HDFS 被設(shè)計用于在一個大規(guī)模集群上跨機(jī)器可靠地存儲巨大的文件。它以一序列的塊的方式存儲文件。每個文件都可以配置塊尺寸和復(fù)制因子。

一個文件除了最后一個塊外,其他的塊一樣大。在 append 和 hsync 添加了可變長度塊的支持后,用戶可以啟動一個新的塊,而不用填充最后一個塊到配置的塊大小。

應(yīng)用可以指定一個文件的副本數(shù)量。復(fù)制因子可以在創(chuàng)建的時候指定,也可以以后更改。HDFS的文件只寫一次(除了 appends 和 truncates) ,并在任何時候只允許一個 writer 。

NameNode 指定塊復(fù)制的所有決策。它周期性的從集群的每個DataNodes 接受 Heartbeat 和 Blockreport。Heartbeat 的接受代表 DataNode 工作正常。Blockreport 包含了DataNode上所有塊的清單。

副本的位置對HDFS的可靠性和性能至關(guān)重要。副本位置的優(yōu)化是HDFS和其他大多數(shù)分布式文件系統(tǒng)的區(qū)別。這是一個需要大量調(diào)優(yōu)和經(jīng)驗(yàn)的特性。Rack-aware 復(fù)制策略的目的就是提高數(shù)據(jù)可靠性,可用性和網(wǎng)絡(luò)帶寬利用率。當(dāng)前副本位置策略的實(shí)現(xiàn)是這個方向的之一步。實(shí)施該策略的短期目標(biāo)是在生產(chǎn)環(huán)境驗(yàn)證它,了解其更多的行為,為測試和研究更復(fù)雜的策略打下基礎(chǔ)。

大型HDFS實(shí)例運(yùn)行在跨多個Rack的集群服務(wù)器上。不同rack的兩個node通信需要通過交換機(jī)。大多數(shù)情況下,同一rack內(nèi)的帶寬大于rack之間的帶寬。

NameNode 通過在 Hadoop Rack Awareness 內(nèi)的進(jìn)程描述 判斷DataNode 屬于哪個rack id。一個簡單但是并非更佳的策略是將副本分布于不同的racks。這可以防止整個機(jī)架發(fā)生故障時丟失數(shù)據(jù),并允許在讀取數(shù)據(jù)時使用多個機(jī)架的帶寬。該策略在群集中均勻地分布副本,使得組件故障時很容易平衡負(fù)載。 但是,該策略會增加寫入成本,因?yàn)閷懭氩僮餍枰獙K傳輸?shù)蕉鄠€機(jī)架。

一般,復(fù)制因子設(shè)置為3, HDFS 的分布策略是:如果writer在datanode上則將一個副本放到本地機(jī)器, 如果writer不在datanode上則將一個副本放到writer所在機(jī)柜的隨機(jī)datanode 上;另一個副本位于不同機(jī)架的node上;最后一個副本位于同一遠(yuǎn)程機(jī)架的不同node上。 該策略減少了機(jī)架間的寫流量,提升了寫性能。機(jī)架故障的概率遠(yuǎn)小于節(jié)點(diǎn)故障的概率;此策略不會影響數(shù)據(jù)可靠性和可用性承諾。但是,在讀取數(shù)據(jù)時,它確實(shí)減少了聚合帶寬,因?yàn)閴K存儲于兩個機(jī)柜而不是三個機(jī)柜內(nèi)。使用此策略,副本不會均勻的分布于機(jī)架上。1/3 副本 位于同一節(jié)點(diǎn), 2/3 副本位于同一機(jī)架, 另1/3副本位于其他機(jī)架。該策略提升了寫性能而不影響數(shù)據(jù)可靠性和讀性能。

如果復(fù)制因子大于3,那么第4個及以后的副本則隨機(jī)放置,只要滿足每個機(jī)架的副本在(replicas – 1) / racks + 2)之下。

因?yàn)?NameNode 不允許 DataNodes 擁有同一個塊的多個副本,所以副本的更大數(shù)就是DataNodes的數(shù)量。

在把對 存儲類型和存儲策略 的支持添加到 HDFS 后,除了上面介紹的rack awareness外, NameNode 會考慮其他副本排布的策略。NameNode 先基于rack awareness 選擇節(jié)點(diǎn),然后檢查候選節(jié)點(diǎn)有文件關(guān)聯(lián)的策略需要的存儲空間。 如果候選節(jié)點(diǎn)沒有該存儲類型, NameNode 會查找其他節(jié)點(diǎn)。如果在之一條路徑中找不到足夠的節(jié)點(diǎn)來放置副本,NameNode會在第二條路徑中查找具有回滾存儲類型的節(jié)點(diǎn)。 、

當(dāng)前,這里描述的默認(rèn)副本排布策略正在使用中。

為了最小化全局帶寬消耗和讀取延遲, HDFS 會嘗試從最靠近reader的副本響應(yīng)讀取請求。如果在reader節(jié)點(diǎn)的同一機(jī)架上上存在副本,則該副本有限響應(yīng)讀請求。如果HDFS集群跨多個數(shù)據(jù)中心,則本地數(shù)據(jù)中心優(yōu)先。

啟動時,NameNode 會進(jìn)入一個稱為 Safemode 的特殊狀態(tài)。當(dāng)NameNode處于Safemode狀態(tài)時,不會復(fù)制數(shù)據(jù)塊。NameNode從DataNodes接收Heartbeat和Blockreport消息。Blockreport包含DataNode托管的數(shù)據(jù)塊列表。每個塊都指定了最小副本數(shù)。當(dāng)數(shù)據(jù)塊的最小副本數(shù)已與NameNode簽入時,該塊被認(rèn)為是安全復(fù)制的。在NameNode簽入安全復(fù)制數(shù)據(jù)塊的已配置百分比(加上額外的30秒)后,NameNode退出Safemode狀態(tài)。然后,它判斷列表內(nèi)的數(shù)據(jù)塊清單是否少于副本指定的數(shù)量。NameNode 然后復(fù)制這些塊給其他 DataNodes。

HDFS 命名空間由 NameNode 存儲。NameNode 使用事務(wù)日志 EditLog 來持久化的保存系統(tǒng)元數(shù)據(jù)的每次變更。比如,在HDFS創(chuàng)建一個新文件,NameNode會在 EditLog 插入一條記錄來指示該變更。類似的,變更文件的復(fù)制因子也會在 EditLog 插入一條新記錄。NameNode 以文件的形式,將 EditLog 保存在本地OS文件系統(tǒng)上。整個文件系統(tǒng)命名空間,包括塊到文件的映射、文件系統(tǒng)屬性,都存儲于名字為 FsImage 的文件內(nèi)。 FsImage 也以文件的形式,存儲在NameNode的本地文件系統(tǒng)上。

NameNode 將包含整個文件系統(tǒng)和塊映射的image保存在內(nèi)存中。當(dāng)NameNode啟動時,或檢查點(diǎn)被預(yù)先定義的閾值觸發(fā)時,它會從磁盤讀取 FsImage 和 EditLog ,把 EditLog 內(nèi)的事物應(yīng)用到內(nèi)存中的FsImage,再將新版本刷新回磁盤的新 FsImage 。然后會截斷舊的 EditLog ,因?yàn)樗氖挛镆呀?jīng)應(yīng)用到了持久化的 FsImage 上。 這個過程稱為檢查點(diǎn) checkpoint 。檢查點(diǎn)的目的是通過對文件系統(tǒng)元數(shù)據(jù)進(jìn)行快照并保存到FsImage,來確保HDFS擁有文件系統(tǒng)元數(shù)據(jù)的一致性視圖。盡管讀取 FsImage 是高效的,但是對 FsImage 直接增量修改是不高效的。不是對每次編輯修改 FsImage ,而是將每次編輯保存到 Editlog 。在檢查點(diǎn)期間,將 Editlog 的變更應(yīng)用到 FsImage 。一個檢查點(diǎn)可以在固定周期(dfs.namenode.checkpoint.period)(以秒為單位)觸發(fā),也可以文件系統(tǒng)事物數(shù)量達(dá)到某個值(dfs.namenode.checkpoint.txns)的時候觸發(fā)。

DataNode 在本地文件系統(tǒng)上以文件的形式存儲 HDFS data 。DataNode 不知道 HDFS 文件。它將HDFS data 的每個塊以獨(dú)立的文件存儲于本地文件系統(tǒng)上。DataNode 不在同一目錄創(chuàng)建所有的文件。而是,使用heuristic來確定每個目錄的更佳文件數(shù)量,并適當(dāng)?shù)膭?chuàng)建子目錄。在一個目錄創(chuàng)建所有的本地文件是不好的,因?yàn)楸镜匚募到y(tǒng)可能不支持單目錄的海量文件數(shù)量。當(dāng)DataNode啟動的時候,它掃描本地文件系統(tǒng),生成與本地文件系統(tǒng)一一對應(yīng)的HDFS數(shù)據(jù)塊列表,然后報告給NameNode。這個報告稱為 Blockreport。

所有的HDFS通信協(xié)議都在TCP/IP協(xié)議棧上??蛻舳伺cNameNode指定的端口建立連接。與NameNode以ClientProtocol 通信。DataNodes與NameNode以DataNode Protocol進(jìn)行通信。遠(yuǎn)程過程調(diào)用(RPC)封裝了Client Protocol 和 DataNode Protocol。設(shè)計上,NameNode從不啟動任何RPCs。相反,它只應(yīng)答DataNodes or clients發(fā)出的RPC請求。

HDFS的主要目標(biāo)是可靠的存儲數(shù)據(jù),即使是在故障的情況下。常見故障類型有三種:

NameNode failures

,

DataNode failures

network partitions

。

每個DataNode都周期性的向NameNode發(fā)送心跳信息。 一個

network partition

可能導(dǎo)致DataNodes子集丟失與NameNode的連接。NameNode會基于心跳信息的缺失來偵測這種情況。NameNode將沒有心跳信息的DataNodes標(biāo)記為 dead ,并不再轉(zhuǎn)發(fā)任何IO請求給它們。任何注冊到dead DataNode的數(shù)據(jù)對HDFS將不再可用。DataNode death會導(dǎo)致某些塊的復(fù)制因子低于它們指定的值。NameNode不斷跟蹤需要復(fù)制的塊,并在必要時啟動復(fù)制。很多因素會導(dǎo)致重新復(fù)制:DataNode不可用,副本損壞,DataNode上硬盤故障,復(fù)制因子增加。

標(biāo)記 DataNodes dead 的超時時間保守地設(shè)置了較長時間 (默認(rèn)超過10分鐘) 以避免DataNodes狀態(tài)抖動引起的復(fù)制風(fēng)暴。對于性能敏感的應(yīng)用,用戶可以設(shè)置較短的周期來標(biāo)記DataNodes為過期,讀寫時避免過期節(jié)點(diǎn)。

HDFS 架構(gòu)支持?jǐn)?shù)據(jù)再平衡schemes。如果一個DataNode的空余磁盤空間低于閾值,sheme就會將數(shù)據(jù)從一個DataNode 移動到另外一個。在某些文件需求突然增長的情況下,sheme可能會在集群內(nèi)動態(tài)的創(chuàng)建額外的副本,并再平衡其他數(shù)據(jù)。這些類型的數(shù)據(jù)再平衡schemes還沒有實(shí)現(xiàn)。

有可能從DataNode獲取的數(shù)據(jù)塊,到達(dá)的時候損壞了。這種損壞可能是由于存儲設(shè)備故障、網(wǎng)絡(luò)故障、軟件bug。HDFS客戶端軟件會HDFS的內(nèi)容進(jìn)行校驗(yàn)。當(dāng)客戶端創(chuàng)建HDFS文件的時候,它計算文件每個塊的校驗(yàn)值,并以獨(dú)立的隱藏文件存儲在同一HDFS命名空間內(nèi)。當(dāng)客戶端檢索文件時候,它會校驗(yàn)從每個DataNode獲取的數(shù)據(jù),是否與關(guān)聯(lián)校驗(yàn)文件內(nèi)的校驗(yàn)值匹配。 如果不匹配,客戶端可以從另外擁有副本塊的DataNode檢索。

FsImage 和 EditLog 是HDFS的核心數(shù)據(jù)結(jié)構(gòu)。這些文件的損壞將導(dǎo)致HDFS實(shí)例異常。 因此,NameNode可以配置為支持多 FsImage 和 EditLog 副本模式。任何對 FsImage or EditLog 的更新都會導(dǎo)致每個 FsImages 和 EditLogs 的同步更新。 FsImage 和 EditLog 的同步更新會導(dǎo)致降低命名空間每秒的事物效率。但是,這種降級是可以接受的,因?yàn)镠DFS應(yīng)用是數(shù)據(jù)密集型,而不是元數(shù)據(jù)密集型。當(dāng)NameNode重啟的時候,它會選擇最新的一致的 FsImage 和 EditLog 。

另外一種提供故障恢復(fù)能力的辦法是多NameNodes 開啟HA,以 shared storage on NFS or distributed edit log (called Journal)的方式。推薦后者。

Snapshots – 快照,支持在特定時刻存儲數(shù)據(jù)的副本??煺展δ艿囊粋€用法,可以回滾一個故障的HDFS實(shí)例到已知工作良好的時候。

HDFS被設(shè)計與支持超大的文件。與HDFS適配的軟件都是處理大數(shù)據(jù)的。這些應(yīng)用都只寫一次,但是它們會讀取一或多次,并且需要滿足流式讀速度。HDFS支持文件的

一次寫入-多次讀取

語義。 HDFS典型的塊大小是128 MB.。因此,HDFS文件被分割為128 MB的塊,可能的話每個塊都位于不同的DataNode上。

當(dāng)客戶端以復(fù)制因子3寫入HDFS文件時,NameNode以

復(fù)制目標(biāo)選擇算法

replication target choosing algorithm 檢索DataNodes 列表。該列表包含了承載該數(shù)據(jù)塊副本的DataNodes清單。然后客戶端寫入到之一個DataNode。之一DataNode逐步接受數(shù)據(jù)的一部分,將每一部分內(nèi)容寫入到本地倉庫,并將該部分?jǐn)?shù)據(jù)傳輸給清單上的第二DataNode。第二DataNode,按順序接受數(shù)據(jù)塊的每個部分,寫入到倉庫,然后將該部分?jǐn)?shù)據(jù)刷新到第三DataNode。最終,第三DataNode將數(shù)據(jù)寫入到其本地倉庫。

因此,DataNode從管道的前一個DataNode獲取數(shù)據(jù),同時轉(zhuǎn)發(fā)到管道的后一個DataNode。因此,數(shù)據(jù)是以管道的方式從一個DataNode傳輸?shù)较乱粋€的。

應(yīng)用訪問HDFS有很多方式。原生的,HDFS 提供了 FileSystem Java API 來給應(yīng)用調(diào)用。還提供了 C language wrapper for this Java API 和 REST API 。另外,還支持HTTP瀏覽器查看HDFS實(shí)例的文件。 通過使用 NFS gateway ,HDFS還可以掛載到客戶端作為本地文件系統(tǒng)的一部分。

HDFS的用戶數(shù)據(jù)是以文件和目錄的形式組織的。它提供了一個命令行接口 FS shell 來提供用戶交互。命令的語法類似于其他shell (比如:bash, csh)。如下是一些范例:

FS shell 的目標(biāo)是向依賴于腳本語言的應(yīng)用提供與存儲數(shù)據(jù)的交互。

DFSAdmin 命令用于管理HDFS集群。這些命令僅給HDFS管理員使用。如下范例:

如果啟用了回收站配置,那么文件被 FS Shell 移除時并不會立即從HDFS刪除。HDFS會將其移動到回收站目錄(每個用戶都有回收站,位于 /user//.Trash )。只要文件還在回收站內(nèi),就可以快速恢復(fù)。

最近刪除的文件大多數(shù)被移動到 current 回收站目錄 ( /user//.Trash/Current ),在配置周期內(nèi),HDFS給 current目錄內(nèi)的文件創(chuàng)建檢查點(diǎn) checkpoints (位于 /user//.Trash/ ) ,并刪除舊的檢查點(diǎn)。參考 expunge command of FS shell 獲取更多關(guān)于回收站檢查點(diǎn)的信息。

在回收站過期后,NameNode從HDFS命名空間刪除文件。刪除文件會將文件關(guān)聯(lián)的塊釋放。注意,在用戶刪除文件和HDFS增加free空間之間,會有一個明顯的延遲。

如下范例展示了FS Shell如何刪除文件。我們在delete目錄下創(chuàng)建兩個文件(test1 & test2)

我們刪除文件 test1。如下命令顯示文件被移動到回收站。

現(xiàn)在我們嘗試以skipTrash參數(shù)刪除文件,該參數(shù)將不將文件發(fā)送到回收站。文件將會從HDFS完全刪除。

我們檢查回收站,只有文件test1。

如上,文件test1進(jìn)了回收站,文件test2被永久刪除了。

當(dāng)縮減文件的復(fù)制因子時,NameNode選擇可以被刪除的多余副本。下一個Heartbeat會通報此信息給DataNode。DataNode然后會刪除響應(yīng)的塊,相應(yīng)的剩余空間會顯示在集群內(nèi)。同樣,在setReplication API調(diào)用完成和剩余空間在集群顯示之間會有一個時間延遲。

Hadoop JavaDoc API .

關(guān)于hdfs與linux文件系統(tǒng)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢:028-86922220。


網(wǎng)頁題目:HDFS與Linux文件系統(tǒng)的比較分析(hdfs與linux文件系統(tǒng))
網(wǎng)頁URL:http://m.5511xx.com/article/dpsdjcj.html