(1)停止当前kudu组件运行。
(2)HA主节点个数
启用3个主节点做HA即可。
(3)获取当前master节点的UUID
找到主节点的预写日志(WAL)和数据的目录。
如果使用Kudu系统软件包,它们的默认位置是/var/lib/kudu/master,但可以通过fs_wal_dir和fs_data_dirs配置参数自定义它们。我本地都是/data/hadoop/kudu/master。
查询当前master节点的UUID:
sudo -u kudu kudu fs dump uuid --fs_wal_dir=/data/hadoop/kudu/master --fs_data_dirs=/data/hadoop/kudu/master 2>/dev/null
当前master主节点UUID: bf496736add24e21ac71aa1eb7bbd524
(4)在CM中,新增2个kudu master节点角色。
(5)停止所有kudu组件实例。
(6)在另外两台新增master的节点上创建kudu目录。
rm -rf /data/hadoop/kudu/master/*
mkdir -p /data/hadoop/kudu/master && mkdir -p /data/hadoop/kudu/master && chown -R kudu:kudu /data/hadoop/kudu/master && chown -R kudu:kudu /data/hadoop/kudu/master && chmod 700 /data/hadoop/kudu/master && chmod 700 /data/hadoop/kudu/master
(7)在另外两台新增master的节点上格式化kudu。
sudo -u kudu kudu fs format --fs_wal_dir=/data/hadoop/kudu/master --fs_data_dirs=/data/hadoop/kudu/master
(8)在另外两台新增master的节点上生成新的UUID。
sudo -u kudu kudu fs dump uuid --fs_wal_dir=/data/hadoop/kudu/master --fs_data_dirs=/data/hadoop/kudu/master 2>/dev/null
新增的第一台UUID: c5127258763d4942bcc54e83361133c6
新增的第二台UUID: cf462a57bfa647b69e799484ad1aca39
(9)在旧master节点上更新UUID。
- master_data_dir 旧的主节点的数据目录
- tablet_id 必须使用以下字段串值 00000000000000000000000000000000
- all_masters 以空格分隔的主节点参数,其中包括新旧的。列表中的每个条目都必须是 <uuid>:<hostname>:<port>形式的字符串
- uuid 前面命令生成的主节点 uuid
- hostname 主节点所在服务器的主机名(特别注意的是,我这里必须带域名.localdomain,不然会报错,主节点起不来)
- port 主节点 RPC 端口
sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/data/hadoop/kudu/master --fs_data_dirs=/data/hadoop/kudu/master 00000000000000000000000000000000 bf496736add24e21ac71aa1eb7bbd524:x7.localdomain:7051 c5127258763d4942bcc54e83361133c6:x8.localdomain:7051 cf462a57bfa647b69e799484ad1aca39:x9.localdomain:7051
(10)CM上启动现有Kudu Master主节点。
(11)复制现有主节点上的数据到新节点上(2个新节点分别执行)。
sudo -u kudu kudu local_replica copy_from_remote --fs_wal_dir=/data/hadoop/kudu/master --fs_data_dirs=/data/hadoop/kudu/master 00000000000000000000000000000000 x7.localdomain:7051
(12)启动新增的2个kudu master节点。
(13)更新impala元数据。(这个也许不好使,hive中提示没有TABLE_PARAMS表,这个时候无法更新impala中的kudu表,连接impala操作已有的kudu表时会报错,直接删除impala中的kudu表,其实是kudu表映射关系,然后重建映射就可以了)
UPDATE TABLE_PARAMS
SET PARAM_VALUE =
'x.x.x.xx7,x.x.x.xx8,x.x.x.xx9'
WHERE PARAM_KEY = 'kudu.master_addresses' AND PARAM_VALUE = 'x.x.x.xx7';
(14)kudu webui上查证是否启用HA成功。
3个master节点上,一个leader主节点,两个follower从节点,则说明HA启用成功。