apache kudu multiple master

  • 시나리오 : master가 하나만 존재하는 과정에서 master를 3개로 증설
  • 작업 영향 : 마스터가 잠시 중단되어야 함.
  • 버전 : apache kudu 1.17

  1. 사전작업 - 테이블생성
create table test_table(
yyyymmdd int not null comment 'yyyymmdd',
ymdhms bigint not null comment 'ymdhms',
student_no int not null comment 'student_no',
primary key (yyyymmdd, ymdhms, student_no)
)
partition by range ( yyyymmdd )
(
partition value = 20220504,
partition value = 20220505
)
stored as kudu
tblproperties
(
'kudu.master_addresses'='kudu-master1:7051',
'kudu.num_tablet_replicas'='3'
);
테이블 샘플
+-------------------------+
| summary                 |
+-------------------------+
| Table has been created. |
+-------------------------+
Fetched 1 row(s) in 0.65s

[root@kudu-master1 ~]# kudu table list kudu-master1;
impala::default.test_table
임팔라에서 테이블을 만들고, 테이블 리스트를 확인한다.

2.  마스터의 uuid를 확인하고 나머지 서버들의 uuid를 확인한다.

[root@kudu-master1 kudu]# kudu fs dump uuid --fs_wal_dir=/home/gold/data/kudu/master
4f1c106e9b554743ac364967cb5227b4

[root@kudu-master2 kudu]# kudu fs format --fs_wal_dir=/home/gold/data/kudu/master
53e12ba47c8c4ef386e8d6927093986e

[root@kudu-master3 kudu]# kudu fs format --fs_wal_dir=/home/gold/data/kudu/master
a45c1ff473f74827814c56a3834f0965

3. 마스터에서아래와 같이 레플리카 설정을 먹인다.

kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/home/gold/data/kudu/master 00000000000000000000000000000000 4f1c106e9b554743ac364967cb5227b4:kudu-master1:7051 53e12ba47c8c4ef386e8d6927093986e:kudu-master2:7051 a45c1ff473f74827814c56a3834f0965:kudu-master3:7051

4. 마스터를 다시 구동한다

systemctl restart kudu-master

5. 나머지 서버에서 아래와 같이 마스터 정보를 복사해온다.

kudu local_replica copy_from_remote --fs_wal_dir=/home/gold/data/kudu/master --fs_data_dirs=/home/gold/data/kudu/master  00000000000000000000000000000000 kudu-master1:7051

6.  나머지 서버들을 실행한다

systemctl start kudu-master

7. 테이블 리스트를 확인하고 기존 테이블을 alter 한다.

[kudu-master1:21050] default> ALTER TABLE test_table
SET TBLPROPERTIES
('kudu.master_addresses' = 'kudu-master1,kudu-master2,kudu-master3');
Query: ALTER TABLE test_table
SET TBLPROPERTIES
('kudu.master_addresses' = 'kudu-master1,kudu-master2,kudu-master3')
+----------------+
| summary        |
+----------------+
| Updated table. |
+----------------+
Fetched 1 row(s) in 0.22s

8. 바뀐 정보를 확인한다.

[kudu-master1:21050] default> show create table test_table
TBLPROPERTIES ('external.table.purge'='TRUE', 'impala.events.catalogServiceId'='53eef207a00d40f8:9a9371a962d39fc9', 'impala.events.catalogVersion'='156', 'kudu.master_addresses'='kudu-master1,kudu-master2,kudu-master3', 'kudu.num_tablet_replicas'='3') 와 같이 바뀌어있으면 성공