第12章 第1節 Hadoop

● 請你說一下分佈式和集羣的概念。

參考回答:

分佈式:是指將不同的業務分佈在不同的地方,集羣:是指將幾臺服務器集中在一起,實現同一業務。分佈式中的每一個節點,都可以做集羣,而集羣並不一定就是分佈式的。集羣有組織性,一臺服務器垮了,其它的服務器可以頂上來,而分佈式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。

● Hadoop你也有了解的,那你有了解他的備份機制吧?請問怎麼做到數據保持一致?

參考回答:

Hadoop備份機制:該方案利用Hadoop自身的Failover措施(通過配置dfs.name.dir),NameNode可以將元數據信息保存到多個目錄。通常的做法,選擇一個本地目錄、一個遠程目錄(通過NFS進行共享),當NameNode發生故障時,可以啓動備用機器的NameNode,加載遠程目錄中的元數據信息,提供服務。Hadoop中有個重要的工具就是HDFS分佈式文件系統,那麼在這種分佈式環境下的數據一致性是如何保證呢?HDFS中,存儲的文件將會被分成若干的大小一致的block(最後一個block的大小可能較小)分佈式地存儲在不同的機器上,那麼就必須有一個角色來對這些數據進行管理,也就是NameNode節點,而存儲這些block的結點我們稱爲DataNode,NameNode是用來管理這些元數據的。下面講一個例子,在客戶端上傳文件時,NameNode如何保證數據的一直性。客戶端上傳文件時,NameNode首先往edits log文件中記錄元數據的操作日誌。與此同時,NameNode將會在磁盤做一份持久化處理(fsimage文件):他跟內存中的數據是對應的,如何保證和內存中的數據的一致性呢?在edits logs滿之前對內存和fsimage的數據做同步(實際上只需要合併edits logs和fsimage上的數據即可,然後edits logs上的數據即可清除) 而當edits logs滿之後,文件的上傳不能中斷,所以將會往一個新的文件edits.new上寫數據,而老的edits logs的合併操作將由secondNameNode來完成,即所謂的checkpoint操作。那麼什麼時候checkpoint呢?一般由兩種限制,一個是edits logs的大小限制,即fs.checkpoint.size配置,一個是指定時間,即fs.checkpoint.period配置 當然根據規定,大小的限制是優先的,規定edits文件一旦超過閾值,則不管是否達到最大時間間隔,都會強制checkpoint。

圖片


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章