是不是都需要一个声明,来一个:

声明:

本文只是总结本人本地模拟环境测试,并没有经过严格的线上测试。请自己在本地严格测试之后慎重使用在生产环境!

kudu_master、kudu_tserver服务迁移时候会涉及数据的迁移,概括如下:

1、kudu_master部署机器

172.16.100.1 kudu_master1 Leader 
172.16.100.2 kudu_master2 Follower
172.16.100.3 kudu_master3 Follower

2、确认kudu集群健康状态,通过ksck命令查看

./kudu cluster ksck kudu_master1,kudu_master2,kudu_master3

注释:
kudu_master1,kudu_master2,kudu_master3:kudu_master服务所在机器的host

Version Summary
Version | Servers
-----------------+-------------------------
1.10.0-cdh6.3.1 | all 6 server(s) checked

Tablet Summary
Summary by table
Name | RF | Status | Total Tablets | Healthy | Recovering | Under-replicated | Unavailable
--------------------------+----+---------+---------------+---------+------------+------------------+-------------
impala::default.dd1 | 3 | HEALTHY | 1 | 1 | 0 | 0 | 0
impala::default.dd2 | 3 | HEALTHY | 1 | 1 | 0 | 0 | 0
impala::hxoffice_pri.dd3 | 3 | HEALTHY | 1 | 1 | 0 | 0 | 0

Tablet Replica Count Summary
Statistic | Replica Count
----------------+---------------
Minimum | 3
First Quartile | 3
Median | 3
Third Quartile | 3
Maximum | 3

Total Count Summary
| Total Count
----------------+-------------
Masters | 3
Tablet Servers | 3
Tables | 3
Tablets | 3
Replicas | 9

3、获取kudu集群master机器的UUID

./kudu local_replica cmeta print_replica_uuids --fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master  00000000000000000000000000000000 2>/dev/null

命令执行结果:
0ad919b7c68049a3bcf46abc029da8f6 909d4c97d0b948c6902e40f6968a3b8b 739298ec62504f898a71d4f6b92f908e

注释:
--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master:该参数是kudu集群部署时候你指定的数据和日志路径,具体可在master.gflagfile文件查看
00000000000000000000000000000000 :固定参数

4、在kudu的WEBUI界面确认自己需要迁移的master节点的UUID

5、迁移的机器的UUID

909d4c97d0b948c6902e40f6968a3b8b

6、在新增的kudu_master机器,把--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master 这两个路径下的master目录干掉,没什么用

7、重新格式化--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master 这个新增机器的数据目录

./kudu fs format --fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master --uuid=909d4c97d0b948c6902e40f6968a3b8b

注释:
--uuid:需要迁移的kudu_master节点机器的UUID,第5步,你已经确认你需要迁移的机器了
--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master:这两个路径配置,上面已经说过了是数据和日志相关的路径配置,新增机器的配置维持原样

8、现在从正常的、存活的kudu_master节点复制一份完成数据到这个新增的机器上

./kudu local_replica copy_from_remote --fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master  00000000000000000000000000000000 hxb06:7051

注释:
--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master:数据和日志相关配置目录,不要随意修改,按照你自己之前的配置来
00000000000000000000000000000000:固定参数
hxb06:7051:正常的、存活的kudu_master节点,之前准备迁移的那一台kudu_master机器已经停掉,这一步执行最好选择是kudu_master服务的LEADER角色

9、拷贝完之后,修改配置文件master.gflagfile、tserver.gflagfile

--master_addresses=172.16.100.1:7051,172.16.100.2:7051,172.16.100.4:7051(这一台是新增上来的机器)

10、每一台kudu_master节点执行,刷新当前kudu_master集群配置

./kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master 00000000000000000000000000000000 909d4c97d0b948c6902e40f6968a3b8b:172.16.100.179:7051 0ad919b7c68049a3bcf46abc029da8f6:172.16.100.249:7051 739298ec62504f898a71d4f6b92f908e:172.16.101.230:7051

注释:
--fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master:老生常谈,这两个路径是你数据和日志相关路径
00000000000000000000000000000000:固定参数
909d4c97d0b948c6902e40f6968a3b8b  kudu_master机器的UUID(这个UUID,你去WEBUI界面上看,现在活着的kudu_master的UUID是什么,千万不要写错,kudu_master迁移完全依赖机器的UUID)

11、kudu_tserver服务和数据迁移

经查阅官网资料,kudu官网提供kudu cluster rebalance工具和自主恢复机制两种方式进行kudu_tserver节点的永久移除,考虑到该工具使用牵扯到gcc编译和版本要求,再者考虑到数据量并不是很大,故采用kudu集群自主迁移恢复机制进行kudu_tserver数据迁移,本地测试超过两次,均未造成数据丢失,操作比较简单

注释:
如果你想试一下balance工具,参考官网地址:
https://kudu.apache.org/docs/administration.html#tablet_server_decommissioning
https://kudu.apache.org/docs/administration.html#ksck

