基于ZooKeeper实现HA高可用性以及自动主备切换

HDFS集群搭建,高可用双机热备模式(HA)自动切换,hdfs+zookeeper+journalnode,步骤分步原理详解(适合初学者) 前 言 作者也是初学hadoop,了解各组件的用途,并且项目中有些东西用不到,所以作者用最简化的组件搭建,避免多余资源的浪费,作者最初构想是zookeeper+hdfs搭建一个分布式文件系统,不用yarn和mapReduce,但是由于双机热备需要一个共享资源的目录,所以还是用到了yarn的journalnode。后续会进行详细说明。 作者会针对每一步进行详细说明以及原理解释,还有作者踩过的 阅读详情

默认情况下,standalone cluster manager对于worker节点的失败是具有容错性的(迄今为止,Spark自身而言对于丢失部分计算工作是有容错性的,它会将丢失的计算工作迁移到其他worker节点上执行)。然而,调度器是依托于master进程来做出调度决策的,这就会造成单点故障:如果master挂掉了,就没法提交新的应用程序了。为了解决这个问题,spark提供了两种高可用性方案,分别是基于zookeeper的HA方案以及基于文件系统的HA方案。
基于zookeeper的HA方案

概述

使用zookeeper来提供leader选举以及一些状态存储,你可以在集群中启动多个master进程,让它们连接到zookeeper实例。其中一个master进程会被选举为leader,其他的master会被指定为standby模式。如果当前的leader master进程挂掉了,其他的standby master会被选举,从而恢复旧master的状态。并且恢复作业调度。整个恢复过程(从leader master挂掉开始计算)大概会花费1~2分钟。要注意的是,这只会推迟调度新的应用程序,master挂掉之前就运行的应用程序是不被影响的。

配置

如果要启用这个恢复模式,需要在spark-env.sh文件中,设置SPARK_DAEMON_JAVA_OPTS选项:
spark.deploy.recoveryMode 设置为ZOOKEEPER来启用standby master恢复模式(默认为NONE)spark.deploy.zookeeper.url zookeeper集群url(举例来说,192.168.0.103:2181,192.168.0.104:2181)spark.deploy.zookeeper.dir zookeeper中用来存储恢复状态的目录(默认是/spark)
备注:如果在集群中启动了多个master节点,但是没有正确配置master去使用zookeeper,master在挂掉进行恢复时是会失败的,
因为没法发现其他master,并且都会认为自己是leader。这会导致集群的状态不是健康的,因为所有master都会自顾自地去调度。

细节

在启动一个zookeeper集群之后,启用高可用性是很直接的。简单地在多个节点上启动多个master进程,并且给它们相同的zookeeper
配置(zookeeper url和目录)。master就可以被动态加入master集群,并可以在任何时间被移除掉。

为了调度新的应用程序或者向集群中添加worker节点,它们需要知道当前leader master的ip地址。这可以通过传递一个master列表来完成。举例来说,我们可以将我们的SparkContext连接的地址指向spark://host1:port1,host2:port2。这就会导致你的
SparkContext尝试去注册所有的master,如果host1挂掉了,那么配置还是正确的,因为会找到新的leader master,也就是host2。

对于注册一个master和普通的操作,这是一个重要的区别。当一个应用程序启动的时候,或者worker需要被找到并且注册到当前的leader master的时候。一旦它成功注册了,就被保存在zookeeper中了。如果故障发生了,new leader master会去联系所有的之前注册过的应用程序和worker,并且通知它们master的改变。这样的话,它们甚至在启动的时候都不需要知道new master的存在。

正是由于这个属性,new master可以在任何时间被创建,并且我们唯一需要担心的一件事情就是新的应用程序和worker可以找到并且注册到master。一旦注册上去之后,我们就不用担心它了。

实验

1、将192.168.2.15机器上的spark集群先停止
./sbin/stop-all.sh
2、修改机器上的spark-env.sh文件,在其中加入上述三个属性
export SPARK_DAEMON_JAVA_OPTS=”-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.2.15:2181,192.168.2.16:2181 -Dspark.deploy.zookeeper.dir=/spark”
3、启动集群
在192.168.2.15上直接用启动集群:./sbin/start-all.sh

4、在192.168.2.16上部署spark安装包,并启动一个master进程

安装scala 2.11.4

1、将课程提供的scala-2.11.4.tgz使用WinSCP拷贝到/usr/local/src目录下。
2、对scala-2.11.4.tgz进行解压缩:tar -zxvf scala-2.11.4.tgz
3、对scala目录进行重命名:mv scala-2.11.4 scala
4、配置scala相关的环境变量
vi ~/.bashrc
export SCALA_HOME=/usr/local/scala
export PATH=$SCALA_HOME/bin
source ~/.bashrc
5、查看scala是否安装成功:scala -version

