搜尋
首頁資料庫mysql教程Hadoop 2.0中单点故障解决方案总结

Hadoop 2.0中单点故障解决方案总结

Jun 07, 2016 pm 04:32 PM
dohadoop作者總結故障解決方案

作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明 网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-ha/ 本博客的文章集合: http://dongxicheng.org/recommend/ 重大消息:我的Hadoop新书《

作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明
网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-ha/
本博客的文章集合: http://dongxicheng.org/recommend/


重大消息:我的Hadoop新书《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》已经开始在各大网站销售了,购书链接地址: 当当购书网址, 京东购书网址, 卓越购书网址。新书官方宣传主页: http://hadoop123.com/。

-

Hadoop 1.0内核主要由两个分支组成: MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,该问题在很长时间内没有解决,这使得Hadoop在相当长时间内仅适合离线存储和离线计算。

令人欣慰的是,这些问题在Hadoop 2.0中得到了非常完整的解决。Hadoop 2.0内核由三个分支组成,分别是HDFS、 MapReduce和 YARN,而Hadoop生态系统中的其他系统,比如HBase、Hive、Pig等,均是基于这三个系统开发的。截止本文发布,Hadoop 2.0的这三个子系统的单点故障均已经解决或者正在解决(Hadoop HA),本文将为大家介绍当前的进度和具体的解决方案。

在正式介绍单点故障解决方案之前,先简要回顾一下这三个系统(三个系统均采用简单的master/slaves架构,其中master是单点故障)。

(1) HDFS:仿照google GFS实现的分布式存储系统,由NameNode和DataNode两种服务组成,其中NameNode是存储了元数据信息(fsimage)和操作日志(edits),由于它是唯一的,其可用性直接决定了整个存储系统的可用性;

(2) YARN:Hadoop 2.0中新引入的资源管理系统,它的引入使得Hadoop不再局限于MapReduce一类计算,而是支持多样化的计算框架。它由两类服务组成,分别是ResourceManager和NodeManager,其中,ResourceManager作为整个系统的唯一组件,存在单点故障问题;

(3) MapReduce:目前存在两种MapReduce实现,分别是可独立运行的MapReduce,它由两类服务组成,分别是JobTracker和TaskTraker,其中JobTracker存在单点故障问题,另一个是MapReduce On YARN,在这种实现中,每个作业独立使用一个作业跟踪器(ApplicationMaster),彼此之间不再相互影响,不存在单点故障问题。本文提到的单点故障实际上是第一种实现中JobTracker的单点故障。

先说当前Hadoop单点故障的解决进度,截止本文发布时,HDFS单点故障已经解决,且提供了两套可行方案;MapReduce单点故障(JobTracker)由CDH4(CDH4同时打包了MRv1和MRv2,这里的单点故障指的是MRv1的单点问题)解决,且已经发布;YARN单点故障尚未解决,但方案已经提出,由于解决方案借鉴了HDFS HA和MapReduce HA的实现,因为将会很快得到解决。

总体上说,Hadoop中的HDFS、MapReduce和YARN的单点故障解决方案架构是完全一致的,分为手动模式和自动模式,其中手动模式是指由管理员通过命令进行主备切换,这通常在服务升级时有用,自动模式可降低运维成本,但存在潜在危险。这两种模式下的架构如下。

【手动模式】

【自动模式】

在Hadoop HA中,主要由以下几个组件构成:

(1) MasterHADaemon:与Master服务运行在同一个进程中,可接收外部RPC命令,以控制Master服务的启动和停止;

(2) SharedStorage:共享存储系统,active master将信息写入共享存储系统,而standby master则读取该信息以保持与active master的同步,从而减少切换时间。常用的共享存储系统有zookeeper(被YARN HA采用)、NFS(被HDFS HA采用)、HDFS(被MapReduce HA采用)和类bookeeper系统(被HDFS HA采用)。