12、我使用的是kudu集群自主迁移恢复机制

1. 停掉一台需要迁移的kudu_tserver节点,保证活着的kudu_tserver至少三台,因为我的副本数设置的是3,仅仅如此

2.根据自主恢复机制,停机超5分钟后,该机器副本会自动迁移至其他活着的kudu_tserver节点

3. 重启kudu集群各个kudu_master、kudu_tserver服务

4. 使用ksck命令检查集群健康状态是否正常,检查kudu集群WEBUI界面是否已经移除掉迁移的kudu_tserver节点

至此,kudu_master、kudu_tserver服务及数据迁移完成,SOEASY!!!

kudu集群:kudu_master、kudu_tserver服务及数据的迁移(根据官网总结)的更多相关文章

  1. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

  2. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  3. .net core结合Consul集群&Docker实现服务治理

    实战中的asp.net core结合Consul集群&Docker实现服务治理 https://www.cnblogs.com/guolianyu/p/9614050.html 0.目录 整体 ...

  4. 集群/分布式/微服务/SOA 转

    https://www.cnblogs.com/Java3y/p/9479410.html 二.集群/分布式/微服务/SOA是什么? 像我这种技术小白,看到这些词(集群/分布式/微服务/SOA)的时候 ...

  5. web集群和分布式服务以及消息补偿机制几种方案

    一.为什么要集群? 1.JavaEE项目,如果部署在一台Tomcat上,所有的请求,都由这一台服务器处理,存在很大风险: A:并发处理能力有限(一般单台服务器处理的并发量为250左右,超过250,可能 ...

  6. 如何在 Serverless K8s 集群中低成本运行 Spark 数据计算?

    作者 | 柳密 阿里巴巴阿里云智能 ** 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 ...

  7. Prometheus 通过 consul 分布式集群实现自动服务发现

    转载自:https://cloud.tencent.com/developer/article/1611091 1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式, ...

  8. rancher导入k8s集群后添加监控无数据

    1.日志报错 rancher导入k8s集群后添加监控无数据,rancher日志报错: k8s.io/kube-state-metrics/pkg/collectors/builder.go:: Fai ...

  9. Kubernetes 部署集群内部DNS服务

    Kubernetes 部署集群内部DNS服务 部署官网:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/ ...

随机推荐

  1. 优质分享 | Spring Boot 入门到放弃!!!

    持续原创输出,点击上方蓝字关注我 目录 前言 视频目录 如何获取? 总结 前言 最近不知不觉写Spring Boot专栏已经写了九篇文章了,从最底层的项目搭建到源码解析以及高级整合的部分,作者一直在精 ...

  2. spring-boot-route(十三)整合RabbitMQ

    这篇是SpringBoot整合消息队列的第一篇文章,我们详细介绍下消息队列的相关内容. 消息队列简介 1. 什么是消息队列 MQ(Message Quene):通过典型的生产者和消费者模型,生产者不断 ...

  3. linux 中 eclipse 开发 c/c++ 多线程程序,添加 libpthread.a 库支持

    导入头文件 在 linux 中开发多线程程序,在使用到 pthread 系列函数的文件中,需要导入头文件: #include <pthread.h> 链接 libpthread.a 在编译 ...

  4. day23 Pyhton学习 昨日回顾.re模块.序列化模块

    一.昨日回顾 #__file__查看当前文件所在的绝对路径 #time 时间模块 time.time 获取当前时间戳时间 字符串->time.strptime->结构化->mktim ...

  5. 【人人都懂密码学】一篇最易懂的Java密码学入门教程

    密码与我们的生活息息相关,远到国家机密,近到个人账户,我们每天都在跟密码打交道: 那么,密码从何而来?生活中常见的加密是怎么实现的?怎么保证个人信息安全?本文将从这几方面进行浅谈,如有纰漏,敬请各位大 ...

  6. 扫描仪扫描文件处理-Python批量处理

    多进程处理扫描出来的图片,参见: https://github.com/barrer/scan-helper bug问题反馈github提Issues

  7. Lock、Synchronized锁区别解析

    上篇博文在讲解 ConcurrentHashMap 时说到 1.7 中 put 方法实现同步的方式是使用继承了 ReentrantLock 类的 segment 内部类调用 lock 方法实现的,而在 ...

  8. scrapy Request方法

    # -*- coding: utf-8 -*- import scrapy class TestSpider(scrapy.Spider): name = 'test' allowed_domains ...

  9. Linux+Nginx/Apache下的PHP exec函数执行Linux命令

    1.php.ini配置文件 打开PHP的配置文件,里面有一行 disable_function 的值,此处记录了禁止运行的函数,在里面将exec和shell_exec.system等函数删除. 2.权 ...

  10. C#中的SqlBulkCopy批量插入数据

    在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论. 1 /// <summary> 2 /// SqlBulkCopy批量插入数据 3 /// < ...