hadoop SecondNamenode

一、定義

* The Secondary Namenode is a helper to the primary Namenode.
* The Secondary is responsible for supporting periodic checkpoints
* of the HDFS metadata. The current design allows only one Secondary
* Namenode per HDFs cluster.
* The Secondary Namenode is a daemon that periodically wakes
* up (determined by the schedule specified in the configuration),
* triggers a periodic checkpoint and then goes back to sleep.
* The Secondary Namenode uses the ClientProtocol to talk to the
* primary Namenode.


SecondNamenode是對主Namenode的一個補充,它會周期的執行對HDFS元數據的檢查點。
當前的設計僅僅允許每個HDFS只有單個SecondNamenode結點。
SecondNamenode是有一個后臺的進程,會定期的被喚醒(喚醒的周期依賴相關配置)執行檢查點任務,然后繼續休眠。
它使用ClientProtocol協議與主Namenode通信。


二、工作內容時序圖




* 如果NameNode崩潰并且硬盤損壞,可以從SecondaryNameNode拷貝fsimage文件,但是SecondaryNameNode最后一次合并之后的更新操作將會丟失。


三、工作內容解釋

1,檢查點到底是做什么用的呢?

先拋開SecondNamenode不說,先介紹下Namenode中與檢查點相關的兩個文件,以及他們之間的關系。
fsimage文件與edits文件是Namenode結點上的核心文件。
Namenode中僅僅存儲目錄樹信息,而關于BLOCK的位置信息則是從各個Datanode上傳到Namenode上的。
Namenode的目錄樹信息就是物理的存儲在fsimage這個文件中的,當Namenode啟動的時候會首先讀取fsimage這個文件,將目錄樹信息裝載到內存中。
而edits存儲的是日志信息,在Namenode啟動后所有對目錄結構的增加,刪除,修改等操作都會記錄到edits文件中,并不會同步的記錄在fsimage中。
而當Namenode結點關閉的時候,也不會將fsimage與edits文件進行合并,這個合并的過程實際上是發生在Namenode啟動的過程中。
也就是說,當Namenode啟動的時候,首先裝載fsimage文件,然后在應用edits文件,最后還會將最新的目錄樹信息更新到新的fsimage文件中,然后啟用新的edits文件。
整個流程是沒有問題的,但是有個小瑕疵,就是如果Namenode在啟動后發生的改變過多,會導致edits文件變得非常大,大得程度與Namenode的更新頻率有關系。
那么在下一次Namenode啟動的過程中,讀取了fsimage文件后,會應用這個無比大的edits文件,導致啟動時間變長,并且不可能控,可能需要啟動幾個小時也說不定。


Namenode的edits文件過大的問題,也就是SecondeNamenode要解決的主要問題。
SecondNamenode會按照一定規則被喚醒,然后進行fsimage文件與edits文件的合并,防止edits文件過大,導致Namenode啟動時間過長。


2,檢查點被喚醒的條件?

以前的文章里面曾經寫過相關內容,這里在回顧一下。
控制檢查點的參數有兩個,分別是:
fs.checkpoint.period:單位秒,默認值3600,檢查點的間隔時間,當距離上次檢查點執行超過該時間后啟動檢查點
fs.checkpoint.size:單位字節,默認值67108864,當edits文件超過該大小后,啟動檢查點
上面兩個條件是或的關系,主要滿足啟動一個條件,檢查點即被喚醒

3,檢查點執行的過程?

a,初始化檢查點
b,通知Namenode啟用新的edits文件
c,從Namenode下載fsimage和edits文件
d,調用loadFSImage裝載fsimage
e,調用loadFSEdits應用edits日志
f,保存合并后的目錄樹信息到新的image文件中
g,將新產生的image上傳到Namenode中,替換原來的image文件
h,結束檢查點

4,SecondNamenode最好于Namenode部署到不同的服務器

應該在merge的過程中,SecondNamenode對內存的需求與Namenode是相同的,所以對于那些大型的生產系統中,如果將兩者部署到同臺服務器上,在內存上會出現瓶頸。
所以最好將他們分別部署到不同的服務器。
修改hadoop配置文件的master文件。

5,關于SecondNamenode的思考