安装spark客户端

1、将spark-1.5.1-bin-hadoop2.4.tgz使用WinSCP上传到/usr/local/src目录下。
2、解压缩spark包:tar -zxvf spark-1.5.1-bin-hadoop2.4.tgz。
3、重命名spark目录:mv spark-1.5.1-bin-hadoop2.4 spark
4、修改spark环境变量
vi ~/.bashrc
export SPARK_HOME=/usr/local/spark
export PATH=SPARKHOME/binexportCLASSPATH=.:SPARKHOME/binexportCLASSPATH=.:CLASSPATH:JAVAHOME/lib:JAVAHOME/lib:JAVA_HOME/jre/lib
source ~/.bashrc

修改spark-env.sh文件

1、cd /usr/local/spark/conf
2、cp spark-env.sh.template spark-env.sh
3、vi spark-env.sh
export JAVA_HOME=/usr/java/latest
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.2.16
export SPARK_DAEMON_MEMORY=100m
export SPARK_DAEMON_JAVA_OPTS=”-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.2.15:2181,192.168.2.16:2181 -Dspark.deploy.zookeeper.dir=/spark”

在192.168.2.16上单独启动一个standby master进程:./sbin/start-master.sh

4、提交应用程序
将master地址修改为192.168.2.15:7077,192.168.2.16:7078

5、杀掉原先的leader master,等到standby master接管集群
再次提交应用程序

6、再次手动启动原来的leader master(死掉)

问题

1、集群中包含两个节点,在192.168.2.15上配置了master和worker,
在192.168.2.16上配置了worker
但是在15集群上 ./sbin/start-all.sh
在16 集群上不启动 worker!! 原因在 在conf中的slaves.template 没有重命名,重命名为slaves 即可
slaves中:
A Spark Worker will be started on each of the machines listed below.
Spark1
Spark2
2、在15 上直接启动 ./sbin/start-all.sh
在16 上 ./sbin/start-master.sh
3、此时在文本上查看 192.168.2.15:8088
192.168.2.16:8088
查看,一个为standby 一个为alive !
将aliver 的jps kill-9 杀死掉
大概一分钟,之后 standby将变为aliver状态,此时基于zookeeper的主备机切换完成!

~

基于zookeeper实现服务节点HA主备自动切换 zookeeper实现服务节点HA主备自动切换 1主多从模式 ZooKeeper实现高可用 主备模式自动切换 基于SpringBoot2.5.6、SpringFrameWork5.3.12、JDK8 阅读详情

相关推荐

Hadoop集群主备切换实战:手动vs自动(附详细命令与效果对比)

本文详细解析Hadoop集群主备切换的两种方案:手动与自动切换,并附有详细命令与效果对比。通过真实案例展示如何在生产环境中实现高可用性,确保数据一致性和服务连续性。特别关注Active和Standby节点的切换机制,帮助运维人员快速应对节点故障。

weixin_33728268的博客 311

zookeeper实现分布式协调服务--主备切换的核心原理

zookeeper可以用于解决hdfs中NamNode、Yarn中ResourceManager中的单点问题。 以ResourceManager为例,集群中可以存在多个ResourceManager,只有一个处于active状态,其余都是standby状态。 1.刚启动时,所有ResourceManager节点都会去写一个lock临时节点,但是只有一个能写成功。成功写入的节点进入active状...

znHD的博客 1102

zookeeper HA 实现主备切换

一、思路 在这里提供一张主备切换的思路图。这张图非常重要,理解这张图就基本直到主备切换的思路了 启动server时注册一个临时的有序的子节点(注意,一定要是临时有序的),将自己注册的子节点保存在一个全局变量中获取父节点下所有的子节点,排序,然后将自己的节点与最小子节点比较,如果相等则成为主机,不相等则等待。实现Watcher接口,当父节点发生变化时,执行 1

Hy_Rvier的专栏 3244

ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集

目录 Hadoop HA 原理概述 为什么会有 hadoop HA 机制呢? 那如何解决呢? 集群规划 集群服务器准备 集群安装 1、安装 Zookeeper 集群 2、安装 hadoop 集群 Hadoop HA集群的初始化 1、启动ZooKeeper 2、在你配置的各个journalnode节点启动该进程 3、格式化namenode 4、要把在ha...

一尘在心的博客 458

基于ZooKeeper实现服务节点HA主备自动切换的高可用架构设计

