自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

掃盲:Hadoop分布式文件系統(tǒng)(HDFS)基礎(chǔ)概念講解!

大數(shù)據(jù) 分布式 Hadoop
本文為您帶來通過shell命令管理Hadoop HDFS的十大基本操作,這些操作對(duì)于管理HDFS集群上的文件非常有用。出于測(cè)試目的,你可以使用Cloudera或者Hortonworks等中的某些VM調(diào)用此命令,或者用于偽分布式集群設(shè)置。

無(wú)論你如何將Hadoop與Spark進(jìn)行對(duì)比,無(wú)論Spark生態(tài)多么成熟和完善,其底層終歸要基于HDFS,畢竟這是目前最成熟的分布式底層文件系統(tǒng),幾乎沒有哪家公司愿意重新花費(fèi)精力研發(fā)一個(gè)全新的文件系統(tǒng)。

本文將討論Hadoop分布式文件系統(tǒng)(HDFS)的基本概念以及管理HDFS的十大Hadoop Shell命令。HDFS是Apache Hadoop框架的底層文件系統(tǒng),是一個(gè)分布式存儲(chǔ)框架,跨越數(shù)千種商用硬件。該文件系統(tǒng)提供容錯(cuò)、高吞吐、流數(shù)據(jù)訪問以及高可靠性等功能。HDFS的體系架構(gòu)適用于存儲(chǔ)大量數(shù)據(jù)及快速處理,HDFS是Apache生態(tài)系統(tǒng)的一部分。

在此之前,我們先來了解Apache Hadoop框架,其主要包含以下幾大模塊:

  • Hadoop Common——包含Hadoop其他模塊所需的庫(kù)和實(shí)用程序;
  • HDFS——商用機(jī)存儲(chǔ)數(shù)據(jù)的分布式文件系統(tǒng),在集群中提供非常高的聚合帶寬;
  • Hadoop YARN ——資源管理平臺(tái),負(fù)責(zé)管理集群上的計(jì)算資源并使用它們調(diào)度用戶應(yīng)用程序;
  • Hadoop MapReduce——用于大規(guī)模數(shù)據(jù)處理的編程模型。

Hadoop中的所有模塊都設(shè)計(jì)了一個(gè)基本假設(shè),即硬件故障(單個(gè)機(jī)器或整個(gè)機(jī)架)是顯而易見的,因此應(yīng)由Hadoop框架在軟件應(yīng)用程序中自動(dòng)處理,Apache Hadoop的HDFS組件最初來自Google的MapReduce和Google File System(GFS)。

HDFS是Hadoop應(yīng)用程序使用的主要分布式存儲(chǔ),HDFS集群主要由NameNode和DataNode組成。NameNode管理文件系統(tǒng)元數(shù)據(jù),DataNode用于存儲(chǔ)實(shí)際數(shù)據(jù)。 

HDFS架構(gòu)圖解釋了NameNode、DataNode和客戶端之間的基本交互,客戶端組件調(diào)用NameNode以獲取文件元數(shù)據(jù)或修改,客戶端直接使用DataNodes執(zhí)行實(shí)際的文件I / O操作。HDFS可能存在一些用戶感興趣的顯著特征:

非常適合使用低成本商用硬件進(jìn)行分布式存儲(chǔ)和處理。Hadoop具有可擴(kuò)展性,容錯(cuò)性且易于擴(kuò)展。MapReduce以其大量分布式應(yīng)用程序的簡(jiǎn)單性和適用性而著稱。HDFS則具有高度可配置性,默認(rèn)配置足以滿足大多數(shù)應(yīng)用程序的需求。通常,僅需要針對(duì)非常大的集群調(diào)整默認(rèn)配置;

  1. Hadoop是基于Java平臺(tái)編寫的,幾乎在所有主要平臺(tái)上都受支持;
  2. Hadoop支持shell和shell類命令與HDFS的通信;
  3. NameNode和DataNode具有內(nèi)置Web服務(wù)器,可以輕松檢查集群的當(dāng)前狀態(tài);
  4. HDFS中經(jīng)常實(shí)現(xiàn)新的功能和更新,以下列表是HDFS中可用的功能子集:

文件權(quán)限和身份驗(yàn)證;

Rackawareness:有助于在計(jì)劃任務(wù)和分配存儲(chǔ)時(shí)考慮節(jié)點(diǎn)的物理位置;

