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

声明:

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

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. RHSA-2017:1842-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权、代码执行)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  2. 踩坑 Pycharm 2020.1.1 安装/ JetBrains破解/ anacode配置

    引言 网上的办法试了很多,通常不能解决问题,还会引发一些负效应,选取了一个试了两天终于成功的方案记录一下备用. Pycharm安装 https://www.jetbrains.com/pycharm/ ...

  3. AMBuild

    什么是AMBuild? AMBuild是构建软件项目和创建发布包的工具.它是针对C++项目的,当然也可以用于其它任何语言的项目,它主要针对解决大多数构建工具所解决不了的三个大问题: 1.准确性:不需要 ...

  4. 空间视频和GIS

    摘要. GIS的空间数据基本单位表示通常是根据 点,线和面.但是,另一种类型的空间数据正在变得越来越频繁 捕获的是视频,但在GIS中却被很大程度上忽略了.数字录像时 是现代社会中常见的一种媒介,包含多 ...

  5. JVM系列【2】Class文件结构

    JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 如何查看class字节码文件 在idea中可以通过插件BinEd来查看二进 ...

  6. java基础知识总结(续写)

    1.两个容易搞混的C盘文件夹 文件名 描述 Progrm Files 默认存储的64位软件 Progrm Files(x86) 默认存储32位软件 2.常用基础DOS命令(Windows+R打开命令) ...

  7. echo输出彩色文字

    开启转义功能 echo -e表示开启转义功能,比如: 彩色文字语法 echo -e "\e[前景;背景;特效m""hello""\e[0m" ...

  8. sync.WaitGroup的使用以及坑

    all goroutines are asleep - deadlock 简单使用: package main import ( "sync" ) type httpPkg str ...

  9. scrapy-下载器中间件 随机切换user_agent

    from faker import Faker class MySpiderMiddleware(object): def __init__(self): self.fake = Faker() de ...

  10. RocketMQ扫盲篇

    本篇博客主要参考: <浅入浅出>-RocketMQ 敖丙 APACHE-RocketMQ Gitee RocketMQ官方文档 RocketMQ 实战与进阶 GitChat 又是好久没有写 ...