Hadoop HDFS概念學習系列之HDFS升級和回滾機制(十二)

?

 不多說,直接上干貨!

?

?

HDFS升級和回滾機制

  作為一個大型的分布式系統,Hadoop內部實現了一套升級機制,當在一個集群上升級Hadoop時,像其他的軟件升級一樣,可能會有新的bug或一些會影響現有應用的非兼容性變更出現。在任何有實際意義的HDFS系統中,丟失數據是不允許的,更不用說重新搭建啟動HDFS了。當然,升級可能成功,也可能失敗。如果失敗了,那就用rollback進行回滾;如果過了一段時間,系統運行正常,那就可以通過finalize正式提交這次升級。

?

相關升級和回滾命令如下:

  bin/hadoop namenode一upgrade             //升級bin/hadoop namenode一rollback           //回滾bin/hadoop namenode一finalize           //提交bin/hadoop namenode一importCheckpoint    //從Checkpoint恢復

  上述命令的importCheckpoint參數用于NameNode發生故障后,從某個檢查點恢復。HDFS允許管理員退回到之前的Hadoop版木,將集群的狀態回滾到升級之前。

  在升級之前,管理員需要用以下命令刪除已存在的備份文件

 bin/hadoop dfsadmin-finalizeUpgrade          //升級終結操作

?

?

?

?

?

  下面簡單介紹一下一般的升級過程。
  在升級Hadoop軟件之前,檢查是否已經存在一個備份,如果備份存在,可執行升級終結操作刪除這個備份。通過以下命令能夠知道是否需要對一個集群執行升級終結操作:

 dfsadmin -upgradeProgress status

  1) 停止集群并部署Hadoop的新版本。
  2) 使用upgrade選項運行新的版本(bin/start-dfs.sh -upgrade)
  在大多數情況下,集群都能夠正常運行。一旦我們認為新的HDFS運行正常(也許經過幾天的操作之后),就可以對其執行升級終結操作。需要注意的是,在對一個集群執行升級終結操作之前,刪除那些升級前就已經存在的文件并不會真正地釋放DataNode上的磁盤空間。

?


  如果需要退回到老版本,執行步驟如下:
  1) 停止集群并部署Hadoop的老版本。

  2) 用回滾選項啟動集群,命令如下:
  bin/start-dfs.h ?-rolback
  上面介紹了HDFS的升級和回滾的基本機制,其實可以從狀態轉移的角度來理解理解HDFS的升級和回滾機制。整個HDFS的狀態有:Normal, Upgraded, Rollbacking, Upgrading,Finalizing五種,HDFS集群的狀態轉移示意圖,如下圖所示。

  從上圖可以看出,升級、回滾、提交都不可能一下完成,這也就是說,在HDFS系統出現故障時,集群可能處于上圖右側圖中某一個狀態中,特別是在分布式的各個節點上,甚至可能出現有些節點已經升級成功,但有些節點可能處干中間狀態的情況,所以Hadoop采用類似于數據庫事務的升級機制也就很容易理解了

?

?

?

?

?

?

?

?

歡迎大家,加入我的微信公眾號:大數據躺過的坑? ? ? ? 人工智能躺過的坑
?

同時,大家可以關注我的個人博客

???http://www.cnblogs.com/zlslch/???和? ???http://www.cnblogs.com/lchzls/? ????http://www.cnblogs.com/sunnyDream/? ?

???詳情請見:http://www.cnblogs.com/zlslch/p/7473861.html

?

  人生苦短,我愿分享。本公眾號將秉持活到老學到老學習無休止的交流分享開源精神,匯聚于互聯網和個人學習工作的精華干貨知識,一切來于互聯網,反饋回互聯網。
  目前研究領域:大數據、機器學習、深度學習、人工智能、數據挖掘、數據分析。 語言涉及:Java、Scala、Python、Shell、Linux等 。同時還涉及平常所使用的手機、電腦和互聯網上的使用技巧、問題和實用軟件。 只要你一直關注和呆在群里,每天必須有收獲

?

? ? ? 對應本平臺的討論和答疑QQ群:大數據和人工智能躺過的坑(總群)(161156071)?

?

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/zlslch/p/5081721.html

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

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

相關文章

TCP協議的特性

TCP協議的特性:建立連接:三次握手將數據打包成段:校驗和(CRC32)確認、重傳及超時排序:邏輯序號流量控制:滑動窗口算法擁塞控制:慢啟動和擁塞便面算法轉載于:https://blog.51cto.com/…

屬性動畫基礎之ValueAnimator

概述 屬性動畫是谷歌在android3.0(API level 11)時候給我們帶來了屬性動畫,真正意義上帶來了”動畫“,以前的幀動畫也就4中效果的組合(旋轉、淡入淡出、放大縮小、平移),而且只是表面的動畫&…

經驗之談:10位頂級PHP大師的開發原則

導讀:在Web開發世界里,PHP是最流行的語言之一,從PHP里,你能夠很容易的找到你所需的腳本,遺憾的是,很少人會去用“最佳做法”去寫一個PHP程序。這里,我們向大家介紹PHP的10種最佳實踐&#xff0c…

#Pragma Pack(n)與內存分配 pragma pack(push,1)與#pragma pack(1)的區別