1主多从架构的本质在于通过集中式控制与去中心化备份相结合的方式,达成系统稳定性与可扩展性的平衡。在这种模型中,所有服务实例启动后均尝试竞争成为“主节点”,但最终只有唯一一个节点成功获取主导权,其余节点则作为“从节点”持续监听主节点状态,在其失效时迅速接替职责。整个过程无需人工干预,完全由ZooKeeper协调完成。

weixin_28840811的博客 1142

ADS1220 STM32硬件SPI驱动程序

前一段时间温故了下标准库,使用的是F1系列芯片,测试程序。

随风飘零翼的博客 5772

ZooKeeper主备切换机制详解

ZooKeeper 的主备切换(Failover)机制主要通过其分布式协调能力和临时节点(Ephemeral Nodes)特性实现。通过上述机制,ZooKeeper能在秒级(取决于会话超时时间)内完成主备切换,实现高可用性。

ITHomeZSL的博客 604

无人机室内悬停如何稳?光流与IMU数据融合实战解析

在无GPS的室内环境中,无人机自主悬停依赖多传感器融合,其中光流与IMU是核心组合。光流传感器通过图像像素位移估算相对地面的速度,长期无漂移,但易受光照和纹理影响;IMU高频响应出色,却存在积分累积漂移。两者在频率与误差特性上天然互补,融合后可实现高精度位置估计。工程实践中,需合理选型、正确处理坐标变换与时间对齐,并通过互补滤波或扩展卡尔曼滤波将光流速度修正引入状态估计,进而支撑位置环与速度环控制。这一技术不仅解决室内定点悬停,也为视觉惯性里程计等更复杂的自主定位提供基础。本文结合真实调试案例,梳理从硬件安

weixin_33314040的博客 297

spark 基于ZooKeeper实现HA高可用性以及自动主备切换

北风网spark学习笔记 默认情况下,standalone cluster manager对于worker节点的失败是具有容错性的(迄今为止,Spark自身而言对于丢失部分计算工作是有容错性的,它会将丢失的计算工作迁移到其他worker节点上执行)。然而,调度器是依托于master进程来做出调度决策的,这就会造成单点故障:如果master挂掉了,就没法提交新的应用程序了。为了解决这个问题,spar...

htfenght的博客 2318

鸿蒙OS开机动画背后的秘密:从代码到视觉的完整解析(附源码分析)

本文深入解析了鸿蒙OS开机动画的系统级实现原理。从bootanimation服务的启动配置、与Render Service的协同,到基于VSync信号的帧率同步与绘制流水线,结合OpenHarmony源码进行了逐行解读。文章揭示了其事件驱动的优雅退出机制,并探讨了视频支持、多屏适配等高级特性与定制化可能,为开发者理解鸿蒙图形子系统提供了硬核技术视角。

sony5的博客 974

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1243

167、Spark运维管理进阶之基于ZooKeeper实现HA高可用性以及自动主备切换

默认情况下,standalone cluster manager对于worker节点的失败是具有容错性的(迄今为止,Spark自身而言对于丢失部分计算工作是有容错性的,它会将丢失的计算工作迁移到其他worker节点上执行)。然而,调度器是依托于master进程来做出调度决策的,这就会造成单点故障:如果master挂掉了,就没法提交新的应用程序了。为了解决这个问题,spark提供了两种高可用性方案,...

ZJ__ZFH的博客 329

ios生成海报使用dom-to-image中toPng报错isTrusted:true

主要是ios中safari浏览器解析错误,引起的报错,主要引起原因toPng会调用toSvg,toSvg直接将html标签内容通过svg中foreignObject标签直接包裹,然后转base64, 通过data:image/svg+xml;解决办法:二次生成(调用两次),判断ios or 安卓,生成第一次生成,不用参数,例如:scale: 3,在第二次生成再进行清晰度操作,避免多次生成,引起性能消耗。以上种种很多案例,使用canvase进行转换的,标签丢失,直接toPng版本的,兼容性问题。

weixin_44601570的博客 2106

hadoop2.0 HA的主备自动切换

hadoop2.0 HA的主备自动切换

克终的博客 2987

双目相机测距原理

普通双目相机具有如下特点:左右两个相机位于同一平面(光轴平行),且相机参数(焦距f)一致。其原理图如下:如图所示,P点为相应的物体位置,CL和CR为左右相机光心位置,PL和PR分别为左相机和右相机拍摄的P点成像结果。f为相机焦距,Z为物体距相机的深度距离,b为左右相机基线距离根据几何关系有:则相应的深度信息计算公式为:(1)其中XL-XR为视差。其余在两侧的情况同样可以用几何关系分析得到该表达式(1),即对于普通双目相机测距可以直接通过公式(1)得到深度结果。

