這篇文章給大家分享的是有關(guān)hadoop體系結(jié)構(gòu)的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
hadoop的體系結(jié)構(gòu)
NameNode - 主節(jié)點(diǎn)主服務(wù)器
SecondaryNameNode– 是輔助nameNode
DataNode -數(shù)據(jù)保存用的
TaskTracker – 接收任務(wù)
JobTracker - 分?jǐn)?shù)據(jù) -100M Datanode1,DataNode2,DataNode3
Master:主節(jié)點(diǎn),相當(dāng)于項(xiàng)目經(jīng)理
Slave:從節(jié)點(diǎn)相當(dāng)于PG
Hadoop只能運(yùn)行在linux系統(tǒng)上:
在linux系統(tǒng)上裝JVM虛擬機(jī),然后,上面運(yùn)行了三個進(jìn)程
SecondaryNameNode,Jobtracter,NameNode這三個進(jìn)程,這三個都是java進(jìn)程
其中,NameNode是最重要的一個java進(jìn)程,他決定了主節(jié)點(diǎn),在從節(jié)點(diǎn)上沒有這個進(jìn)程
SecondaryNameNode相當(dāng)于NameNode的秘書,協(xié)助NameNode完成工作, Jobtracter任務(wù)跟蹤進(jìn)程,用來跟蹤任務(wù)
并且把任務(wù)交給從節(jié)點(diǎn).
可以看到通常應(yīng)用都會有一個主節(jié)點(diǎn)和一個從節(jié)點(diǎn),并且從節(jié)點(diǎn)中也有兩個java進(jìn)程,因?yàn)樵谘b有從節(jié)點(diǎn)的服務(wù)器上,也裝的是linux系統(tǒng),
在linux系統(tǒng)上裝有jvm,然后跑了兩個java進(jìn)程,一個是: Jobtracter,另一個是:DataNode數(shù)據(jù)節(jié)點(diǎn),這個進(jìn)程用來處理和數(shù)據(jù)有關(guān)的任務(wù).
注意在hadoop系統(tǒng)中,只有一個主節(jié)點(diǎn),其他的都屬于從節(jié)點(diǎn).
l NameNode:這是hadoop的守護(hù)進(jìn)程(注意是進(jìn)程JVM)。負(fù)責(zé)記錄文件是如何分割成數(shù)據(jù)塊,以及這些數(shù)據(jù)塊分別存儲到哪些數(shù)據(jù)節(jié)點(diǎn)上。
對內(nèi)存進(jìn)行集中管理。NameNode在整個hadoop中只有一個。一旦NameNode服務(wù)器宕機(jī),整個系統(tǒng)將無法運(yùn)行。
l DataNode:集群中的每個從服務(wù)器都運(yùn)行一個DataNode后臺程序。這個后臺程序負(fù)責(zé)將HDFS數(shù)據(jù)塊寫到本地的文件系統(tǒng)。
l Secondary NomeNode:用來監(jiān)控HDFS狀態(tài)的輔助后臺程序。如保存NameNode的快照。
l JobTracker:用戶連接應(yīng)用程序和hadoop。每一個hadoop集群中只一個 JobTracker,一般它運(yùn)行在Master節(jié)點(diǎn)上。
l TaskTracker:負(fù)責(zé)與DataNode進(jìn)行結(jié)合。
hadoop namenode -format [格式化以后生成的目錄 ,即hdfs的目錄。]
啟動hadoop
如果發(fā)現(xiàn)有5個java進(jìn)程,則說明啟動成功:
因?yàn)檫@里我們用了一臺機(jī)器,所以這臺機(jī)器既充當(dāng)了主節(jié)點(diǎn),又充當(dāng)了從節(jié)點(diǎn).
用jps命令,可以查看啟動了哪些java進(jìn)程.
jps
ResourceManager(hadoop2.x封裝了JobTracker、TaskTracker)
NameNode
NodeManager
DataNode
SecondaryNameNode[這個進(jìn)程,不知我的怎么沒有啟動起來]
hdfs概念與命令
HDFS是hadoop Distributed file system的縮寫,是hadoop的分布式文件系統(tǒng)。
HDFS由hadoop來管理,它不同于普通的文件系統(tǒng),不能直觀的查找文件,必須要通過hadoop命令操作HDFS。
HDFS是一個主從結(jié)構(gòu)的體系,一個HDFS集群是由一個名字節(jié)點(diǎn),它是一個管理文件的命名空間和調(diào)節(jié)客戶端訪問文件的主服務(wù)器,
當(dāng)然還有的數(shù)據(jù)節(jié)點(diǎn),一個節(jié)點(diǎn)一個,它來管理存儲。HDFS暴露文件命名空間和允許用戶數(shù)據(jù)存儲成文件。
內(nèi)部機(jī)制是將一個文件分割成一個或多個的塊,這些塊存儲在一組數(shù)據(jù)節(jié)點(diǎn)中。
NameNode名字節(jié)點(diǎn)操作文件命名空間的文件或目錄操作,如打開,關(guān)閉,重命名,等等。它同時確定塊與數(shù)據(jù)節(jié)點(diǎn)的映射。
DataNode數(shù)據(jù)節(jié)點(diǎn)來負(fù)責(zé)來自文件系統(tǒng)客戶的讀寫請求。
數(shù)據(jù)節(jié)點(diǎn)同時還要執(zhí)行塊的創(chuàng)建,刪除,和來自名字節(jié)點(diǎn)的塊復(fù)制指示。
名字節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)都是軟件運(yùn)行在普通的機(jī)器之上,機(jī)器典型的都是linux,HDFS是用java來寫的,
任何支持java的機(jī)器都可以運(yùn)行名字節(jié)點(diǎn)或數(shù)據(jù)節(jié)點(diǎn),利用java語言的超輕便型,很容易將HDFS部署到大范圍的機(jī)器上。
典型的部署時將有一個專門的機(jī)器來運(yùn)行名字節(jié)點(diǎn)軟件,機(jī)群中的其他機(jī)器運(yùn)行一個數(shù)據(jù)節(jié)點(diǎn)實(shí)例。
體系結(jié)構(gòu)排斥在一個機(jī)器上運(yùn)行多個數(shù)據(jù)節(jié)點(diǎn)的實(shí)例,但是實(shí)際的部署不會有這種情況。
集群中只有一個名字節(jié)點(diǎn)極大地簡單化了系統(tǒng)的體系。名字節(jié)點(diǎn)是仲裁者和所有HDFS的元數(shù)據(jù)的倉庫。系統(tǒng)設(shè)計(jì)成用戶的實(shí)際數(shù)據(jù)不經(jīng)過名字節(jié)點(diǎn)。
1、hadoop下的文件操作命令
1 :列出hdfs文件
~# hadoop dfs –ls /或~# hadoop fs –ls / 或hdfs dfs -ls /
查看user下的內(nèi)容
hadoop fs –ls /user
這里查看這個文件還有一個方法就是在網(wǎng)頁中查看:進(jìn)入http://127.0.0.1:50070,也就是hdfs的管理系統(tǒng)
然后點(diǎn)擊相應(yīng)的文件目錄就可以了.
這里需要注意:當(dāng)查看hadoop文件系統(tǒng)的時候需要用命令hadoop fs –ls 這樣前面加上hadoop fs 因?yàn)榧偃?br/>直接用ls的話,那么就是指模擬出來的linux文件系統(tǒng)中的東西
2:將文件上傳到hdfs
這里演示將windows系統(tǒng)中的一個credream.txt文件上傳到hadoop的hdfs分布式系統(tǒng)中,
首先可以通過cd c:進(jìn)入本地的windows的c盤
然后cd..走到系統(tǒng)的根目錄
Ls可以看到當(dāng)前文件系統(tǒng)的盤符
Cd c
Ls
可以列出c盤中的文件
:
xiaofeng@xiaofeng-PC/cygdrive/c
下面通過命令把本地c盤中的credream.txt文件傳到hadoop hdfs文件系統(tǒng)中的user目錄下
下面是命令行:
注意:這里hdfs dfs –put credream.txt /user/credream.txt
就是把c盤的文件上傳到hadoop的hdfs文件系統(tǒng)的user目錄下.
hdfs dfs –put credream.txt,這個指的是本地c盤,因?yàn)榭梢钥吹絚ygdrive/c指的就是c盤了,所以沒有另外指定本地的文件目錄
而且可以對文件進(jìn)行重命名:
hdfs dfs –put credream.txt /user/hadoop.txt就是把本地c盤的credream.txt文件上傳到hadoop的hdfs系統(tǒng)并進(jìn)行重命名.
echo hello credream > test.txt就是指的是在本地的C盤進(jìn)行創(chuàng)建一個test.txt文件,但是如果是win7系統(tǒng)的話,那么會有
權(quán)限問題
可以看到在c盤不可以,但是在d盤就可以創(chuàng)建test.txt文件了
這是把本地D盤的test.txt文件上傳到hdfs文件系統(tǒng)的/user/目錄下不改變文件的名字
這里是上傳整個目錄到hdfs文件系統(tǒng)的/user/目錄下
mkdir hadooptest 在本地d盤創(chuàng)建一個hadooptest文件夾
cp test.txt hadooptest就是把test.txt文件拷貝到hadooptest文件夾中
hadoop fs –put hadooptest /user/
把hadooptest文件夾上傳到hdfs文件系統(tǒng)的/user/目錄下
使用hadoop fs –copyFromLocal test.txt /user/testa.txt
將本地的test.txt文件拷貝一份然后上傳到hdfs文件系統(tǒng)中并且重命名為testa.txt文件
然后通過hadoop fs –ls /user 查看hdfs文件系統(tǒng)中user目錄下的文件
3:將hdfs中的文件復(fù)制到本地系統(tǒng)中
通過get命令,即可以操作文件也可以操作文件夾:
操作一個文件,將hdfs上的文件/wj/a.txt保存到本地,并取名為b.txt
以下下載整個文件到當(dāng)前目錄下來,注意最后的一個點(diǎn)
get命令例子二:
通過hadoop fs –get /user/testa.txt testb.txt 就是把hdfs中的user/下的testa.txt文件下載到本地并重命名
hadoop fs –get /user/testa.txt . 直接把hdfs中的user/下的testa.txt文件下載到本地 .代表直接到本地不進(jìn)行重命名
hadoop fs –get /user/hadooptest . 直接把hdfs中的user/下的hadooptest文件夾下載到本地 .代表直接到本地不進(jìn)行重命名
4:刪除hdsf下的某個文檔
這里是刪除本地的文件,和linux下的命令一樣
刪除文件夾的時候要用遞歸
這里是刪除hdfs文件系統(tǒng)中的文件和文件夾的例子:
hadoop fs –rm /user/testa.txt 刪除user文件夾下的testa.txt文件
hadoop fs –rm /user/*.txt 刪除user文件夾下所有.txt的文件
hadoop fs –rm /user/hadooptest 這樣是不能刪除一個文件夾的要用遞歸
hadoop fs –rmr user/hadooptest 這個命令可以刪除文件夾和文件夾中的文件遞歸刪除
感謝各位的閱讀!關(guān)于“hadoop體系結(jié)構(gòu)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!