其實檢查點的執行過程最好在Namenode結點搞定,也就說能有個任務定期的將Namenode的內存結果刷新到fsimage中,而不是僅僅在Namenode啟動的時候才進行一次合并。
如果可以實現定期的對Namenode執行檢查點,那么SecondNamenode完全沒有存在的必要了。
或者在SecondNamenode方面實現增量的刷新,每次不需要將fsimage整個裝載到內存中,而僅僅將增量刷新就OK了。
不過這樣會讓系統變得復雜一些,可以參考oracle中的檢查點的處理,還是有些復雜的。
簡單就是美?!!

?FYI:在masters文件中配置second namenode后,日志報java.net.BindException: Cannot assign requested address異常,而且second namenode啟動失敗,反復測試發現是hdfs-site.xml中的dfs.secondary.http.address沒有更改IP,更改成masters中配置的IP后集群啟動正常。

? dfs.secondary.http.address
? second_namenode:50090
??
? ? The secondary namenode http server address and port.
? ? If the port is 0 then the server will start on a free port.


四、CheckPoint Node


可能是由于Secondary NameNode這個名字給人帶來的混淆,Hadoop后面的版本(1.0.4 )建議不要使用Secondary NameNode,而使用CheckPoint Node。

Checkpoint Node和Secondary NameNode的作用以及配置完全相同,只是啟動命令不同 bin/hdfs namenode -checkpoint

五、Backup Node


Secondary NameNode和CheckPoint Node都只是提供一個fsimage更新和檢查點備份,并不提供NameNode 服務,當NameNode宕機的時候就會引起HDFS集群不可用。
Backup Node提供一個真正意義上的備用節點,NameNode所有寫操作都會實時將更新Log(edits文件數據)發送給Backup Node,Backup Node據此更新本機fsimage和edits文件,并在內存中維護和NameNode 一樣的Matadata數據。




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539665.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539665.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tensorflow Python API 翻譯(sparse_ops)

作者:chen_h 微信號 & QQ:862251340 微信公眾號:coderpai 我的博客:請點擊這里計劃現將 tensorflow 中的 Python API 做一個學習,這樣方便以后的學習。 原文鏈接該章介紹有關稀疏張量的API稀疏張量表示對于多維稀疏…

高性能mysql 小查詢_高性能MySql進化論(十一):常見查詢語句的優化

