浅谈Apache Hadoop 2.0.0-alpha中HDFS 如何实现High Availability

2019-03-28 13:39|来源: 网络

什么是高可用性?

高可用集群是指以减少服务中断时间为目的的服务器集群技术。

高可用性HA(HighAvailability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。

高可用性(HA)的功能:

1、软件故障监测与排除

2、备份和数据保护

3、管理站能够监视各站点的运行情况,能随时或定时报告系统运行状况,故障能及时报告和告警,并有必要的控制手段

4、实现错误隔离以及主、备份服务器间的服务切换

背景分析:

HDFS的高可用性(HA)是Hadoop的一个缺点,不管是HDFS还是Map-Reduce,都是采用单master的方式,集群中的其他机器都是与一台中心机器进行通信,如果这个中心机器挂了,集群就只有不工作了(不一定数据会丢失,但是至少需要重启等等工作),让可用性变得更低。这个一般叫做单点失败 (single point of failure,SPOF)。本文通过比较Hadoop各版的改变还查看对这个问题的解决方案。

问题描述:

解决Namenode结点宕机时导致的集群不可用, 增强HDFS的高可用性

方案描述:

在Hadoop0.23.1版本以前,当Namenode所在服务器宕机时,可利用Namenode备份的元数据重构新的Namenode来投入使用。

方案一:

Hadoop本身提供了可利用secondaryNamenode的备份数据来恢复Namenode的元数据的方案,但因为checkpoint(在每次checkpoint的时候secondaryNamenode才会合并并同步Namenode的数据)的问题,secondaryNamenode的备份数据并不能时刻保持与Namenode同步,即在Namenode宕机的时候secondaryNamenode会丢失一段时间的数据,这段时间取决于checkpoint的周期。可以减小checkpoint的周期来减少数据的丢失量,但由于每次checkpoint很耗性能,而且这种方案也不能从根本上解决数据丢失的问题。

缺点:secondaryNamenode的备份数据并不能时刻保持与Namenode同步,不能从根本上解决数据丢失的问题。

方案二:

Hadoop提供的另一种方案就是NFS(网络文件系统),一种即时备份Namenode元数据的方案,设置多个data目录(包括NFS目录),让Namenode在持久化元数据的时候同时写入多个目录,这种方案较第一种方案的优势是能避免数据的丢失(这里我们暂时不讨论NFS本身会丢失数据的可能性,毕竟这种几率很小很小)。

缺点:

1.namenode的IP映射及访问问题,重新构造namenode可能导致客户端访问IP不一致,但可以在备用namenode投入使用的时候,配置其IP和原namenode一致

2.NFS服务器宕机导致集群瘫痪,可配置NFS集群来确保NFS的可用性。

3.重新构造namenode的时延问题,不能确保故障发生时能立即投入使用,对于需要即时使用的项目建议采用namenode热备方案。这是最关键的,会有中断。这对于高可用性集群是不可接受的

注:方案一和二选自:http://www.linuxidc.com/Linux/2012-06/63558.htm

相关问答

更多
  • 是的 ,WebHDFS不具备高可用性。 这个问题仍然存在。 参考HDFS-6371 相反,您可以选择HttpF 。 它可以与webhdfs REST API和HA识别相互作用。 或者,编写自定义实现以将请求重定向到Active Namenode。 Yes, WebHDFS is not High Availability aware. This issue is still open. Refer HDFS-6371 Instead, you can opt for HttpFs. It is inteop ...
  • 对于StackOverflow,您的问题可能有点宽泛,但我处于您的情况,所以我可以同情。 粘性会话不是首选,因为需要使用它们会表明您的应用程序不是无状态的。 换句话说,您需要粘性会话,这意味着您的应用程序依赖于服务器内存进行会话管理,因此,一旦初始化会话,该用户必须在整个会话期间保持在该服务器上。 这是可以的,但不太理想(相比之下,如果您的请求根本不关心它运行的是哪个服务器实例),因为如果您的流量速度减慢并且Elastic Beanstalk决定终止您所使用的实例,那么下一步请求当负载均衡器将您路由到另一个 ...
  • 最好复制所有内容,天蓝色负载均衡器(第4层平衡器)确保负载均匀且随机地分布在侦听端点上,因此您无法知道哪个服务器将应答请求,因此您必须在两个盒子上具有相同的配置。 以下是Azure负载均衡器的一些信息,您可能会发现这些信息很有趣, 链接 还要将它们放入可用性集中,这样如果其中一个虚拟机由于某种原因或更新期间(可能会不时发生vms)而死亡,您可以确定至少有一个虚拟机将始终在线。 您可能需要两个以上的虚拟机,这实际上取决于您的每个客户端生成的流量以及创建的负载。 但是至少要有两个vms。 如果您以前没有使用Az ...
  • 有关如何在hadoop v1中执行此操作的互联网上有许多资源,例如http://www.hadoopsphere.com/2012/11/understanding-high-availability-options.html或http://hortonworks.com/blog/ HA-名称节点换HDFS与-的hadoop-1-0-部分-1 / 在Hadoop 2.0中,这本身就解决了。 There are many resources on the internet on how to do that ...
  • 对于ASF Hadoop 1.1.2,没有可靠的NameNode HA选项。 这些是2.0版本发布的,包含在像Cloudera的CDH4这样的流行发行版中。 NameNode HA的选项包括运行主NameNode和热备用NameNode。 它们共享编辑日志,可以是NFS挂载,也可以是HDFS本身的仲裁日志模式。 前者为您提供了存储HDFS元数据的外部源的好处,而后者为您提供了Hadoop外部无依赖性的好处。 就个人而言,我喜欢NFS选项,因为您可以轻松快照/备份驻留在文件服务器上的数据。 这种方法的缺点是在 ...
  • Google Cloud Dataproc具有内置于服务中的高可用性 (HA)模式。 在HA模式下,Cloud Dataproc群集支持HDFS高可用性和YARN高可用性,并且两个组件都配置为允许不间断的YARN和HDFS操作,尽管任何单节点故障/重新启动。 有关Cloud Dataproc HA模式的一些重要事项需要牢记: HA功能目前处于测试阶段 所有节点都使用Apache Zookeeper进行故障转移 通过Cloud Dataproc Jobs API提交的作业不被视为“高可用性”,并且仍将在运行相 ...
  • 对于Hadoop HA - 您需要至少两台可以运行Namenode和Namenode HA的独立机器。 因此理论上你可以拥有至少2台机器的Hadoop HA集群。 但这在实际中并没有太大用处。 要回答您的其他问题:1。您可以在运行Namenode服务的计算机上运行DataNode服务。 这是PoC集群中的一般情况,其中您有小型集群(大致3-7个节点)注意:作为最佳实践的一部分,您应该使用专用计算机作为生产中的Namenode等主服务。 是的,您可以在运行Datanode或Namenode或两者的计算机上运行 ...
  • HDFS高可用性和HDFS联合之间的主要区别在于联合中的名称节点彼此不相关。 在HDFS联合中,所有名称节点共享一个元数据池,其中每个名称节点都有自己的池,因此提供了容错功能,即如果联合中的一个名称节点失败,则不会影响其他名称节点的数据。 所以,Federation =多个名称节点,没有相关性。 在HDFS HA的情况下,有两个名称节点 - 主NN和备用NN。 主NN每次都很努力,而Standby NN只是坐在那里,并且偶尔会对主要Namenode的元数据进行冷却和更新,这使得它们相关。 当主要NN厌倦了这 ...
  • 更换 yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKResourceManagerStateStore yarn.resourcemanager.store.class
  • 流接收器是位于多个工作节点还是驱动程序机器 接收器位于工作节点上, 工作节点负责消耗保存数据的源。 如果其中一个接收数据的节点出现故障(断电/重启)会发生什么 接收器位于工作节点上。 工作节点从驱动程序获取它的任务。 如果您在客户端模式下运行,则此驱动程序可以位于专用主服务器上;如果您在群集模式下运行,则该驱动程序可以位于其中一个工作服务器上。 如果节点发生故障且未运行驱动程序,则驱动程序会将故障节点上保存的分区重新分配给另一个节点,然后可以从源中重新读取数据,并执行其他操作。从故障中恢复所需的处理。 这就 ...