flink ha zk集群迁移实践
flink为了保证线上作业的可用性,提供了ha机制,如果发现线上作业失败,则通过ha中存储的信息来实现作业的重新拉起。
我们在flink的线上环境使用了zk为flink的ha提供服务,但在初期,由于资源紧张,只是对zk进行了standalone的部署,但是在后期的使用中,发现单节点的集群很难提供很高的可用性,
所以就尝试将目前的standalone的zk服务扩展为cluster的zk服务,这其中,也踩了不少坑。
第一次尝试,将standalone的zk扩展为cluster
扩展为cluster很简单,找了两台集群,部署了zk服务,然后将三台节点的zk的zoo.cfg同步了下,然后重启每个zk服务。
结果失败了,线上的作业都死掉了。
这里的坑在于重启之后,zk的信息都丢掉了,成了一个空集群,已经在线上跑的作业拿不到相应的信息,就死掉了。
第二次尝试,将standalone的zk扩展为cluster
第一次之所以信息都丢了,是因为最初的那个standalone的机器,并没有一开始就重启,反而是放到最后重启了,导致他从别人往自己同步信息,自己的信息都丢了。
所以这次,前面还是一样的套路,但是zoo.cfg同步之后,先重启之前standalone的节点,之后重启其他两个节点。
完美,这次信息没有发生丢失,相应的数据都在。
结果作业还是挂了,为啥?因为重启zk的节奏太慢,信息虽然都在,但是zk不可用的时间太长。
然后又试了一次,这次加快节奏,别拖泥带水。
信息没有丢失,作业没有失败,但是作业重启了,因为虽然重启各个zk很快,但也要20s左右的时间,这个时间以及超过zk与客户端维护心跳的时间了。但万幸作业没有挂掉。
但是商量之后觉得,线上那么多作业,如果都restart一次,还是不太好。所以最终决定还是搭新集群,以前的作业走老集群,新提的作业走新集群,维护两个集群,直到没有人使用老集群,麻烦,但是对用户友好。
第三次尝试,组建完全新的zk集群
这个就很好弄了,先搭了个5个节点的zk集群,然后测试了下作业提交,没有问题,完美。
结果没几分钟就被打脸,用户反映之前的作业没法下线。
好吧,这个场景没考虑到。因为用户下线作业的时候,其实也需要到zk中去获取线上dispatcher的地址,但是新集群是不包含之前应用的信息啊。
没办法,只能同步zk信息了,好在在github上找到一个zkMove的项目,测了下,可以用,就赶紧同步了下相应的信息。
教训,其实可以在一开始就通过离线同步zk信息的方式来组建新的zk集群,这样就不会发生类似的事情了。
第四次尝试,复用yarn的zk集群
因为资源限制,上面搭的集群都在yarn的zk集群上,但是启用了2183端口。运维同学不干了,他们监控zk只监控2183接口。
所以最终还是复用yarn的zk集群,那么就又得找个夜深人静的时候去同步zk信息了。
其实最大的教训在于,一开始就应该将zk搞成cluster模式,哪怕是伪集群,即在一个节点上的集群,这样后期要扩容或者缩容,都会方便很多。
flink ha zk集群迁移实践的更多相关文章
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 1、hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 转】Neo4j集群安装实践
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! Posted: Oct 29, 2013 Ta ...
- PB级数据实时查询,滴滴Elasticsearch多集群架构实践
PB级数据实时查询,滴滴Elasticsearch多集群架构实践 mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达 点 ...
- Hive跨集群迁移
Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等. 1. 迁移hdfs数据至新集群hadoop distcp -skipcrccheck ...
- Nginx+Keepalived高可用集群应用实践
Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...
- 原创hadoop2.6.4 namenode HA+Federation集群高可用部署
今天下午刚刚搭建了一个高可用hadoop集群,整理如下,希望大家能够喜欢. namenode HA:得有两个节点,构成一个namenode HA集群 namenode Federation:可以有 ...
- 【转】最近搞Hadoop集群迁移踩的坑杂记
http://ju.outofmemory.cn/entry/237491 Overview 最近一段时间都在搞集群迁移.最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每 ...
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
随机推荐
- RandomAccessFile java
RandomAccessFile 用来支持读写随机存取文件的类.提供“文件指针”,类似于游标和下标,使用getFilePointer()方法获得,利用seek()方法设置下标. public Rand ...
- Ruby 配置vimrc
https://ruby-china.org/topics/19315 mv ~/Downloads/vim-distinguished-develop/colors/*.vim ~/.vim/col ...
- spring_cloud多个微服务访问时偶发forward_error问题
1.问题: 最近在做SpringBoot项目的时候,有多个分开的微服务,偶发forward error 问题 2.猜想: 个人理解为服务跳转错误,可能本身没找到目标服务,或者目标服务损坏 3.解决: ...
- 【HDU4565】So Easy!
[HDU4565]So Easy! 题面 要你求 \[ \lceil (a+\sqrt b)^n \rceil \% m \] 其中\(0<a,m<2^{15},(a-1)^2<b& ...
- 收集的PHP工具及类库
composer PHP的依赖管理工具 phpmig PHP的数据库迁移工具,依赖于composer Requests for PHP HTTP请求库,采集页面可以用到的 ...
- 详解UML图之类图
产品经理的必备技能之一是画UML图,本文就告诉你怎么画标准的类图吧.本文结合网络资料和个人心得所成,不当之处,请多指教. 1.为什么需要类图?类图的作用 我们做项目的需求分析,最开始往往得到的是一堆文 ...
- Python 爬虫之模拟登录
最近应朋友要求,帮忙爬取了小红书创作平台的数据,感觉整个过程很有意思,因此记录一下.在这之前自己没怎么爬过需要账户登录的网站数据,所以刚开始去看小红书的登录认证时一头雾水,等到一步步走下来,最终成功, ...
- GitHub中webhooks的使用
目录 GitHub中的webhooks的配置 对配置的webhooks的进行测试 目前在团队在设计一个应用管理的功能,需要了解到常用代码托管的Webhooks的使用.GitHub中的webhooks首 ...
- git clone、git pull和git fetch的用法及区别
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流.Git 常用命令速查表 最近在一个学习小组里学习AI的课程,我们所有的学习资料和homework都放在gitlab上.今天一个小队友从gitlab ...
- Mybatis利用拦截器做统一分页
mybatis利用拦截器做统一分页 查询传递Page参数,或者传递继承Page的对象参数.拦截器查询记录之后,通过改造查询sql获取总记录数.赋值Page对象,返回. 示例项目:https://git ...