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