为了实现高可用性并避免单点故障,应使用多个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
识别主节点的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为: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检查:
参考文章:
https://kudu.apache.org/docs/administration.html (官网最详细)
https://blog.csdn.net/lynnyq/article/details/102726643
https://my.oschina.net/guol/blog/910297
原文链接:https://blog.csdn.net/wjzholmes/article/details/105294424
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6953