1. 程式人生 > >hadoop主節點(NameNode)備份策略以、恢復方法、操作步驟

hadoop主節點(NameNode)備份策略以、恢復方法、操作步驟

一、dits和fsimage 

    首先要提到兩個檔案edits和fsimage,下面來說說他們是做什麼的。

  • 叢集中的名稱節點(NameNode)會把檔案系統的變化以追加儲存到日誌檔案edits中。
  • 當名稱節點(NameNode)啟動時,會從映象檔案 fsimage 中讀取HDFS的狀態,並且把edits檔案中記錄的操作應用到fsimage,也就是合併到fsimage中去。合併後更新fsimage的HDFS狀態,建立一個新的edits檔案來記錄檔案系統的變化

    那麼問題來了,只有在名稱節點(NameNode)啟動的時候才會合併fsimage和edits,那麼久而久之edits檔案會越來越大,特別是大型繁忙的HDFS叢集。這種情況下,由於某種原因你要重啟名稱節點(NameNode),那麼會花費很長的時間去合併fsimge和edits,然後HDFS才能執行。


二、Secondary NameNode 

    目前使用的版本hadoop-0.20.2可以使用Secondary NameNode來解決上面的問題。Secondary NameNode定期合併fsimage和edits日誌,把edits日誌檔案大小控制在一個限度下。因為記憶體需求和NameNode差不多(On the same order),所以Sencondary NameNode通常要執行在另外個機器上。

    secondary NameNode配置在conf/masters檔案,啟動命令:bin/start-dfs.sh(如果你使用不建議的start-all.sh也是會啟動的)。


三、什麼時候checkpiont

 

secondary NameNode 什麼時候執行checkpoint來合併fsimage和eidts。呢?有兩個配置引數控制:

  • fs.checkpoint.period 指定兩次checkpoint的最大時間間隔,預設3600秒。
  • fs.checkpoint.size    規定edits檔案的最大值,一旦超過這個值則強制checkpoint,不管是否到達最大時間間隔。預設大小是64M。

     secondary NameNode 儲存最後一次checkpoint的結果,儲存結構和主節點(NameNode)的一樣,所以主節點(NameNode)可以隨時來讀取。


    如果你沒有啟動secondary NameNode 那麼可以試試 bin/hadoop secondarynamenode -checkpoint 甚至 bin/hadoop secondarynamenode -checkpoint force. 看看生成的檔案。

    checkpoint可以解決重啟NameNode時間過長的弊端。另外還有偏方:


四、Import Checkpoint(恢復資料) 

    如果主節點掛掉了,硬碟資料需要時間恢復或者不能恢復了,現在又想立刻恢復HDFS,這個時候就可以import checkpoint。步驟如下:

  • 拿一臺和原來機器一樣的機器,包括配置和檔案,一般來說最快的是拿你節點機器中的一臺,立馬能用(部分配置要改成NameNode的配置)
  • 建立一個空的資料夾,該資料夾就是配置檔案中dfs.name.dir所指向的資料夾。
  • 拷貝你的secondary NameNode checkpoint出來的檔案,到某個資料夾,該資料夾為fs.checkpoint.dir指向的資料夾
  • 執行命令bin/hadoop namenode -importCheckpoint

     這樣NameNode會讀取checkpoint檔案,儲存到dfs.name.dir。但是如果你的dfs.name.dir包含合法的fsimage,是會執行失敗的。因為NameNode會檢查fs.checkpoint.dir目錄下映象的一致性,但是不會去改動它。 

    值得推薦的是,你要注意備份你的dfs.name.dir和 ${hadoop.tmp.dir}/dfs/namesecondary。


五、Checkpoint Node 和 Backup Node 


在後續版本中hadoop-0.21.0,還提供了另外的方法來做checkpoint:Checkpoint Node 和 Backup Node。則兩種方式要比secondary NameNode好很多。所以 The Secondary NameNode has been deprecated. Instead, consider using the Checkpoint Node or Backup Node.

Checkpoint Node像是secondary NameNode的改進替代版,Backup Node提供更大的便利,這裡就不再介紹了。

上面是理論,下面的具體操作。

1.修改conf/core-site.xml

增加

複製程式碼
<property> 
<name>fs.checkpoint.period</name> 
<value>3600</value> 
<description>The number of seconds between two periodic checkpoints. </description> 
</property> 
<property> 
<name>fs.checkpoint.size</name> 
<value>67108864</value> 
<description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired. </description> 
</property> 

