HBase에서 Bigtable로 복제
Cloud Bigtable HBase 복제 라이브러리는 자바용 Cloud Bigtable HBase 클라이언트의 구성요소입니다. 복제 라이브러리를 사용하면 HBase 복제 서비스를 사용하여 HBase 클러스터에서 Bigtable 인스턴스로 데이터를 비동기적으로 복제할 수 있습니다. README 및 소스 코드를 검토하려면 GitHub 저장소를 방문하세요.
사용 사례
- Bigtable로 온라인 마이그레이션 - 기존 HBase 데이터의 오프라인 마이그레이션과 함께 Cloud Bigtable HBase 복제 라이브러리를 사용하여 거의 다운타임 없이 HBase에서 Bigtable로 마이그레이션을 할 수 있습니다.
- 데이터 복구 - HBase 데이터를 오프사이트 Bigtable 인스턴스로 복제하여 예기치 않은 상황에 대비합니다.
- 데이터 세트 중앙화 - 라이브러리를 사용하여 여러 위치에 있는 HBase 클러스터의 데이터를 클러스터 간에 자동으로 처리하는 단일 Bigtable 인스턴스로 복제합니다.
- HBase 사용 공간 확장 - 현재 HBase 위치 이외의 위치에 클러스터가 있는 Bigtable 인스턴스로 복제합니다.
개요
Bigtable HBase 복제 라이브러리는 기본 HBase 복제 서비스를 확장합니다. HBase 클러스터에 작성된 데이터는 표준 HBase 복제가 다른 HBase 클러스터에 데이터를 복사하는 것과 동일한 방식으로 Bigtable 인스턴스에 비동기식으로 복제됩니다. 라이브러리는 소스 HBase 클러스터의 미리 쓰기 로그(WAL)를 사용하여 변형을 Bigtable 인스턴스에 푸시합니다.
전체 HBase 클러스터를 Bigtable에 복제하거나 특정 테이블 또는 column family만 복제할 수 있습니다. 즉, HBase 복제는 클러스터, 테이블 또는 column family 수준에서 사용 설정됩니다.
HBase에서 Bigtable로의 복제는 eventual consistency를 갖게 됩니다.
Bigtable로 마이그레이션
Bigtable HBase 복제 라이브러리를 사용하면 애플리케이션을 일시 중지하지 않고 Bigtable로 마이그레이션할 수 있습니다.
개략적으로 HBase에서 Bigtable로의 온라인 마이그레이션 단계는 다음과 같습니다. 자세한 내용은 README를 참조하세요.
- 시작하기 전에 설정 및 구성 단계를 따르세요.
- HBase 클러스터에서 복제를 사용 설정합니다.
- Bigtable 복제 엔드포인트를 피어로 추가합니다.
- Bigtable 피어를 사용 중지합니다. 이 시점부터 HBase 클러스터의 버퍼에 대한 HBase 쓰기가 수행됩니다.
- 버퍼링이 새 쓰기를 캡처하기 시작하면 오프라인 마이그레이션 가이드에 따라 기존 HBase 데이터의 스냅샷을 마이그레이션하세요.
- 오프라인 마이그레이션이 완료되면 Bigtable 피어를 다시 사용 설정하여 버퍼가 Bigtable에서 쓰기 및 드레이닝을 하도록 합니다.
- 버퍼가 드레이닝되면 애플리케이션을 다시 시작하여 Bigtable에 요청을 보냅니다.
복제 라이브러리 설정 및 구성
Bigtable HBase 복제를 사용하려면 먼저 이 섹션의 태스크를 완료해야 합니다.
인증 구성
복제 라이브러리에 Bigtable에 대한 쓰기 권한이 있는지 확인하려면 서비스 계정 만들기의 단계를 따르세요. 새로 만든 서비스 계정에 roles/bigtable.user 역할을 할당합니다.
그런 다음 전체 HBase 클러스터의 hbase-site.xml
파일에 다음을 추가합니다.
<property>
<name>google.bigtable.auth.json.keyfile</name>
<value>JSON_FILE_PATH</value>
<description>
Service account JSON file to connect to Cloud Bigtable
</description>
</property>
JSON_FILE_PATH
을 다운로드한 JSON 파일의 경로로 바꿉니다.
설정할 수 있는 추가 속성은 HBaseToCloudBigtableReplicationConfiguration을 참조하세요.
대상 인스턴스 및 테이블 만들기
HBase에서 Bigtable로 복제하려면 먼저 Bigtable 인스턴스를 만듭니다. Bigtable 인스턴스에는 다중 기본 방식으로 작동하는 클러스터가 한 개 또는 여러 개 있을 수 있습니다. HBase 복제 서비스의 요청은 Bigtable 인스턴스에서 가장 가까운 클러스터로 라우팅된 다음 인스턴스의 다른 클러스터에 복제됩니다.
Bigtable 대상 테이블의 이름과 column family가 HBase 테이블과 동일해야 합니다. Bigtable 스키마 변환 도구를 사용하여 HBase 테이블과 동일한 스키마로 테이블을 만드는 방법에 대한 단계별 안내는 대상 테이블 만들기를 참조하세요. 복제하는 경우에도 데이터를 가져오는 대신 같은 단계가 수행됩니다.
구성 속성 설정
전체 HBase 클러스터의 hbase-site.xml
에 다음을 추가합니다.
<property>
<name>google.bigtable.project.id</name>
<value>PROJECT_ID</value>
<description>
Cloud Bigtable project ID
</description>
</property>
<property>
<name>google.bigtable.instance.id</name>
<value>INSTANCE_ID</value>
<description>
Cloud Bigtable instance ID
</description>
</property>
<property>
<name>google.bigtable.app_profile.id</name>
<value>APP_PROFILE_ID</value>
<description>
Cloud Bigtable app profile ID
</description>
</property>
다음을 바꿉니다.
PROJECT_ID
: Bigtable 인스턴스가 있는 Google Cloud 프로젝트입니다.INSTANCE_ID
: 데이터를 복제할 Bigtable 인스턴스의 ID입니다.APP_PROFILE_ID
: Bigtable에 연결하는 데 사용할 앱 프로필의 ID입니다.
복제 라이브러리 설치
Bigtable HBase 복제 라이브러리를 사용하려면 HBase 클러스터의 모든 서버에 설치해야 합니다. HBase 버전(1.x 또는 2.x)에 해당하는 복제 라이브러리 버전을 사용합니다.
복제 라이브러리를 가져오려면 HBase 셸에서 다음을 실행합니다.
wget BIGTABLE_HBASE_REPLICATION_URL
BIGTABLE_HBASE_REPLICATION_URL
를 복제 라이브러리의 Maven 저장소에서 사용할 수 있는 종속 항목으로 최신 JAR의 URL로 바꿉니다. 파일 이름은 https://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-hbase-1.x-replication/1.0.0/bigtable-hbase-1.x-replication-1.0.0-jar-with-dependencies.jar
와 유사합니다.
URL을 찾거나 JAR을 수동으로 다운로드하려면 다음을 수행하세요.
- 사용 중인 HBase 버전의 복제 라이브러리 저장소로 이동합니다.
- 최신 버전 번호(예:
1.0.0
)를 클릭합니다. - jar-with-dependencies 파일을 확인합니다(일반적으로 맨 위에 있음).
- 마우스 오른쪽 버튼을 클릭하고 URL을 복사하거나 클릭하여 파일을 다운로드합니다.
Bigtable 피어 추가
HBase에서 Bigtable로 복제하려면 Bigtable 엔드포인트를 복제 피어로 추가해야 합니다.
- HBase 서버를 다시 시작하여 복제 라이브러리가 로드되었는지 확인합니다.
- HBase 셸에서 다음을 실행합니다.
add_peer PEER_ID_NUMBER, ENDPOINT_CLASSNAME =>
'com.google.cloud.bigtable.hbaseHBASE_VERSION_NUMBER_x.replication.HbaseToCloudBigtableReplicationEndpoint`
다음을 바꿉니다.
PEER_ID_NUMBER
: Bigtable 복제 피어의 정수 ID입니다. 일부 테이블만 HBase 복제를 사용 설정하려면add_peer
선택적 매개변수를 사용합니다.HBASE_VERSION_NUMBER
: 사용 중인 HBase 버전 수입니다. HBase 1.x에는1
, HBase 2.x에는2
를 사용합니다. (HBase 3.x는 지원되지 않습니다.)