기술_Kudu

백업 및 복원

구일칠구 2022. 7. 7. 08:56

논리적 백업 및 복원

Kudu 1.10.0부터 Kudu는 Apache Spark를 사용하여 구현 된 작업을 통해 전체 및 증분 테이블 백업을 모두 지원합니다. 또한 Apache Spark를 사용하여 구현 된 복원 작업을 통해 전체 및 증분 백업에서 테이블 복원을 지원합니다.

Kudu 백업 및 복원 작업에서 Apache Spark를 사용하는 경우 Spark 설명서 에 따라 Apache Spark가 환경에 설치되어 있는지 확인 합니다 . 또한 애플리케이션 제출에 대한 Apache Spark 문서를 검토하십시오 .

테이블 백업

하나 이상의 Kudu 테이블을 백업하려면 KuduBackupSpark 작업을 사용할 수 있습니다. 테이블에 대한 작업이 처음 실행되면 전체 백업이 실행됩니다. 추가 실행은 초기 전체 백업 이후 변경된 행만 포함하는 증분 백업을 수행합니다. --forceFull플래그를 백업 작업 에 전달하여 언제든지 새로운 전체 백업 세트를 강제 할 수 있습니다 .

백업을 수행 할 때 사용되는 일반적인 플래그는 다음과 같습니다.

  • --rootPath: 백업 데이터를 출력 할 루트 경로입니다. Spark 호환 경로를 허용합니다.
    • 에서 사용되는 디렉토리 구조는 백업 디렉토리 구조 참조하십시오 rootPath.
  • --kuduMasterAddresses: Kudu 마스터의 쉼표로 구분 된 주소입니다. 기본값 : localhost
  • <table>…​: 백업 할 테이블 목록입니다.

참고 : 언제든지 --help플래그 를 전달하여 전체 작업 옵션 목록을 볼 수 있습니다 .

다음은 KuduBackup테이블 foo과 barHDFS 디렉토리를 백업 하는 작업 실행 의 전체 예입니다 kudu-backups.

spark-submit --class org.apache.kudu.backup.KuduBackup kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath hdfs:///kudu-backups \ foo bar

백업에서 테이블 복원

하나 이상의 Kudu 테이블을 복원하려면 KuduRestoreSpark 작업을 사용할 수 있습니다. 백업 된 각 테이블에 대해 KuduRestore작업은 전체 테이블 상태가 복원 될 때까지 전체 백업 및 연관된 각 증분 백업을 복원합니다. 백업이 백업 메타 데이터 from_ms및 to_ms필드를 통해 연결되기 때문에 전체 일련의 전체 및 증분 백업을 복원 할 수 있습니다 . 기본적으로 복원 작업은 백업 된 테이블과 이름이 같은 테이블을 만듭니다. 기존 테이블에 영향을주지 않고 테이블을 사이드로드하려는 경우 전달 --tableSuffix하여 복원 된 각 테이블에 접미사를 추가 할 수 있습니다 .

복원 할 때 사용되는 일반적인 플래그는 다음과 같습니다.

  • --rootPath: 백업 데이터의 루트 경로입니다. Spark 호환 경로를 허용합니다.
    • 에서 사용되는 디렉토리 구조는 백업 디렉토리 구조 참조하십시오 rootPath.
  • --kuduMasterAddresses: Kudu 마스터의 쉼표로 구분 된 주소입니다. 기본:localhost
  • --createTables:로 설정 true하면 복원 프로세스가 테이블을 생성합니다. false대상 테이블이 이미있는 경우로 설정 합니다. 기본값 : true.
  • --tableSuffix: 설정된 경우 복원 된 테이블 이름에 추가 할 접미사입니다. 경우에만 사용 createTables입니다 true.
  • --timestampMs: 복원 후보를 선택할 때 사용할 최신 시간을 정의하는 UNIX 타임 스탬프 (밀리 초)입니다. 기본:System.currentTimeMillis()
  • <table>…​: 복원 할 테이블 목록입니다.

참고 : 언제든지 --help플래그 를 전달하여 전체 작업 옵션 목록을 볼 수 있습니다 .

다음은 전체 예제 KuduRestore테이블 복원 작업 실행 foo및 barHDFS 디렉토리는 kudu-backups:

spark-submit --class org.apache.kudu.backup.KuduRestore kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath hdfs:///kudu-backups \ foo bar

백업 도구

backup-tools일부 백업 탐색 및 가비지 수집 기능을 제공하기 위해 추가 jar를 사용할 수 있습니다. 이 jar는 Spark를 직접 사용하지 않지만 대신 Hadoop 클래스 경로 만 실행하면됩니다.

명령어 :

  • list: rootPath에있는 백업을 나열합니다.
  • clean: rootPath에서 오래된 백업 데이터를 정리합니다.

참고 : --help플래그 를 전달하면 언제든지 명령 옵션의 전체 목록을 볼 수 있습니다 .

다음은 명령 옵션을 인쇄하는 예제 실행입니다.

java -cp $(hadoop classpath):kudu-backup-tools-1.10.0.jar org.apache.kudu.backup.KuduBackupCLI --help

백업 디렉토리 구조

의 백업 디렉토리 구조 rootPath는 내부 세부 사항으로 간주되며 향후 Kudu 버전에서 변경 될 수 있습니다. 또한 데이터 및 메타 데이터 파일의 형식과 내용은 백업 및 복원 프로세스 전용이며 향후 Kudu 버전에서 변경 될 수 있습니다. 즉, 백업의 구조 rootPath와 사용 방법을 이해 하는 것은 Kudu 백업을 사용할 때 유용 할 수 있습니다.

의 백업 디렉토리 구조 rootPath는 다음과 같습니다.

/<rootPath>/<tableId>-<tableName>/<backup-id>/ .kudu-metadata.json part-*.<format>

  • rootPath: 별도의 백업 그룹, 작업 또는 문제를 구분하는 데 사용할 수 있습니다.
  • tableId: 백업중인 테이블의 고유 한 내부 ID입니다.
  • tableName: 백업중인 테이블의 이름입니다.
    • 참고 : 테이블 이름은 경로 지정 문제를 방지하기 위해 URL로 인코딩됩니다.
  • backup-id: 단일 백업 실행에 대한 데이터를 고유하게 식별 / 그룹화하는 방법입니다.
  • .kudu-metadata.json: 테이블 재생성, 시간별 백업 연결, 데이터 형식 변경 처리를 지원하는 모든 메타 데이터를 포함합니다.
    • 실패한 백업에 메타 데이터 파일이없고 복원시 또는 백업 연결시 고려되지 않도록 마지막으로 작성됩니다.
  • part-*.<format>: 테이블 데이터를 포함하는 데이터 파일입니다.
    • 현재 Kudu 파티션 당 1 개의 파트 파일.
    • 증분 백업에는 끝에 추가 "RowAction"바이트 열이 포함됩니다.
    • 현재 유일하게 지원되는 형식 / 접미사는 parquet

'기술_Kudu' 카테고리의 다른 글

다중 마스터 배포의 죽은 마스터에서 복구  (0) 2022.07.07
전체 노드의 물리적 백업  (0) 2022.07.07
랙 인식  (0) 2022.07.07
Apache Must 관리  (0) 2022.07.07
테이블 삭제  (0) 2022.07.06