hadoop常見面試題

2021-12-30 04:43:30 字數 1907 閱讀 3755

namenode儲存內容

檔案系統的命名空間:

a、檔名稱;$/current/version

b、檔案目錄結構;/edits

c、檔案的屬性(許可權,建立時間、副本數);/fsimage

d、檔案對應哪些資料塊-->資料塊對應哪些datanode節點;/fstime

說明d:不會持久化儲存這個對映關係,是通過集群的啟動和執行時,datanode定期傳送blockreport給namenode。以此namenode在內存在動態維護這種對映關係。

namenode作用管理檔案系統的命名空間。它維護著檔案系統樹及整棵樹內所有的檔案和目錄。這些資訊以兩個檔案形式永久儲存在本地磁碟上:命名空間映象檔案fsimage和編輯日誌檔案editlog。datanode儲存資料塊和資料塊校驗和

說明:與namenode通訊:

a、每隔3秒傳送乙個心跳包

b、每十次心跳傳送以此blockreport

datanode作用讀寫檔案的額資料塊(主要)scondary namenode儲存:命名空間映象檔案fsimage和編輯日誌editlog

作用:定期合併fsimage+editlog檔案為新的fsimage,推送給nn,稱為檢查點,checkpoint。

引數:dfs.namenode.checkpoint.period: 3600 秒

檔案讀流程(fsdatainputstream)

1、client通過呼叫filesystem.open(filepath)方法,去與namenode進行rpc通訊,返回該檔案的部分或全部的block列表(包含該列表各block分布在datanode上的位址列表),也就是返回fsdatainputstream物件;

2、client呼叫fsdatainputstream的read()方法,

a.去與第乙個塊最近的datanode進行read,讀取完後,會check,假如successful,會關閉與當前datanode通訊。如果失敗,則會記錄失敗的塊+datanode資訊,下次就不會讀取;那麼會去該塊的第二個datanode位址讀取。 b.然後去第二個塊最近的datanode上進行讀取,check後關閉與此datanode的通訊。 c.假如block列表讀取完了,檔案還未結束,那麼filesystem會從namenode獲取下一批block的列表。(讀操作對於client端是透明的,是連續的資料流)

3、client呼叫fsdatainputstream.close()方法,關閉輸入流。

檔案寫流程(fsdataoutputstream)

1、client呼叫filesystem.create(filepath)方法,去與namenode進行rpc通訊,check該路徑的檔案是否存在以及有沒有許可權建立該檔案。假如條件成立,則建立乙個新檔案,但是不關聯任何的block,返回乙個fsdataoutputstream物件;否則返回錯誤資訊,寫**需要try-catch。 2、client呼叫fsdataoutputstream的write()方法,會將第乙個塊寫入第乙個datanode,第乙個塊寫完傳給第二個節點,第二個寫完傳給第三個節點。當第三個節點寫完返回乙個ack packet給第二個節點,第二個返回乙個ack packet給第乙個節點,第乙個節點返回ack packet給fsdataoutputstream物件,則標誌第乙個塊寫完,副本數為3;接著剩下的塊一次類似寫。(寫操作對client端透明) 3、當向檔案寫入資料完成後,client呼叫fsdataoutputstream.close()方法,關閉輸出流,flush快取區的資料報。 4、呼叫filesystem.complete()方法,告訴namenode節點寫入成功。

常見面試題

1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...

常見面試題

1 一行 實現1 100之和 lst i for i in range 1,101 print sum lst 2 如何在乙個函式內部修改全域性變數?在函式內部新增 global 變數名 這樣就可以在本地作用域定義全域性作用域了 name 大明 def eat name1 global name n...

常見面試題

dns解析 發起tcp三次握手,並建立tcp連線 發起http請求 伺服器相應http請求並得到html 伺服器解析html 並對頁面進行渲染然後返回給使用者 首先先進行ioc容器的初始化 ioc 容器的初始化過程分為三步驟 resource 定位 beandefinition 的載入和解析,bea...