<property> 
<name>fs.checkpoint.dir</name> 
<value>/data/work/hdfs/namesecondary</value> 
<description>Determines where on the local filesystem the DFS secondary name node should store the temporary images to merge. If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy. </description> 
</property>
複製程式碼

fs.checkpoint.period表示多長時間記錄一次hdfs的映象。預設是1小時。 
fs.checkpoint.size表示一次記錄多大的size,預設64M

2.修改conf/hdfs-site.xml

增加

<property> 
<name>dfs.http.address</name> 
<value>master:50070</value> 
<description> The address and the base port where the dfs namenode web ui will listen on. If the port is 0 then the server will start on a free port. </description> 
</property>

0.0.0.0改為namenode的IP地址

3.重啟hadoop,然後檢查是否啟動是否成功

登入secondarynamenode所在的機器,輸入jps檢視secondarynamenode程序 
進入secondarynamenode的目錄/data/work/hdfs/namesecondary 
正確的結果: 
如果沒有,請耐心等待,只有到了設定的checkpoint的時間或者大小,才會生成。

4.恢復

製造namenode宕機的情況 
1) kill 掉namenode的程序

[[email protected] name]# jps 
11749 NameNode 
12339 Jps 
11905 JobTracker 
[[email protected] name]# kill 11749

2)刪除dfs.name.dir所指向的資料夾,這裡是/data/work/hdfs/name

[[email protected] name]# rm -rf *

刪除name目錄下的所有內容,但是必須保證name這個目錄是存在的

3)從secondarynamenode遠端拷貝namesecondary檔案到namenode的namesecondary

[[email protected] hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./

4)啟動namenode

[[email protected] /data]# hadoop namenode –importCheckpoint

正常啟動以後,螢幕上會顯示很多log,這個時候namenode就可以正常訪問了

5)檢查

使用hadoop fsck /user命令檢查檔案Block的完整性

hadoop fsck /

6)停止namenode,使用crrl+C或者會話結束

7)刪除namesecondary目錄下的檔案(儲存乾淨) 

[[email protected] namesecondary]# rm -rf *


8)正式啟動namenode

[[email protected] bin]# ./hadoop-daemon.sh start namenode

恢復工作完成,檢查hdfs的資料

9)balancer

在使用start-balancer.sh時, 
預設使用1M/S(1048576)的速度移動資料(so slowly...) 
修改hdfs-site.xml配置,這裡我們使用的是20m/S

<property> 
<name>dfs.balance.bandwidthPerSec</name> 
<value>20971520</value> 
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> 
</property>

然後結果是導致job執行變得不穩定,出現一些意外的長map單元,某些reduce時間處理變長(整個叢集負載滿滿的情況下,外加20m/s的balance),據說淘寶的為10m/s,需要調整後實驗,看看情況如何。


hadoop balancer -threshold 5


相關推薦

hadoop節點NameNode備份策略恢復方法操作步驟

一、dits和fsimage      首先要提到兩個檔案edits和fsimage,下面來說說他們是做什麼的。 叢集中的名稱節點(NameNode)會把檔案系統的變化以追加儲存到日誌檔案edits中。當名稱節點(NameNode)啟動時,會從映象檔案 fsimage 中

C++小知識——Eigen庫的基本使用方法PCL計算協方差矩陣

轉載自:https://blog.csdn.net/r1254/article/details/47418871 以及https://blog.csdn.net/wokaowokaowokao12345/article/details/53397488 第一部分:

hadoop啟動過程 NameNode

  一、第一次啟動   NameNode 記憶體 本地磁碟 fsimage edits 格式化HDFS,目的是審查隔行fsimage

搭建多個節點hadoop叢集環境CDH

提示:如果還不瞭解Hadoop的,可以下檢視這篇文章Hadoop生態系統,通過這篇文章,我們可以首先大致瞭解Hadoop及Hadoop的生態系統中的工具的使用場景。 搭建一個分散式的hadoop叢集環境,下面是詳細步驟,使用cdh5 。 一、硬體準備

HDFS環境搭建節點配置 hadoop叢集搭建hdfs

【參考文章】:hadoop叢集搭建(hdfs) 1. Hadoop下載   官網下載地址:   https://hadoop.apache.org/releases.html,進入官網根據自己需要下載具體的安裝包   清華大學安裝包的映象檔案下載地址:   https://mirrors.tuna.

Hadoop學習筆記設定單節點叢集

本文描述如何設定一個單一節點的 Hadoop安裝,以便您可以快速執行簡單的操作,使用HadoopMapReduce和Hadoop分散式檔案系統(HDFS)。Hadoop版本:Apache Hadoop 2.5.1系統版本:CentOS 6.5,核心(uname -r):2.6

