kudu添加master高可用

时间:2024-03-20 10:11:28

业务需求:

         目前大数据生产环境kudu组件只有一个master实例,如出现问题会出现单点故障,需要配置多个master实例,保证kudu服务能够实现高可用。

实现步骤:

  1. 添加两台master组件,不要启动,并停止所有组件。

kudu添加master高可用

  1. 创建master所需要的文件夹fs_wal_dir、fs_data_dirs并赋予权限(与上面cm界面配置的路径要相同)。

mkdir -p /kudu/master/fs_wal_dir && mkdir -p /kudu/master/fs_data_dirs && chown -R kudu:kudu /kudu/master/fs_wal_dir && chown -R kudu:kudu /kudu/master/fs_data_dirs && chmod 700 /kudu/master/fs_wal_dir && chmod 700 /kudu/master/fs_data_dirs

 

  1. 格式化每台新主计算机上的数据目录,并记录生成的UUID(新增加的master全部执行uuid,不对原有master主机格式化)。

$ sudo -u kudu kudu fs format --fs_wal_dir=<master_wal_dir> fs_data_dirs=<master_data_dir

$ sudo -u kudu kudu fs dump uuid --fs_wal_dir=<master_wal_dir> fs_data_dirs=<master_data_dir 2>/dev/null

下图UUID为:22aac4……4c462

kudu添加master高可用

 

  1. 使用在原有主机上执行的以下命令重写主机的Raft配置。

sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] <tablet_id> <all_masters>

master_data_dir:

现有母版以前记录的数据目录

tablet_id:

必须是字符串 00000000000000000000000000000000

all_masters:

以空格分隔的母版列表,包括新的和现有的。列表中的每个条目都必须是以下形式的字符串:<uuid>:<hostname>:<port>

Uuid:

         上面记录的每台机器的uuid

kudu添加master高可用

  1. CM上启动原有Kudu Master主机。

kudu添加master高可用

  1. 使用在每台新主计算机上执行的以下命令,将主数据复制到每个新主计算机上。

$ sudo -u kudu kudu local_replica copy_from_remote --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] <tablet_id> <existing_master>

master_data_dir:

新主人以前记录的数据目录

tablet_id:

必须是字符串 00000000000000000000000000000000

existing_master:

现有主机的RPC地址,并且必须是以下格式的字符串 <hostname>:<port>

kudu添加master高可用

  1. CM上启动所有Kudu Master主机。

kudu添加master高可用

  1. 如果您具有从Impala访问的Kudu表,但未设置DNS别名,请在为HMS提供存储的基础数据库中手动更新HMS数据库。

以下是应在HMS数据库中运行的示例SQL语句:

UPDATE TABLE_PARAMS

SET PARAM_VALUE =

                 'master-1.example.com,master-2.example.com,master-3.example.com'

WHERE PARAM_KEY = 'kudu.master_addresses' AND PARAM_VALUE = 'old-master';

在中impala-shell,运行:

INVALIDATE METADATA;

kudu添加master高可用

  1. 验证迁移是否成功。

使用浏览器,访问每个主服务器的Web UI。查看/ masters页面。应列出所有组件,其中一个组件的角色为LEADER,另一个为FOLLOWER角色,每个masters内​​容应相同,并在cm界面kill一个master的LEADER节点,其他master为LEADER则表示迁移成功。kudu添加master高可用

 CM kudu主界面上执行 run kudu ksck

kudu添加master高可用

参考:https://blog.csdn.net/lynnyq/article/details/102726643与https://kudu.apache.org/docs/administration.html