namenode和datanode工作机制_Hadoop的namenode的管理机制,工作机制和datanode的工作原理...
HDFS前言:
1) 設(shè)計(jì)思想
分而治之:將大文件、大批量文件,分布式存放在大量服務(wù)器上,以便于采取分而治之的方式對(duì)海量數(shù)據(jù)進(jìn)行運(yùn)算分析;
2)在大數(shù)據(jù)系統(tǒng)中作用:
為各類分布式運(yùn)算框架(如:mapreduce,spark,tez,……)提供數(shù)據(jù)存儲(chǔ)服務(wù)
3)重點(diǎn)概念:文件切塊,副本存放,元數(shù)據(jù)
4)、NameNode節(jié)點(diǎn):由core-site.xml配置指定(name=fs.defaultFS,value=hdfs://slaver1:8020)。
DataNode/NodeManager節(jié)點(diǎn):由slavers文件指定。
SecondaryNameNode節(jié)點(diǎn):由hdfs-site.xml文件指定(name=dfs.namenode.secondary.http-address,value=slaver1:50090)
ResourceManager節(jié)點(diǎn):在yarn-site.xml文件中指定(name=yarn.resourcemanager.hostname,value=slaver1)。
historyServer節(jié)點(diǎn):在mapred-site.xml配置文件里面修改。
1:分布式文件系統(tǒng)(Distributed File System):
(1):數(shù)據(jù)量越來(lái)越多,在一個(gè)操作系統(tǒng)管轄的范圍存不下了,那么就分配到更多的操作系統(tǒng)管理的磁盤中,但是不方便管理和維護(hù),因此迫切需要一種系統(tǒng)來(lái)管理多臺(tái)機(jī)器上的文件,這就是分布式文件管理系統(tǒng) 。
(2):是一種允許文件通過(guò)網(wǎng)絡(luò)在多臺(tái)主機(jī)上分享的文件系統(tǒng),可讓多機(jī)器上的多用戶分享文件和存儲(chǔ)空間。
(3):通透性。讓實(shí)際上是通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)文件的動(dòng)作,由程序與用戶看來(lái),就像是訪問(wèn)本地的磁盤一般。
(4):容錯(cuò)。即使系統(tǒng)中有某些節(jié)點(diǎn)脫機(jī),整體來(lái)說(shuō)系統(tǒng)仍然可以持續(xù)運(yùn)作而不會(huì)有數(shù)據(jù)損失。
(5):分布式文件管理系統(tǒng)很多,hdfs只是其中一種。適用于一次寫入多次查詢的情況,不支持并發(fā)寫情況,小文件不合適。
2:Hadoop最擅長(zhǎng)的是(離線 )日志分析
(1):HDFS----》海量數(shù)據(jù)的存儲(chǔ),負(fù)責(zé)文件讀寫。
(2):MapReduce----》海量數(shù)據(jù)的分析。
(3):YARN----》資源管理調(diào)度,負(fù)責(zé)為mapreduce程序分配硬件資源。
3:HDFS的Shell
(1):調(diào)用文件系統(tǒng)(FS)Shell命令應(yīng)使用 bin/hadoop fs 的形式。
(2):所有的FS shell命令使用URI路徑作為參數(shù)。
URI格式是scheme://authority/path。HDFS的scheme是hdfs,對(duì)本地文件系統(tǒng),scheme是file。其中scheme和authority參數(shù)都是可選的,如果未加指定,就會(huì)使用配置中指定的默認(rèn)scheme。
例如:/parent/child可以表示成hdfs://namenode:namenodePort/parent/child,或者更簡(jiǎn)單的/parent/child(假設(shè)配置文件是namenode:namenodePort)
(3):大多數(shù)FS Shell命令的行為和對(duì)應(yīng)的Unix Shell命令類似。
4:HDFS fs命令
(1)-help [cmd]?? ?//顯示命令的幫助信息
(2)-ls(r) ?? ?//顯示當(dāng)前目錄下所有文件
(3)-du(s) ?? ?//顯示目錄中所有文件大小
(4)-count[-q] ?? ?//顯示目錄中文件數(shù)量
(5)-mv ?? ?//移動(dòng)多個(gè)文件到目標(biāo)目錄
(6)-cp ?? ?//復(fù)制多個(gè)文件到目標(biāo)目錄
(7)-rm(r)?? ??? ?//刪除文件(夾)
(8)-put ?? ?//本地文件復(fù)制到hdfs
(9)-copyFromLocal?? ?//同put
(10)-moveFromLocal?? ?//從本地文件移動(dòng)到hdfs
(11)-get [-ignoreCrc] ?? ?//復(fù)制文件到本地,可以忽略crc校驗(yàn)
(12)-getmerge ?? ??? ?//將源目錄中的所有文件排序合并到一個(gè)文件中
(13)-cat ?? ?//在終端顯示文件內(nèi)容
(14)-text ?? ?//在終端顯示文件內(nèi)容
(15)-copyToLocal [-ignoreCrc] ?? ?//復(fù)制到本地
(16)-moveToLocal
(17)-mkdir ?? ?//創(chuàng)建文件夾
(18)-touchz ?? ?//創(chuàng)建一個(gè)空文件
5:HDFS的Shell命令練習(xí)
(1)#hadoop fs -ls /? 查看HDFS根目錄
(2)#hadoop fs -mkdir /test 在根目錄創(chuàng)建一個(gè)目錄test
(3)#hadoop fs -mkdir /test1 在根目錄創(chuàng)建一個(gè)目錄test1
(4)#hadoop fs -put ./test.txt /test或#hadoop fs -copyFromLocal ./test.txt /test
(5)#hadoop fs -get /test/test.txt .或#hadoop fs -getToLocal /test/test.txt .
(6)#hadoop fs -cp /test/test.txt /test1
(7)#hadoop fs -rm /test1/test.txt
(8)#hadoop fs -mv /test/test.txt /test1
(9)#hadoop fs -rmr /test1
6:HDFS架構(gòu)
(1)NameNode
(2)DataNode
(3)Secondary NameNode
7:NameNode
(1)是整個(gè)文件系統(tǒng)的管理節(jié)點(diǎn)。它維護(hù)著整個(gè)文件系統(tǒng)的文件目錄樹(shù),文件/目錄的元信息和每個(gè)文件對(duì)應(yīng)的數(shù)據(jù)塊列表。接收用戶的操作請(qǐng)求。
(2)文件包括:
fsimage:元數(shù)據(jù)鏡像文件。存儲(chǔ)某一時(shí)段NameNode內(nèi)存元數(shù)據(jù)信息。
edits:操作日志文件。
fstime:保存最近一次checkpoint的時(shí)間
(3)以上這些文件是保存在linux的文件系統(tǒng)中。
(4)、NameNode是主節(jié)點(diǎn),存儲(chǔ)文件的元數(shù)據(jù),如文件名,文件目錄結(jié)構(gòu),文件屬性(生成事件,副本數(shù),文件權(quán)限),以及每個(gè)文件的塊列表和塊所在的DataNode信息等等。
(5)、Namenode是一個(gè)中心服務(wù)器,單一節(jié)點(diǎn),負(fù)責(zé)管理文件系統(tǒng)的名字空間,以及客戶端對(duì)文件的訪問(wèn)。文件操作,NameNode負(fù)責(zé)文件元數(shù)據(jù)的操作,DataNode負(fù)責(zé)處理文件內(nèi)容的讀寫請(qǐng)求,跟文件內(nèi)容相關(guān)的數(shù)據(jù)流不經(jīng)過(guò)NameNode,只會(huì)詢問(wèn)它跟那個(gè)DataNode聯(lián)系,否則NameNode會(huì)成為系統(tǒng)的瓶頸。副本存放在那些DataNode上由NameNode來(lái)控制,根據(jù)全局情況做出塊放置決定,讀取文件時(shí)候NameNode盡量讓用戶先讀取最近的副本,降低帶塊消耗和讀取延時(shí)。NameNode全權(quán)管理數(shù)據(jù)塊的復(fù)制。它周期性的從集群中每個(gè)DataNode接受心跳信號(hào)和塊狀態(tài)報(bào)告(Blocreport)。接受到心跳信號(hào)意味著該DataNode節(jié)點(diǎn)正常工作。塊狀態(tài)報(bào)告包含一個(gè)該DataNode上所有數(shù)據(jù)塊的列表。
8:NameNode的工作特點(diǎn)
(1)Namenode始終在內(nèi)存中保存metedata,用于處理“讀請(qǐng)求”
(2)到有“寫請(qǐng)求”到來(lái)時(shí),namenode會(huì)首先寫editlog到磁盤,即向edits文件中寫日志,成功返回后,才會(huì)修改內(nèi)存,并且向客戶端返回
(3)Hadoop會(huì)維護(hù)一個(gè)fsimage文件,也就是namenode中metedata的鏡像,但是fsimage不會(huì)隨時(shí)與namenode內(nèi)存中的metedata保持一致,而是每隔一段時(shí)間通過(guò)合并edits文件來(lái)更新內(nèi)容。Secondary namenode就是用來(lái)合并fsimage和edits文件來(lái)更新NameNode的metedata的。
9:SecondaryNameNode
(1)HA的一個(gè)解決方案。但不支持熱備。配置即可。
(2)執(zhí)行過(guò)程:從NameNode上下載元數(shù)據(jù)信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并將其推送到NameNode,替換舊的fsimage.
(3)默認(rèn)在安裝在NameNode節(jié)點(diǎn)上,但這樣...不安全!
(4)、用來(lái)監(jiān)控hdfs狀態(tài)的輔助后臺(tái)程序,每隔一段事件獲取hdfs元數(shù)據(jù)的快照。
10:secondary namenode的工作流程
(1)secondary通知namenode切換edits文件
(2)secondary從namenode獲得fsimage和edits(通過(guò)http)
(3)secondary將fsimage載入內(nèi)存,然后開(kāi)始合并edits
(4)secondary將新的fsimage發(fā)回給namenode
(5)namenode用新的fsimage替換舊的fsimage
11:什么時(shí)候checkpiont
(1)fs.checkpoint.period 指定兩次checkpoint的最大時(shí)間間隔,默認(rèn)3600秒。
(2)fs.checkpoint.size??? 規(guī)定edits文件的最大值,一旦超過(guò)這個(gè)值則強(qiáng)制checkpoint,不管是否到達(dá)最大時(shí)間間隔。默認(rèn)大小是64M。
12:NameNode和SecondNameNode之間的聯(lián)系
13:Datanode
(1)提供真實(shí)文件數(shù)據(jù)的存儲(chǔ)服務(wù)。
(2)文件塊(block):最基本的存儲(chǔ)單位。對(duì)于文件內(nèi)容而言,一個(gè)文件的長(zhǎng)度大小是size,那么從文件的0偏移開(kāi)始,按照固定的大小,順序?qū)ξ募M(jìn)行劃分并編號(hào),劃分好的每一個(gè)塊稱一個(gè)Block。HDFS默認(rèn)Block大小是128MB,以一個(gè)256MB文件,共有256/128=2個(gè)Block.
dfs.block.size
(3)不同于普通文件系統(tǒng)的是,HDFS中,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小,并不占用整個(gè)數(shù)據(jù)塊存儲(chǔ)空間
(4)Replication。多復(fù)本。默認(rèn)是三個(gè)。hdfs-site.xml的dfs.replication屬性。
(5)、DataNode在本地文件系統(tǒng)存儲(chǔ)文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗(yàn)和。
(6)、DataNode,一個(gè)數(shù)據(jù)塊在DataNode以文件存儲(chǔ)在磁盤上,包括兩個(gè)文件,一個(gè)是數(shù)據(jù)本身,一個(gè)是元數(shù)據(jù)包括數(shù)據(jù)塊的長(zhǎng)度,塊數(shù)據(jù)的校驗(yàn)和,以及時(shí)間戳。DataNode啟動(dòng)后NameNode注冊(cè),通過(guò)后,周期性(1小時(shí))的向NameNode上報(bào)所有的塊信息。心跳是每3秒一次,心跳返回結(jié)果帶有NameNode給該DataNode的命令如復(fù)制塊數(shù)據(jù)到另一臺(tái)機(jī)器,或者刪除某個(gè)數(shù)據(jù)塊。如果超過(guò)10分鐘沒(méi)有收到某個(gè)DataNode的心跳,則認(rèn)為該節(jié)點(diǎn)不可用。集群運(yùn)行中可以安全加入和退出一些機(jī)器。
14:Remote Procedure Call
(1)RPC——遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開(kāi)發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。
(2)RPC采用客戶機(jī)/服務(wù)器模式。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。首先,客戶機(jī)調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到服務(wù)進(jìn)程,然后等待應(yīng)答信息。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息的到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá),服務(wù)器獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,客戶端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行。
(3)hadoop的整個(gè)體系結(jié)構(gòu)就是構(gòu)建在RPC之上的(見(jiàn)org.apache.hadoop.ipc)。
15:HDFS讀過(guò)程
(1)初始化FileSystem,然后客戶端(client)用FileSystem的open()函數(shù)打開(kāi)文件
(2)FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),得到文件的數(shù)據(jù)塊信息,對(duì)于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點(diǎn)返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。
(3)FileSystem返回FSDataInputStream給客戶端,用來(lái)讀取數(shù)據(jù),客戶端調(diào)用stream的read()函數(shù)開(kāi)始讀取數(shù)據(jù)。
(4)DFSInputStream連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn),data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端(client)
(5)當(dāng)此數(shù)據(jù)塊讀取完畢時(shí),DFSInputStream關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后連接此文件下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。
(6)當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close函數(shù)。
(7)在讀取數(shù)據(jù)的過(guò)程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)通信出現(xiàn)錯(cuò)誤,則嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。
(8)失敗的數(shù)據(jù)節(jié)點(diǎn)將被記錄,以后不再連接。
16:HDFS寫過(guò)程
(1)初始化FileSystem,客戶端調(diào)用create()來(lái)創(chuàng)建文件
(2)FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件,元數(shù)據(jù)節(jié)點(diǎn)首先確定文件原來(lái)不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。
(3)FileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù),客戶端開(kāi)始寫入數(shù)據(jù)。
(4)DFSOutputStream將數(shù)據(jù)分成塊,寫入data queue。data queue由Data Streamer讀取,并通知元數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)節(jié)點(diǎn),用來(lái)存儲(chǔ)數(shù)據(jù)塊(每塊默認(rèn)復(fù)制3塊)。分配的數(shù)據(jù)節(jié)點(diǎn)放在一個(gè)pipeline里。Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)。第一個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)塊發(fā)送給第二個(gè)數(shù)據(jù)節(jié)點(diǎn)。第二個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)發(fā)送給第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。
(5)DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)已經(jīng)寫入成功。
(6)當(dāng)客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close函數(shù)。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點(diǎn),并等待ack queue返回成功。最后通知元數(shù)據(jù)節(jié)點(diǎn)寫入完畢。
(7)如果數(shù)據(jù)節(jié)點(diǎn)在寫入的過(guò)程中失敗,關(guān)閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開(kāi)始,當(dāng)前的數(shù)據(jù)塊在已經(jīng)寫入的數(shù)據(jù)節(jié)點(diǎn)中被元數(shù)據(jù)節(jié)點(diǎn)賦予新的標(biāo)示,則錯(cuò)誤節(jié)點(diǎn)重啟后能夠察覺(jué)其數(shù)據(jù)塊是過(guò)時(shí)的,會(huì)被刪除。失敗的數(shù)據(jù)節(jié)點(diǎn)從pipeline中移除,另外的數(shù)據(jù)塊則寫入pipeline中的另外兩個(gè)數(shù)據(jù)節(jié)點(diǎn)。元數(shù)據(jù)節(jié)點(diǎn)則被通知此數(shù)據(jù)塊是復(fù)制塊數(shù)不足,將來(lái)會(huì)再創(chuàng)建第三份備份。
17:HDFS的架構(gòu)
(1)主從結(jié)構(gòu)
主節(jié)點(diǎn), namenode
從節(jié)點(diǎn),有很多個(gè): datanode
(2)namenode負(fù)責(zé):
接收用戶操作請(qǐng)求
維護(hù)文件系統(tǒng)的目錄結(jié)構(gòu)
管理文件與block之間關(guān)系,block與datanode之間關(guān)系
(3)datanode負(fù)責(zé):
存儲(chǔ)文件
文件被分成block存儲(chǔ)在磁盤上
為保證數(shù)據(jù)安全,文件會(huì)有多個(gè)副本
18:Hadoop部署方式
(1)本地模式
(2)偽分布模式
(3)集群模式
19:Hadoop的特點(diǎn)
(1)擴(kuò)容能力(Scalable):能可靠地(reliably)存儲(chǔ)和處理千兆字節(jié)(PB)數(shù)據(jù)。
(2)成本低(Economical):可以通過(guò)普通機(jī)器組成的服務(wù)器群來(lái)分發(fā)以及處理數(shù)據(jù)。這些服務(wù)器群總計(jì)可達(dá)數(shù)千個(gè)節(jié)點(diǎn)。
(3)高效率(Efficient):通過(guò)分發(fā)數(shù)據(jù),hadoop可以在數(shù)據(jù)所在的節(jié)點(diǎn)上并行地(parallel)處理它們,這使得處理非常的快速。
(4)可靠性(Reliable):hadoop能自動(dòng)地維護(hù)數(shù)據(jù)的多份副本,并且在任務(wù)失敗后能自動(dòng)地重新部署(redeploy)計(jì)算任務(wù)。
20:HDFS的概念和特性:
1)首先,它是一個(gè)文件系統(tǒng),用于存儲(chǔ)文件,通過(guò)統(tǒng)一的命名空間——目錄樹(shù)來(lái)定位文件
2)其次,它是分布式的,由很多服務(wù)器聯(lián)合起來(lái)實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色;
3)重要特性如下:
(1)HDFS中的文件在物理上是分塊存儲(chǔ)(block),塊的大小可以通過(guò)配置參數(shù)( dfs.blocksize)來(lái)規(guī)定,默認(rèn)大小在hadoop2.x版本中是128M,老版本中是64M
(2)HDFS文件系統(tǒng)會(huì)給客戶端提供一個(gè)統(tǒng)一的抽象目錄樹(shù),客戶端通過(guò)路徑來(lái)訪問(wèn)文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
(3)目錄結(jié)構(gòu)及文件分塊信息(元數(shù)據(jù))的管理由namenode節(jié)點(diǎn)承擔(dān)
namenode是HDFS集群主節(jié)點(diǎn),負(fù)責(zé)維護(hù)整個(gè)hdfs文件系統(tǒng)的目錄樹(shù),以及每一個(gè)路徑(文件)所對(duì)應(yīng)的block塊信息(block的id,及所在的datanode服務(wù)器)
(4)文件的各個(gè)block的存儲(chǔ)管理由datanode節(jié)點(diǎn)承擔(dān)
datanode是HDFS集群從節(jié)點(diǎn),每一個(gè)block都可以在多個(gè)datanode上存儲(chǔ)多個(gè)副本(副本數(shù)量也可以通過(guò)參數(shù)設(shè)置dfs.replication)
(5)HDFS是設(shè)計(jì)成適應(yīng)一次寫入,多次讀出的場(chǎng)景,且不支持文件的修改
注意:適合用來(lái)做數(shù)據(jù)分析,并不適合用來(lái)做網(wǎng)盤應(yīng)用,因?yàn)?#xff0c;不便修改,延遲大,網(wǎng)絡(luò)開(kāi)銷大,成本太高;
22:hadoop常用命令參數(shù)介紹:
-help
功能:輸出這個(gè)命令參數(shù)手冊(cè)
-ls
功能:顯示目錄信息
示例: hadoop fs -ls hdfs://hadoop-server01:9000/
備注:這些參數(shù)中,所有的hdfs路徑都可以簡(jiǎn)寫
-->hadoop fs -ls /?? 等同于上一條命令的效果
-mkdir
功能:在hdfs上創(chuàng)建目錄
示例:hadoop fs? -mkdir? -p? /aaa/bbb/cc/dd
-moveFromLocal
功能:從本地剪切粘貼到hdfs
示例:hadoop? fs? - moveFromLocal? /home/hadoop/a.txt? /aaa/bbb/cc/dd
-moveToLocal
功能:從hdfs剪切粘貼到本地
示例:hadoop? fs? - moveToLocal?? /aaa/bbb/cc/dd? /home/hadoop/a.txt
--appendToFile
功能:追加一個(gè)文件到已經(jīng)存在的文件末尾
示例:hadoop? fs? -appendToFile? ./hello.txt? hdfs://hadoop-server01:9000/hello.txt
可以簡(jiǎn)寫為:
Hadoop? fs? -appendToFile? ./hello.txt? /hello.txt
-cat
功能:顯示文件內(nèi)容
示例:hadoop fs -cat? /hello.txt
-tail
功能:顯示一個(gè)文件的末尾
示例:hadoop? fs? -tail? /weblog/access_log.1
-text
功能:以字符形式打印一個(gè)文件的內(nèi)容
示例:hadoop? fs? -text? /weblog/access_log.1
-chgrp
-chmod
-chown
功能:linux文件系統(tǒng)中的用法一樣,對(duì)文件所屬權(quán)限
示例:
hadoop? fs? -chmod? 666? /hello.txt
hadoop? fs? -chown? someuser:somegrp?? /hello.txt
-copyFromLocal
功能:從本地文件系統(tǒng)中拷貝文件到hdfs路徑去
示例:hadoop? fs? -copyFromLocal? ./jdk.tar.gz? /aaa/
-copyToLocal
功能:從hdfs拷貝到本地
示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz
-cp
功能:從hdfs的一個(gè)路徑拷貝hdfs的另一個(gè)路徑
示例: hadoop? fs? -cp? /aaa/jdk.tar.gz? /bbb/jdk.tar.gz.2
-mv
功能:在hdfs目錄中移動(dòng)文件
示例: hadoop? fs? -mv? /aaa/jdk.tar.gz? /
-get
功能:等同于copyToLocal,就是從hdfs下載文件到本地
示例:hadoop fs -get? /aaa/jdk.tar.gz
-getmerge
功能:合并下載多個(gè)文件
示例:比如hdfs的目錄 /aaa/下有多個(gè)文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum
-put
功能:等同于copyFromLocal
示例:hadoop? fs? -put? /aaa/jdk.tar.gz? /bbb/jdk.tar.gz.2
-rm
功能:刪除文件或文件夾
示例:hadoop fs -rm -r /aaa/bbb/
-rmdir
功能:刪除空目錄
示例:hadoop? fs? -rmdir?? /aaa/bbb/ccc
-df
功能:統(tǒng)計(jì)文件系統(tǒng)的可用空間信息
示例:hadoop? fs? -df? -h? /
-du
功能:統(tǒng)計(jì)文件夾的大小信息
示例:
hadoop? fs? -du? -s? -h /aaa/*
-count
功能:統(tǒng)計(jì)一個(gè)指定目錄下的文件節(jié)點(diǎn)數(shù)量
示例:hadoop fs -count /aaa/
-setrep
功能:設(shè)置hdfs中文件的副本數(shù)量
示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz
23:Hdfs的工作機(jī)制:
(工作機(jī)制的學(xué)習(xí)主要是為加深對(duì)分布式系統(tǒng)的理解,以及增強(qiáng)遇到各種問(wèn)題時(shí)的分析解決能力,形成一定的集群運(yùn)維能力)
注意:很多不是真正理解hadoop技術(shù)體系的人會(huì)常常覺(jué)得HDFS可用于網(wǎng)盤類應(yīng)用,但實(shí)際并非如此。要想將技術(shù)準(zhǔn)確用在恰當(dāng)?shù)牡胤?#xff0c;必須對(duì)技術(shù)有深刻的理解
概述
1:HDFS集群分為兩大角色:NameNode、DataNode
2:NameNode負(fù)責(zé)管理整個(gè)文件系統(tǒng)的元數(shù)據(jù)
3:DataNode 負(fù)責(zé)管理用戶的文件數(shù)據(jù)塊
4:文件會(huì)按照固定的大小(blocksize)切成若干塊后分布式存儲(chǔ)在若干臺(tái)datanode上
5:每一個(gè)文件塊可以有多個(gè)副本,并存放在不同的datanode上
6:Datanode會(huì)定期向Namenode匯報(bào)自身所保存的文件block信息,而namenode則會(huì)負(fù)責(zé)保持文件的副本數(shù)量
7:HDFS的內(nèi)部工作機(jī)制對(duì)客戶端保持透明,客戶端請(qǐng)求訪問(wèn)HDFS都是通過(guò)向namenode申請(qǐng)來(lái)進(jìn)行
24:資源調(diào)度管理YARN的節(jié)點(diǎn)介紹:
1、ResourceManager節(jié)點(diǎn):
處理客戶端請(qǐng)求,啟動(dòng)和監(jiān)控ApplicationMaster,監(jiān)控NodeManager,資源分配和調(diào)度。
2、NodeManager:
單個(gè)節(jié)點(diǎn)上的資源管理,處理來(lái)自ResourceManager的命令,處理來(lái)自ApplicationMaster的命令。
3、ApplicationMaster:
數(shù)據(jù)切分,為應(yīng)用程序申請(qǐng)資源,分分配給內(nèi)部任務(wù),任務(wù)監(jiān)控與容錯(cuò)。
4、Container:
對(duì)任務(wù)運(yùn)行環(huán)境的抽象,封裝了cpu,內(nèi)存,等多為資源以及環(huán)境變量,啟動(dòng)命令等任務(wù)運(yùn)行相關(guān)的信息。
25、離線計(jì)算框架,MapReduce:
1、將計(jì)算過(guò)程分為兩個(gè)階段,Map階段和Reduce階段:
map階段并行處理輸入數(shù)據(jù)。
reduce階段對(duì)map結(jié)果進(jìn)行匯總。
2、Shuffle連接Map和Reduce兩個(gè)階段:
Map Task將數(shù)據(jù)寫到本地磁盤。
Reduce Task從每個(gè)Map Task上讀取一份數(shù)據(jù)。
3、僅僅適合離線批處理:
具有很好的容錯(cuò)性和擴(kuò)展性。
適合簡(jiǎn)單的批處理任務(wù)。
4、缺點(diǎn)明顯:啟動(dòng)開(kāi)銷大,過(guò)多使用磁盤導(dǎo)致效率低下等等
26、數(shù)據(jù)損壞(corruption)處理:
1、當(dāng)DataNode讀取block的時(shí)候,它會(huì)計(jì)算checksum。
2、如果計(jì)算后的checksum,與block創(chuàng)建時(shí)值不一樣,說(shuō)明該block已經(jīng)損壞。
3、Client讀取其他DN上的block。
4、NameNode標(biāo)記該塊已經(jīng)損壞,然后復(fù)制block達(dá)到預(yù)期設(shè)計(jì)的文件備份數(shù)。
5、DataNode在其他文件創(chuàng)建后三周驗(yàn)證其checksum
待續(xù)......
總結(jié)
以上是生活随笔為你收集整理的namenode和datanode工作机制_Hadoop的namenode的管理机制,工作机制和datanode的工作原理...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: redis 2m数据读取_Flink读写
- 下一篇: ad13批量安装元件库_ad16如何批量