doudou2weiwei的博客 4548

电子设计(1)二极管防电源反接电路

二极管经常用来作电源防反接保护,所需器件少,电路简单。

记得诚 1万+

Hadoop-2.6.0下HDFS的集群HA的主备自动切换搭建

一.环境说明 1.1 安装环境说明及安装包   1). 操作系统为CentOS6.6   2). Hadoop版本为Hadoop-2.6.0   hadoop-2.6.0.tar.gz(64位)   3).JDK版本为 1.7      jdk-7u75-linux-x64.gz   4). zookeeper-3.4.6.tar.gz 现有四台机器配置分布如下 主机

小草的忧伤 4764

气象水文资料预处理:缺测数据插补延长等

简介气象水文资料预处理

WW、forever的博客 3773

【伊利丹】Hadoop2.0 NN HA实验记录

1.关于Hadoop2.2.0中HA的介绍 NameNode 简称: NN  DateNode 简称: DN JournalNode  简称: JN Zookeeper  简称: ZK 从上面的图里,我们可以知道HA的大致架构: 01.利用共享存储来在两个NN之间同步元数据信息。 在NN中有两个重要的文件:一个是fsim

甘道夫的大数据进化论 2198

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Hadoop HA 机制学习

一、Hadoop 系统架构 1.1 Hadoop1.x和Hadoop2.x 架构 在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的。Hadoop 1.x之前,其官方架构如图1所示: [ 图1.Hadoop 1.x架构图 ] 从图中可看出,1.x版本之前只有一个Namenode,所有元数据由惟一的Namenode负责管理,可想而之当这个NameNode挂掉时...

weixin_30838921的博客 72

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Canal HA模式配置

Canal HA模式配置 服务器端HA模式配置 canal是支持HA的,其实现机制也是依赖zookeeper来实现的,用到的特性有watcher和EPHEMERAL节点(和session生命周期绑定),与HDFS的HA类似。 canal的ha分为两部分,canal server和canal client分别有对应的ha实现 canal server: 为了减少对mysql dump的请求,不同server上的instance(不同server上的相同instance)要求同一时间只能有一个处于runnin

weixin_51473488的博客 254

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hadoop-HA模式(详解)

一、概述 之前的博客写了搭建hadoop集群环境,今天写一写搭建高可用(HA)环境。Hadoop-HA模式大致分为两个(个人在学习中的理解): namenode 高可用 yarn 高可用 1、Namenode HA Namenode在HDFS中是一个非常重要的组件,相当于HDFS文件系统的心脏,在显示分布式集群环境中,还是会有可能出现Namenode的崩溃或各种意外。所以,高可用模...

窃格拉瓦 2万+

Hadoop之HA高可用性

HA存在的背景: HA的工作原理图: HDFS HA高可用性 1、active namenode对外提供服务和standby namenode时刻待机准备的 2、保证两个namenode任何时候都是元数据同步的 3、standby namenode同样需要去读取fsimage和edits文件 -》edits变化后的数据文件同样也是需要实时

weixin_40652340的博客 7933

hadoop主节点切换_hadoop2.0 HA的主备自动切换

在《hadoop2.0 QJM方式的HA的配置》一文中介绍了HA的配置,是通过手工进行主备切换的。本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置。自动切换是通过配置zookeeper来实现的,关于zookeeper的安装和配置,在这里不做介绍了,大家可以参考网上的资料。1 准备假定已经有一个zookeeper的集群,3台机器如下:zookeeper1zoo...

weixin_39620943的博客 780

基于Hadoop HA集群部署HBase HA集群(详细版)

本文介绍Hadoop高可用(HA)集群的部署方法,重点阐述ZooKeeper在Hadoop及HBase高可用架构中的核心作用。文章首先说明ZooKeeper通过临时节点机制实现主从选举,为Hadoop NameNode和HBase Master提供故障转移支持。随后详细讲解ZooKeeper集群的配置步骤,包括myid文件设置和环境变量配置。在Hadoop HA配置部分,文章展示了core-site.xml和hdfs-site.xml的关键参数,特别是ZooKeeper服务地址和nameservice的配置

pysense的博客 5385

基于zookeeper的主备服务

为了高可用通产我们一个服务会部署多节点。但是有时我们希望对某些操作要求单线程处理,此时可以通过主备服务形式实现。正常情况下主节点服务处理,当主节点宕机后备用节点相关服务继续处理。

一张小羊毛的博客 4879
上一篇: Kafka启动出现Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Pr
下一篇: HBase出现java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration问题
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值