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

声明:

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

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. Nginx 配置 http 强制跳转到 https

    个人真实配置 架构:Nginx 反向代理 + Nginx 前端(LNMP) 在 Nginx 反向代理的 虚拟机主机配置文件中,作如下配置: upstream ilexa_cn { server 192 ...

  2. ORA-00018: maximum number of sessions exceeded 超出最大会话数

    ORA-00018: maximum number of sessions exceededORA-00018: 超出最大会话数 Cause:       All session state obje ...

  3. c 判断端口是否已被使用

    isPortOpen.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...

  4. win10 home安装docker快速攻略

    本文适用于win10 Home用户,专业版和企业版直接见官网.win7版本见Docker Toolbox. 安装清单 软件 说明 Docker Desktop Installer 步骤介绍页:http ...

  5. 多测师讲解python函数 _zip_高级讲师肖sir

    # zip函数 #zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存.1.使用zip讲两个列表打印出来的结果是 ...

  6. 【C语言入门学习笔记】如何把C语言程序变成可执行文件!

    环境 在ANSI的任何一种实现中,存在两种不同的环境. 翻译环境:在这个环境里,源代码被转换为可执行的机器指令. 执行环境:用于实际执行代码. 翻译环境 组成一个程序的每个源文件通过编译过程分别转成目 ...

  7. HTML 5标签中<button>的新属性

    <button> 标签HTML5 中的新属性 属性 值 描述 autofocus autofocus 规定当页面加载时按钮应当自动地获得焦点. disabled disabled 规定应该 ...

  8. 反射(Reflection)

    Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...

  9. 解决Django本地接口不能跨域访问的问题

    1.安装django-cors-headers模块: pip install django-cors-headers 2.插入Django的APP配置中: # 修改settings.py中的INSTA ...

  10. 性能测试之JVM的故障排查-堆内存泄漏

    JVM异常说明(超链接) 一文中已介绍了,JVM每个运行时区域--程序计数器 .Java虚拟机栈.本地方法栈.Java堆.方法区.直接内存发生OutOfMemoryError的不同原因和不同错误信息. ...