8 hadoop學習筆記02

2021-10-10 22:38:27 字數 4431 閱讀 4894

一、hdfs架構:主從結構

1、namenode : nn 名稱節點

a、檔案的名稱

b、檔案的目錄結構

c、檔案的屬性 許可權 副本數 建立時間

d、乙個檔案被對於切割哪些資料塊(包含副本數的塊)=》對應分布在哪些datanode blockmap塊對映 nn是不會持久這種對映關係的。是通過集群的啟動和執行,dn定期匯報blockreport給nn,然後在記憶體中動態維護這種對映關係。

作用:管理檔案系統的命名空間,維護檔案系統樹的檔案和資料夾

映象檔案 fisimage

編輯日誌檔案 editlogs

-rw-rw-r-- 1 hadoop hadoop      42 nov 25 19:04 edits_0000000000000000511-0000000000000000512

-rw-rw-r-- 1 hadoop hadoop 42 nov 25 20:04 edits_0000000000000000513-0000000000000000514

-rw-rw-r-- 1 hadoop hadoop 42 nov 25 21:04 edits_0000000000000000515-0000000000000000516

-rw-rw-r-- 1 hadoop hadoop 1048576 nov 25 21:04 edits_inprogress_0000000000000000517

-rw-rw-r-- 1 hadoop hadoop 4230 nov 25 20:04 fsimage_0000000000000000514

-rw-rw-r-- 1 hadoop hadoop 62 nov 25 20:04 fsimage_0000000000000000514.md5

-rw-rw-r-- 1 hadoop hadoop 4230 nov 25 21:04 fsimage_0000000000000000516

-rw-rw-r-- 1 hadoop hadoop 62 nov 25 21:04 fsimage_0000000000000000516.md5

2、secondary namenode :snn 第二名稱節點

a、fsimage editlog 檔案拿過來合併 備份 推送給nn

-rw-rw-r-- 1 hadoop hadoop      42 nov 25 19:04 edits_0000000000000000511-0000000000000000512

-rw-rw-r-- 1 hadoop hadoop 42 nov 25 20:04 edits_0000000000000000513-0000000000000000514

-rw-rw-r-- 1 hadoop hadoop 42 nov 25 21:04 edits_0000000000000000515-0000000000000000516

-rw-rw-r-- 1 hadoop hadoop 4230 nov 25 20:04 fsimage_0000000000000000514

-rw-rw-r-- 1 hadoop hadoop 62 nov 25 20:04 fsimage_0000000000000000514.md5

-rw-rw-r-- 1 hadoop hadoop 4230 nov 25 21:04 fsimage_0000000000000000516

-rw-rw-r-- 1 hadoop hadoop 62 nov 25 21:04 fsimage_0000000000000000516.md5

-rw-rw-r-- 1 hadoop hadoop 200 nov 25 21:04 version

將namenode的fsimage_0000000000000000514

edits_0000000000000000515-0000000000000000516 ==》檢測點動作 checkpoint

合併 fsimage_0000000000000000516 將516推送給nn

而新的讀寫記錄則在 edits_inprogress_0000000000000000517編輯日誌裡

dfs.namenode.checkpoint.period

--兩次檢查點建立之間的固定時間間隔,預設3600,即1小時。所以去ann snn 看到的fsimage 相隔1個小時。

dfs.namenode.checkpoint.txns

--standby namenode 檢查的事務數量。若檢查事務數達到這個值,也觸發一次checkpoint,1,000,000。

以上兩個引數都是觸發snn checkpoint 的條件

dfs.namenode.checkpoint.check.period

--standby namenode檢查是否滿足建立checkpoint的條件的檢查週期。預設60,即每1min檢查一次。

dfs.namenode.num.checkpoints.retained

--在namenode上儲存的fsimage的數目,超出的會被刪除。預設儲存2個。

dfs.namenode.num.checkpoints.retained

--最多能儲存的edits檔案個數,預設為1,000,000. 為防止standby namenode宕機導致edits檔案堆積的情況,設定的限制。