Safemode:管理主要用于維護(hù)的模式;

fsck:這是一個(gè)實(shí)用程序,用于診斷文件系統(tǒng)的運(yùn)行狀況以及查找丟失的文件或塊;

fetchdt:這是一個(gè)用于獲取DelegationToken并將其存儲(chǔ)在本地系統(tǒng)文件中的實(shí)用程序;

Rebalancer:當(dāng)數(shù)據(jù)在DataNode之間分布不均時(shí),這是一個(gè)用于平衡集群的工具;

升級(jí)和回滾:軟件升級(jí)后,可以在升級(jí)前回滾到上一狀態(tài),以防出現(xiàn)任何意外;

SecondaryNameNode:此節(jié)點(diǎn)執(zhí)行命名空間的Checkpoint,并幫助將包含HDFS修改日志的文件大小保持在NameNode的特定限制內(nèi);

Checkpoint節(jié)點(diǎn):此節(jié)點(diǎn)執(zhí)行命名空間的Checkpoint,并有助于最小化存儲(chǔ)在NameNode中的日志大小,其中包含對(duì)HDFS所做的更改,它還替換了以前由Secondary NameNode填充的角色或功能。作為替代方案,NameNode允許多個(gè)節(jié)點(diǎn)作為Checkpoint,只要系統(tǒng)沒有可用(注冊(cè))的備份節(jié)點(diǎn)即可;

Backup節(jié)點(diǎn):可以將其定義為Checkpoint節(jié)點(diǎn)的擴(kuò)展。除了Checkpoint之外,它還用于從NameNode接收編輯流。因此,它維護(hù)自己命名空間的內(nèi)存副本,始終與活動(dòng)的NameNode和命名空間狀態(tài)同步,一次只允許向NameNode注冊(cè)一個(gè)備份節(jié)點(diǎn)。

HDFS的設(shè)計(jì)目標(biāo)

Hadoop的目標(biāo)是在非常大的集群中使用常用服務(wù)器,并且每個(gè)服務(wù)器都有一組廉價(jià)內(nèi)部磁盤驅(qū)動(dòng)器。為了獲得更好的性能,MapReduce API嘗試在存儲(chǔ)要處理的數(shù)據(jù)的服務(wù)器上分配工作負(fù)載,這稱為數(shù)據(jù)局部性。因此,在Hadoop環(huán)境中,建議不要使用 區(qū)域存儲(chǔ)網(wǎng)絡(luò)(SAN)或網(wǎng)絡(luò)直接存儲(chǔ)(NAS) 。對(duì)于使用SAN或NAS的Hadoop部署,額外的網(wǎng)絡(luò)通信開銷可能會(huì)導(dǎo)致性能瓶頸,尤其是在集群規(guī)模較大的情況下。

假設(shè),我們目前擁有1000臺(tái)機(jī)器集群,每臺(tái)機(jī)器都有三個(gè)內(nèi)部磁盤驅(qū)動(dòng)器。因此,請(qǐng)考慮由3000個(gè)廉價(jià)驅(qū)動(dòng)器+ 1000個(gè)廉價(jià)服務(wù)器組成的集群的故障率,這個(gè)數(shù)值會(huì)非常大!不過,好在廉價(jià)硬件相關(guān)的MTTF故障率實(shí)際上已被很好地理解和接受,這讓用戶對(duì)Hadoop的包容性變得很高。Hadoop具有內(nèi)置的容錯(cuò)和故障補(bǔ)償功能,HDFS也是如此,因?yàn)閿?shù)據(jù)被分成塊,這些塊的副本存儲(chǔ)在Hadoop集群的其他服務(wù)器上。為了使其易于理解,我們可以說單個(gè)文件實(shí)際上存儲(chǔ)為較小的塊,這些塊在整個(gè)集群中的多個(gè)服務(wù)器之間進(jìn)行復(fù)制,以便更快地訪問文件。