總結一下常見查詢語句的優化方式1 COUNT1. COUNT的作用 COUNT(table.filed)統計的該字段非空值的記錄行數 COUNT(*)或者是COUNT(not nullable field) 統計的是全表的行數如果要是統計全表記錄數,COUNT(*)效率會比COUNT(not nullable fie…

ORA-01861: 文字與格式字符串不匹配

select to_date(20160401000000,yyyy-mm-dd) from dual; ---------- 報錯:ORA-01861: 文字與格式字符串不匹配 原因:字符串20160401000000與要轉換的格式 yyyy-mm-dd 格式不對。 20160401000000 是 yyyymmddhh24miss 格式的 -------- select to_da…

首席架構師徐海峰眼中的架構和出色的架構師

CSDN架構領域編輯采訪了一些與會講師,談談他們將在會上分享的內容、相關技術和程序人生,帶你領略講師風采。 本期我們采訪的講師是來自閱文集團首席架構師徐海峰,主要負責內容中心的網站架構和分布式存儲、分布式計算工作。10年互聯網開發經驗…

java socket建立長連接_Java Web項目中使用Socket通信多線程、長連接的方法

很多時候在javaweb項目中我們需要用到Socket通信來實現功能,在web中使用Socket我們需要建立一個監聽程序,在程序啟動時,啟動socket監聽。我們的應用場景是在java項目中,需要外接如一個硬件設備,通過tcp通信&#xff0c…

hadoop-eclipse-plugin使用

下載hadoop安裝包:http://www.carfab.com/apachesoftware/hadoop/common/hadoop-1.0.2/ 但是沒有plugin,我到這個地方下載的:http://ishare.iask.sina.com.cn/f/23642243.html?fromlikecopy到你的eclipse_home的plugins下面。配置map/reduce…

hadoop eclipse plugin windows下載集合

收集了hadoop穩定版本的eclipse plugin for windows。資源分一律為0分 hadoop-eclipse-plugin-1.2.1.jar http://download.csdn.net/detail/zengmingen/9488180 hadoop-eclipse-plugin-2.2.0.jar http://download.csdn.net/detail/zengmingen/9488182 hadoop-eclipse-pl…

java 記事本界面_JAVA/GUI程序之記事本

自上半年JAVA課程結束后,再也沒有看過JAVA了,最近不是很忙,又簡單的看了看,本博客純屬記錄學習過程,請大神們別笑,其中錯誤是難免的,畢竟是新手寫的博客。下面就進入我們的正題吧,復…

104. Maximum Depth of Binary Tree

104. Maximum Depth of Binary Tree 題目 Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 解析 // Maximum Depth of Binary Tree class Solution { publ…

mapper-reducer word count 實例

統計一個文件里各單詞的個數,假設這個文件很大。 原理如下圖: 編寫代碼: WCMapper.java package zengmg.hadoop.mr.wordcount;import java.io.IOException;import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; …

java 遠程調用url_使用Java的URL/HttpURLConnection進行遠程調用(POST請求)

利用Java的HttpURLConnection進行遠程url請求(調用遠程接口)測試類:請求類型為json,以post方式請求,利用OutputStream寫入數據實體類:public class User implementsSerializable {privateString name;privateString password;publicString ge…

LindDotNetCore~職責鏈模式的應用

回到目錄 職責鏈模式 它是一種設計模塊,主要將操作流程與具體操作解耦,讓每個操作都可以設置自己的操作流程,這對于工作流應用是一個不錯的選擇! 下面是官方標準的定義:責任鏈模式是一種設計模式。在責任鏈模式里&…

MR程序的幾種提交運行模式

MR程序的幾種提交運行模式 本地模型運行 1/在windows的eclipse里面直接運行main方法,就會將job提交給本地執行器localjobrunner執行 ----配置path:D:\hadoop-2.7.2\bin ----配置hadoop_home:D:\hadoop-2.7.2 ----復制 hadoop.dll和winutil…

構件之法讀書筆記04

我們前兩周我們團隊一起制作了一個大學生記賬軟件,但是我們沒有對我們的軟件進行測試,只要是這個功能能夠順利進行,我們就覺得OK。 其實,我認為我們的軟件是有問題的,對于一些極限的操作能否完成,在各種環境…

零點起飛學java視頻_零點起飛學java (劉升華) 高清PDF_IT教程網

資源名稱:零點起飛學java (劉升華) 高清PDF第1篇 java開發基礎第1章 java概述( 教學視頻:37分鐘) 2第2章 基本數據類型及運算( 教學視頻:52分鐘) 14第3章 java程序流程控制( 教學視頻:33分鐘) 36第4章 類與對…

【Spark】開發Spark選擇Java還是Scala?

Spark-Java-Scala-哪種語言 spark java 支持_百度搜索(1 封私信)Spark 中用 Scala 和 java 開發有什么區別? - 知乎(1 封私信)Spark平臺下,scala比java更有優勢么? - 知乎

vector 修改 java_java對vector動態數組中的對象排序,以下代碼有何問題,如何修改?...

展開全部package com.tx.collection;import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.TreeSet;import java.util.Vector;public class Student {String name;int score;public S…

hadoop的序列化與java的序列化區別

java的序列化機制 java序列化時會把具體類的數據和類的繼承結構信息都序列化傳遞。如下圖hadoop的序列化機制 序列化類的數據,但是不序列化類的繼承結構信息。 網絡傳遞的時候就少了很多流量,hadoop也不需要類的繼承關系,只要類的數據就夠…

java mail 已發送_JavaMail獲取已發送郵件

public static voidmain(String args[]) {Properties props new Properties(); //參數配置props.setProperty("mail.transport.protocol", "smtp"); //使用的協議(JavaMail規范要求)props.setProperty("mail.smtp.host", "smtp.exmail.qq.c…

ORA-08103: object no longer exists

今天工具箱報錯: ORA-08103: object no longer exists 查了原因,是有session在操作表,比如插入,更新等。而工具箱這個操作剛好在select表,所以報錯。-------下文是英文解釋----- ORA-08103: object no longer exists錯…