dfs.ha.tail-edits.period

--standby namenode每隔多長時間去檢測新的edits檔案。只檢測完成了的edits, 不檢測inprogress的檔案。default:60s

早期為了解決nn是單點的,單點故障,增加乙個snn,1小時的checkpoint

雖然能夠減輕單點故障的帶來的資料丟失風險,但是生產上不允許使用snn

3、datanode:資料節點 dn

a、儲存資料塊 和資料塊的效驗

b、每隔一定世界去傳送blockreport

dfs.blockreport.intervalmsec          21600000=6h

dfs.datanode.directoryscan.interval 21600=6h

c、塊丟失案例

二、hdfs理論

1、讀寫流程

(1)hdfs client呼叫filesystem.create(filepath)方法,去和nn進行【rpc】通訊。nn會去check這個檔案是否存在,是否有許可權建立這個檔案。

假如都可以,就建立乙個新的檔案,但是這時沒有資料,是不關聯任何block的。nn根據檔案的大小,根據塊大小 副本數,計算要上傳多少的塊和對應哪些dn節點上。最終這個資訊返回給客戶端【fsdataoutputstream】物件。

(2)client 呼叫客戶端【fsdataoutputstream】物件的write方法,

根據【副本放置策略】,將第乙個塊的第乙個副本寫到dn1,寫完複製到dn2,寫完再複製到dn3.當第三個副本寫完,就返回乙個ack package確認包給dn2,dn2接收到ack 加上自己寫完,傳送ack給dn1,dn1接收到ack加上自己寫完,就傳送ack給客戶端【fsdataoutputstream】物件,告訴它第乙個塊三副本寫完了。

以此類推。

(3)當所有的塊全部寫完,client呼叫【fsdataoutputstream】物件的close方法,關閉輸出流。再次呼叫filesystem.complete方法 ,告訴nn檔案寫成功。

2、hdfs讀流程

(1)client呼叫filesystem的open(filepath),與nn進行【rpc】通訊,返回該檔案的部分或者全部的block列表,也就是返回【fsdataintputstream】物件

(2)client排程【fsdataintputstream】物件的read方法,與第乙個塊的最近的dn的進行讀取,讀取完成後,會check,假如ok就關閉與dn通訊。

假如不ok,就會記錄塊+dn的資訊,下次就不從這個節點讀取。那麼從第二個節點讀取。然後與第二個塊的最近的dn的進行讀取,以此類推。

假如當block的列表全部讀取完成,檔案還沒結束,就呼叫filesystem從nn獲取下一批次的block列表。

(3)client呼叫【fsdataintputstream】物件的close方法,關閉輸入流。

3.副本放置策略 不光光面試需要,生產也需要

生產上讀寫操作 盡量選擇dn節點操作

第乙個副本:

放置在上傳的dn節點上,就近原則,節省io

假如非dn節點,就隨機挑選乙個磁碟不太慢,cpu不太忙的節點。

第二個副本:

放置在第乙個副本的不同機架上的某個節點

第三個副本:

與第二個副本放置同乙個機架的不同節點上。

如果副本數設定更多,隨機放。

(8)hadoop學習 內部表和外部表

hive預設建表方式就是建立內部表。建外部表語句 create external table table exter id int,name string,age int,tel string row format delimited fields terminated by stored as t...

Hadoop學習筆記 8

倒排索引是文件檢索系統中最常用資料結構。根據單詞反過來查在文件中出現的頻率,而不是根據文件來,所以稱倒排索引 inverted index 結構如下 這張索引表中,每個單詞都對應著一系列的出現該單詞的文件,權表示該單詞在該文件中出現的次數。現在我們假定輸入的是以下的檔案清單 t1 hello wor...

Hadoop學習 02Hadoop執行環境搭建

新建虛擬機器 修改虛擬機器的靜態ip 修改主機名 關閉防火牆 systemctl stop firewalld.service 停止firewall systemctl disable firewalld.service 禁止firewall開機啟動建立hadoop 可自定義名字 使用者 usera...