我們可以考慮一個(gè)應(yīng)用場(chǎng)景,假設(shè)我們現(xiàn)在需要存儲(chǔ)某區(qū)域內(nèi)所有居民的電話號(hào)碼,將姓氏以A開頭的存儲(chǔ)在服務(wù)器1上,以B開頭的在服務(wù)器2上,依此類推。在Hadoop環(huán)境中,此電話簿的各個(gè)部分將分布式存儲(chǔ)在整個(gè)集群中。如果要重建整個(gè)電話簿的數(shù)據(jù),程序需要訪問集群中每個(gè)服務(wù)器的塊。為了實(shí)現(xiàn)更高的可用性,HDFS默認(rèn)將較小的數(shù)據(jù)復(fù)制到另外兩臺(tái)服務(wù)器上。這里會(huì)涉及到冗余的概念,但支持冗余是為了避免故障并提供容錯(cuò)解決方案,可以基于每個(gè)文件或針對(duì)整個(gè)環(huán)境增加或減少該冗余。這種冗余具備多種好處,最明顯的一個(gè)是數(shù)據(jù)高可用。除此之外,數(shù)據(jù)冗余允許Hadoop集群將工作分解為更小的塊,并在集群中的所有服務(wù)器上運(yùn)行較小的作業(yè),以實(shí)現(xiàn)更好的可伸縮性。最后,作為最終用戶,我們獲得了數(shù)據(jù)局部性的好處,這在處理大型數(shù)據(jù)集時(shí)至關(guān)重要。

管理HDFS的十大Hadoop Shell命令

以下是通過shell命令管理Hadoop HDFS的十大基本操作,這些操作對(duì)于管理HDFS集群上的文件非常有用。出于測(cè)試目的,你可以使用Cloudera或者Hortonworks等中的某些VM調(diào)用此命令,或者用于偽分布式集群設(shè)置。

1、在給定路徑的HDFS中創(chuàng)建目錄 

2、列出目錄內(nèi)容 

3、在HDFS中上傳和下載文件 

  1. Upload:  
  2. hadoop fs -put: 

將單個(gè)src文件或多個(gè)src文件從本地文件系統(tǒng)復(fù)制到Hadoop數(shù)據(jù)文件系統(tǒng) 

將文件復(fù)制/下載到本地文件系統(tǒng) 

  1. Download:  
  2. hadoop fs -get: 

 

4、查看文件的內(nèi)容

與unix cat命令相同: 

5、將文件從源復(fù)制到目標(biāo)

此命令也允許多個(gè)源,在這種情況下,目標(biāo)必須是目錄。 

6、將文件從(到)本地文件系統(tǒng)復(fù)制到HDFS 

與put命令類似,但源僅限于本地文件引用。 

7、將文件從源移動(dòng)到目標(biāo)

注意:不允許跨文件系統(tǒng)移動(dòng)文件。 

8、刪除HDFS中的文件或目錄

刪除指定為參數(shù)的文件,僅在目錄為空時(shí)刪除目錄: 

9、顯示文件的最后幾行

類似于Unix中的tail命令 

10、顯示文件的聚合長(zhǎng)度 

結(jié)論

我們已經(jīng)看到HDFS是Apache Hadoop生態(tài)系統(tǒng)的重要組件之一。相比于本地文件系統(tǒng),HDFS確實(shí)非常強(qiáng)大。因此,所有大數(shù)據(jù)應(yīng)用程序都使用HDFS進(jìn)行數(shù)據(jù)存儲(chǔ),這也是作為大數(shù)據(jù)人必須了解HDFS的原因。

責(zé)任編輯:未麗燕 來源: it168網(wǎng)站
相關(guān)推薦

2018-03-01 16:26:30

HDFSHadoop系統(tǒng)

2013-01-07 10:29:31

大數(shù)據(jù)

2012-08-31 16:04:11

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

2013-06-18 14:00:59

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

2010-06-04 18:45:43

Hadoop分布式文件

2011-07-15 17:48:27

Platform

2013-01-09 10:16:09

HDFS

2021-04-13 08:06:17

分布式HDFS存儲(chǔ)大型數(shù)據(jù)

2013-01-07 10:42:43

HDFS

2014-06-24 15:24:52

Moosefs分布式集群

2010-11-01 05:50:46

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

2018-07-06 09:16:22

HadoopRAID文件系統(tǒng)

2013-06-18 16:58:12

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

2013-06-18 14:13:43

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

2013-06-18 14:33:13

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

2010-06-07 14:02:13

Hadoop的分布式文

2017-10-17 08:33:31

存儲(chǔ)系統(tǒng)分布式

2016-09-14 23:51:23

2012-09-19 13:43:13

OpenAFS分布式文件系統(tǒng)

2012-09-19 15:05:24

MogileFS分布式文件系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)