天天看点

KuduMaster 多节点配置

为了实现高可用性并避免单点故障,应使用多个master服务器创建Kudu集群。以下将介绍现有单master节点集群如何迁移到3个master主节点配置。请注意,主节点数量必须为奇数(建议为3或者5个)。

以下示例中:主节点Namenode01为Kudu master主节点,配置Namenode02和Datanode01为master节点。

1.停止Kudu服务

  建立维护时段(一个小时应该足够)。在此期间,Kudu群集将不可用。

2.获取现有master的uuid

CDH安装的kudu,可以从配置项里查看到KUDU主节点的预写日志(WAL)和数据的目录为:/data/kudu_master_wal和/data/kudu_master_data

KuduMaster 多节点配置

识别主节点的UUID,可以使用以下命令获取

sudo -u kudu kudu fs dump uuid --fs_wal_dir=/data/kudu_master_wal --fs_data_dirs=/data/kudu_master_data 2>/dev/null
           
KuduMaster 多节点配置

查询到主节点的uuid为:d92208f4d4cf4a9ab53b1fe29902b927

3.新增Kudu Master角色,并获取UUID

CM中新增加master角色,但不启动。

停止所有Kudu进程。

在新增加的kudu master节点上手动创建fs_wal_dir和fs_data_dirs目录。

格式化每台新主计算机上的数据目录,并记录生成的UUID。

具体操作如下:

  • 新增加的预写日志(WAL)和数据的目录,设置为和原主节点相同的目录路径,并设置kudu权限
mkdir –p /data/kudu_master_wal  && mkdir /data/kudu_master_data && chown -R kudu:kudu /data/kudu_master_wal && chown -R kudu:kudu //data/kudu_master_data && chmod 700 /data/kudu_master_wal && chmod 700 /data/kudu_master_data
           
  • 格式化新节点的数据目录
sudo -u kudu kudu fs format --fs_wal_dir=/data/kudu_master_wal --fs_data_dirs=/data/kudu_master_data
           

查询两个新节点的uuid

sudo -u kudu kudu fs dump uuid --fs_wal_dir=/data/kudu_master_wal --fs_data_dirs=/data/kudu_master_data 2>/dev/null
           

新节点的uuid为:a34f3c1e30794996b9eb95f39b68bfb7  c8dc52fbdea4406793f8eb6b431aa27e

4. 在现有主节点重写Raft配置,更新master list

其中为uuid:集群中的主机名:7051这样的形式,如下 

sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/data/kudu_master_wal --fs_data_dirs=/data/kudu_master_data 00000000000000000000000000000000 d92208f4d4cf4a9ab53b1fe29902b927:Namenode01:7051 a34f3c1e30794996b9eb95f39b68bfb7:Namenode02:7051 c8dc52fbdea4406793f8eb6b431aa27e:Datanode01:7051
           

5. CM上启动新增的Kudu Master主机

6. 将主数据复制到每个新Master服务器,在每台新主服务器上执行

sudo -u kudu kudu local_replica copy_from_remote --fs_wal_dir=/data/kudu_master_wal --fs_data_dirs=/data/kudu_master_data 00000000000000000000000000000000 Namenode01:7051
           

7. 启动所有新添加的Kudu Master

8. 更新HMS数据库

,请在为HMS提供存储的基础数据库中手动更新HMS数据库

若具有从Impala访问的Kudu表,但未设置DNS别名,需要手动更新Hive Metastore(HMS)元数据库中的kudu主节点地址。

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

UPDATE TABLE_PARAMS
SET PARAM_VALUE =
  'Namenode01,Namenode02,Datanode01'
WHERE PARAM_KEY = 'kudu.master_addresses' AND PARAM_VALUE = 'Namenode01'
           

更改HMS数据库后,在impala-shell中更新一下:

INVALIDATE METADATA;
           

9. 验证是否生效

要验证所有主节点是否正常工作,请执行以下完整性检查

使用浏览器访问kudu 的 Web UI。查看

/masters

 页面。所有主节点都应该列在那里,其中一个是LEADER角色,其他的是FOLLOWER角色,而且每个主节点的数据应该是相同的。

CM中运行kudu检查:

KuduMaster 多节点配置

参考文章:

https://kudu.apache.org/docs/administration.html   (官网最详细)

https://blog.csdn.net/lynnyq/article/details/102726643

https://zturn.cc/?p=246

https://my.oschina.net/guol/blog/910297 

继续阅读