from:http://blog.csdn.net/mylinx/article/details/7007309 #pragma pack(n) 解釋一: 每個特定平臺上的編譯器都有自己的默認“對齊系數”(也叫對齊模數)。程序員可以通過預編譯命令#pragma pack(n),n1,2,4,8,16來改變這一系數,…

ShowDoc的搭建

其實,官方文檔也說的很清楚了。主要貼一下我遇見的問題。環境:LNMP(LAMP沒試過,有興趣的同學可以試試,然后發出來)PHP5.3以上版本、php-mbstring模塊、php-pdo模塊、mysql數據庫克隆或者下載代碼&#xff1…

BroadcastReceiver

本文介紹Broadcast Receiver,包括幾部分內容:Broadcast Receiver概述及實例、自定義Broadcast Receiver、Broadcast Receiver的實現細節、生命周期等。 csdn貌似今天出問題了,無法上傳圖片。 資料來源:最牛網,《官方解…

如何確定VS編譯器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif

如何確定VS編譯器版本 _MSC_VER是MSVC編譯器的內置宏,定義了編譯器的版本,_MSC_VER 值對應版本關系 MSVC 11.0 _MSC_VER 1700 (Visual Studio 2012) MSVC 10.0 _MSC_VER 1600 (Visual Studio 2010) MSVC 9.0 _MSC_VER 1500 (Visual Studio 2008) …

NIO復習02

Selector 1. Selector(選擇器)是Java NIO中能夠檢測一到多個NIO通道,并能夠知曉通道是否為諸如讀寫事件做好準備的組件。這樣,一個單獨的線程可以管理多個channel,從而管理多個網絡連接。 2. Selector的創建&#xff1…

c/c++標準預定義宏

C標準中的一些預定義宏昨天寫代碼時需要在代碼獲取當前編譯時間,從而可動態地作為版本信息,因此用到了C標準中的一些預定義的宏。在此將C標準中定義的幾個宏一并總結一下: __DATE__ 進行預處理的日期(“Mmm dd yyyy”形式的字符串…

安裝cocoa pods時出現Operation not permitted - /usr/bin/xcodeproj的問題

在更新完ruby,更換Ruby鏡像--淘寶的那個鏡像(https://ruby.taobao.org/ )已經不可用了。官方的需要FQ。所以我們現在用最新支持的ruby鏡像(https://gems.ruby-china.org/) 安裝cocoa pods時, 在命令行中輸入: 安裝&…

js 日期控件laydate使用

官網 http://sentsin.com/layui/laydate/ 1. 下載官網上的壓縮包,解壓后只需要復制laydate 文件夾到你的項目中; 2. 在頁面引入 <script type"text/javascript" src"js/laydate/laydate.js"></script> 3. 在頁面添加: <div class"i…

老李推薦:第8章2節《MonkeyRunner源碼剖析》MonkeyRunner啟動運行過程-解析處理命令行參數 2...

我們這一節會先去分析下monkeyrunner是如何對參數進行處理的&#xff0c;我們跳轉到MonkeyRunnerOptions這個類里面的processOptions這個方法&#xff1a; 93 public static MonkeyRunnerOptions processOptions(String[] args) 94 { 95 int index 0; 96 97 Strin…

MFC CPropertySheet 多頁面切換 實例

為了能實現在同一個頁面實現多個頁面的切換效果。CPropertySheet要與CPropertyPage一起使用。 首先 新建一個MFC工程--MFC AppWizard(exe), 取名Pagesheet, 選擇Dialog based, 然后Finish. 2. 在對話框資源中插入兩個對話框IDD_DIALOG1、IDD_DIALOG2&#xff0c;作為…

ReactiveCocoa簡單介紹

ReactiveCocoa 的簡單介紹 http://www.jianshu.com/p/87ef6720a096

游戲提高性能 游戲降幀處理

什么是降幀&為什么降幀 一般情況下我們為了提高整個游戲的體驗&#xff0c;所以我們一般會將游戲的幀數&#xff08;每秒鐘刷新多少次&#xff09;設置的比較高。一般情況下&#xff0c;我們的游戲所有的代碼都是一幀執行一次。為了讓每一幀都變成真的關鍵數據幀。不過&…

delphi 更改DBGrid 顏色技巧

1、根據條件更改某一單元格的顏色 [delphi] view plaincopy procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DM.FirstListStatus.AsString生產 then begin …

mfc中UpdateData的用法

http://blog.csdn.net/ddjj_1980/article/details/51452289 UpdateData(TRUE)——刷新控件的值到對應的變量。(外部輸入值交給內部變量)即&#xff1a;控件的值—>變量。UpdateData(FALSE)—— 拷貝變量值到控件顯示。(變量的最終運算結果值交給外部輸出顯示)即&#xff1a;…

動畫類的層次結構

CASpringAnimation類是CAABasicAnimation的子類 CAPropertyAnimation &#xff1a;是CAAnimation的子類&#xff0c;它支持動畫地顯示圖層的keyPath&#xff0c;一般不直接使用。 iOS9.0之后新增CASpringAnimation類&#xff0c;它實現彈簧效果的動畫&#xff0c;是CABasicAnim…