【故障】Hadoop Cluster啟動後資料節點DataNode程序狀態丟失

Hadoop Cluster啟動後資料節點(DataNode)程序狀態丟失 在擁有三個節點的Hadoop叢集環境中,其各節點的配置為:CPU Intel(R) Core(TM) i3-3120M [email protected] 2.50GHz,記憶體RAM 6GB,Operation Sys

Hadoop自學筆記常見Hadoop相關項目一覽

-a https class Lucene 百萬 data fcm you 轉換 本自學筆記來自於Yutube上的視頻Hadoop系列。網址: https://www.youtube.com/watch?v=-TaAVaAwZTs(當中一個) 以後不再贅述 自學筆

elasticsearch系列備份

indices stat 必須 tor 信息 操作 accepted gui 配置 快照備份 1.創建文件倉庫 1.1 在$ELASTICSEARCH_HOME/config/elasticsearch.yaml中增加配置 #這個路徑elasticsearch必須有權限訪問

Hadoop 新生報道 hadoop基礎概念

端口查看 復制 客戶 根目錄 路徑 提高 strong 端口 hadoop1.x   一.NameNode,SeconderyNamenode,DataNode   NameNode,DataNode,SeconderyNamenode都是進程,運行在節點上。   1.

Hadoop框架基礎

jar cluster 安裝 ado 站點 put 文檔 編號 集群管理 ** Hadoop框架基礎(五) 已經部署了Hadoop的完全分布式集群,我們知道NameNode節點的正常運行對於整個HDFS系統來說非常重要,如果NameNode宕掉了,那麽整個HDFS就要整

Hadoop 框架基礎

釋放 top gem orien 系統啟動 -s blog 希望 記錄 ** Hadoop 框架基礎(四) 上一節雖然大概了解了一下 mapreduce,徒手抓了海膽,不對,徒手寫了 mapreduce 代碼,也運行了出來。但是沒有做更深入的理解和探討。 那麽…… 本節

hadoop核心組件

poi 不可 組件 為我 med 批處理 數據庫 true 讀取   hadoop的核心組件:hdfs(分布式文件系統)、mapreduce(分布式計算框架)、Hive(基於hadoop的數據倉庫)、HBase(分布式列存數據庫)、Zookeeper(分布式協作服務)、S

ORACLE數據庫遞歸查詢當前節點的父節點和子節點tree

oracle 遞歸 ORACLE 數據庫遞歸查詢當前數據的所有孩子數據(不包含自己)SELECT id AS id, parent_id AS parentId, parent_id AS parent, name AS text FROM mdm_center STAR

在CentOS上安裝Hadoop集群-- Centos系統配置

修改 AD vi命令 分享圖片 命令 wall eth0 host log 在CentOS上安裝Hadoop集群(一) 1、 Centos的系統配置 1.1打開終端方式: 方式1:在桌面單擊右鍵,>>Open in terminal 方式2:Appl

Hadoop安裝雜記1

hadoop 安裝 偽分布式模型 基礎一、Hadoop基礎 1、偽分布式模型(單節點) 1.1 配置centos7默認JDK1.7的環境變量 [root@master1 ~]# vim /etc/profile.d/java.sh i export JAVA_HOME=/usr [root@master1

Hadoop安裝雜記2

hadoop 安裝 分布式模型 基礎一、分布式模型 1、環境準備 準備4個節點,master1為主控節點(NameNode、SecondaryNameNode、ResourceManager),master2-4作為數據節點(DataNode、NodeManager)。並做好ntp時間同步 1.1 每個節點配

hadoop學習筆記

存儲 實時 管理層 核心 架構圖 數據服務 pre oop nod 一、hadoop的概念 二、hadoop的發展歷史 三、hadoop1.x的生態系統 HBase:實時分布式數據庫   相當於關系型數據庫,數據放在文件中,文件就放在HDFS中。因此HBase是

hadoop學習筆記:Java HDFS API

on() apr name pin package 目錄 except 讀取 play 一、使用HDFS FileSystem詳解 HDFS依賴的第三方包:   hadoop 1.x版本:   commons-configuration-1.6.jar   comm

Greeplum 系列 備份恢復

移除 cat eat 適合 主機 pdb SQ 簡單 mail Greeplum 系列(六) 備份與恢復 一、備份 1.1 並行備份(gp_dump) GP 同時備份 Master 和所有活動的 Segment 實例,備份消耗的時間與系統中實例的數量沒有關系。在 Maste