(3) ZKFailoverController:基于Zookeeper实现的切换控制器,主要由两个核心组件构成:ActiveStandbyElector和HealthMonitor,其中,ActiveStandbyElector负责与zookeeper集群交互,通过尝试获取全局锁,以判断所管理的master进入active还是standby状态;HealthMonitor负责监控各个活动master的状态,以根据它们状态进行状态切换。。

(4) Zookeeper集群:核心功能通过维护一把全局锁控制整个集群有且仅有一个active master。当然,如果ShardStorge采用了zookeeper,则还会记录一些其他状态和运行时信息。

尤其需要注意的是,解决HA问题需考虑以下几个问题:

(1) 脑裂(brain-split):脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active master,最终使得整个集群处于混乱状态。解决脑裂问题,通常采用 隔离(Fencing)机制,包括三个方面:

  • 共享存储fencing:确保只有一个Master往共享存储中写数据。
  • 客户端fencing:确保只有一个Master可以响应客户端的请求。
  • Slave fencing:确保只有一个Master可以向Slave下发命令。

Hadoop公共库中对外提供了两种fenching实现,分别是sshfence和shellfence(缺省实现),其中sshfence是指通过ssh登陆目标Master节点上,使用命令fuser将进程杀死(通过tcp端口号定位进程pid,该方法比jps命令更准确),shellfence是指执行一个用户事先定义的shell命令(脚本)完成隔离。

(2)切换对外透明:为了保证整个切换是对外透明的,Hadoop应保证所有客户端和Slave能自动重定向到新的active master上,这通常是通过若干次尝试连接旧master不成功后,再重新尝试链接新master完成的,整个过程有一定延迟。在新版本的Hadoop RPC中,用户可自行设置RPC客户端尝试机制、尝试次数和尝试超时时间等参数。

为了印证以上通用方案,以MapReduce HA为例进行说明,在CDH4中,HA方案介绍可参考我的这篇文章: “CDH中JobTracker HA方案介绍”,架构图如下:

Hadoop 2.0 中 HDFS HA解决方案可阅读文章: “Hadoop 2.0 NameNode HA和Federation实践”,目前HDFS2中提供了两种HA方案,一种是基于NFS共享存储的方案,一种基于Paxos算法的方案 Quorum Journal Manager(QJM),它的基本原理就是用2N+1台JournalNode存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。目前社区正尝试 使用Bookeeper作为共享存储系统,具体可参考。 HDFS-1623给出的HDFS HA架构图如下所示:

目前进度最慢的是YARN HA解决方案,该方案已经文档化,正在规范和开发中,具体可参考: https://issues.apache.org/jira/browse/YARN-149,总体上看,它的整体架构与MapReduce HA和YARN HA的类似,但共享存储系统采用的是Zookeeper。之所以采用Zookeeper这种轻量级“存储系统”(需要注意的是,zookeeper设计目的并不是存储,而是提供分布式协调服务,但它的确可以安全可靠的存储少量数据以解决分布式环境下多个服务之间的数据共享问题),是由于YARN的大部分信息可以通过NodeManager和ApplicationMaster的心跳信息进行动态重构,而ResourceManager本身只需记录少量信息到Zookeeper上即可。

总体上讲,HA解决的难度取决于Master自身记录信息的多少和信息可重构性,如果记录的信息非常庞大且不可动态重构,比如NameNode,则需要一个可靠性与性能均很高的共享存储系统,而如果Master保存有很多信息,但绝大多数可通过Slave动态重构,则HA解决方法则容易得多,典型代表是MapReduce和YARN。从另外一个角度看,由于计算框架对信息丢失不是非常敏感,比如一个已经完成的任务信息丢失,只需重算即可获取,使得计算框架的HA设计难度远低于存储类系统。

原创文章,转载请注明: 转载自 董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-ha/

作者: Dong,作者介绍: http://dongxicheng.org/about/

本博客的文章集合: http://dongxicheng.org/recommend/


Copyright ? 2013
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)

Hadoop 2.0中单点故障解决方案总结

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

mysql:不是編程語言,而是...mysql:不是編程語言,而是...Apr 13, 2025 am 12:03 AM

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),