设为首页 收藏本站
查看: 871|回复: 0

[经验分享] Hadoop2.6.0学习笔记(八)SPOF解决方案总结

[复制链接]

尚未签到

发表于 2018-10-30 08:58:14 | 显示全部楼层 |阅读模式
  鲁春利的工作笔记,谁说程序员不能有文艺范?
  转载自董的博客,表示感谢。
  Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,该问题在很长时间内没有解决,这使得Hadoop在相当长时间内仅适合离线存储和离线计算。
  令人欣慰的是,这些问题在Hadoop 2.0中得到了非常完整的解决。Hadoop 2.0内核由三个分支组成,分别是HDFS、MapReduce和YARN,而Hadoop生态系统中的其他系统,比如HBase、Hive、Pig等,均是基于这三个系统开发的。
  在正式介绍单点故障解决方案之前,先简要回顾一下这三个系统(三个系统均采用简单的master/slaves架构,其中master是单点故障)。
  (1) HDFS:仿照google GFS实现的分布式存储系统,由NameNode和DataNode两种服务组成,其中NameNode是存储了元数据信息(fsimage)和操作日志(edits),由于它是唯一的,其可用性直接决定了整个存储系统的可用性;
  (2)YARN:Hadoop2.0中新引入的资源管理系统,它的引入使得Hadoop不再局限于MapReduce一类计算,而是支持多样化的计算框架。它由两类服务组成,分别是
ResourceManager和NodeManager,其中,ResourceManager作为整个系统的唯一组件,存在单点故障问题;
  (3)MapReduce
目前存在两种MapReduce实现,分别是可独立运行的MapReduce,它由两类服务组成,分别是JobTracker和TaskTraker,其
中JobTracker存在单点故障问题,另一个是MapReduce On
YARN,在这种实现中,每个作业独立使用一个作业跟踪器(ApplicationMaster),彼此之间不再相互影响,不存在单点故障问题。本文提到
的单点故障实际上是第一种实现中JobTracker的单点故障。
  总体上说,Hadoop中的HDFS、MapReduce和YARN的单点故障解决方案架构是完全一致的,分为手动模式和自动模式,其中手动模式是指由管
理员通过命令进行主备切换,这通常在服务升级时有用,自动模式可降低运维成本,但存在潜在危险。这两种模式下的架构如下。
  【手动模式】
DSC0000.jpg

  【自动模式】
   DSC0001.jpg
  在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完成的,整个过程有一定延迟。在新版本的HadoopRPC中,用户可自行设置RPC客户端尝试机制、尝试次数和尝试超时时间等参数。
  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)返回成功时即认为该次写成功,数据不会丢失了。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628261-1-1.html 上篇帖子: Hadoop2.6.0学习笔记(一)MapReduce介绍 下篇帖子: Hadoop例子中WordCount参数分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表