이전 HBase 버전에서 마이그레이션

자바용 Cloud Bigtable HBase 클라이언트는 Apache HBase 1.0 API 이상을 대상으로 합니다. API 버전 1.0에는 이전 버전의 HBase의 주요 변경 사항이 포함되어 있습니다. HBase에서 Cloud Bigtable로 이전하는 중이며 애플리케이션이 이전 버전의 HBase API를 대상으로 하는 경우 Cloud Bigtable과 호환되도록 애플리케이션을 업데이트해야 합니다.

이 페이지에는 이전에 도움이 되는 HBase 1.0 API의 주요 변경 사항이 요약되어 있습니다.

Connection 인터페이스

HBase 1.0 이상에서는 지원 중단된 HConnection 인터페이스에 의존하는 대신 org.apache.hadoop.hbase.client.ConnectionFactory를 사용해야 합니다. 이 클래스는 새로운 Connection 인터페이스를 구현하는 객체를 만듭니다. ConnectionFactory는 지원 중단된 클래스 ConnectionManagerHConnectionManager를 바꿉니다.

Connection 객체를 만드는 것은 상대적으로 비용이 많이 드는 작업입니다. 프로세스마다 한 개의 Connection 객체를 만들고 필요에 따라 객체를 공유해야 합니다. Connection 객체는 스레드로부터 안전합니다.

또한, 사용이 끝나면 연결을 닫아야 합니다. HBase 1.0 이상 버전에서 연결 수명 주기를 관리할 책임은 애플리케이션에 있습니다.

업데이트된 코드는 다음 예제와 비슷합니다.

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

TableName 클래스

이전 버전의 HBase에서는 테이블을 조작할 때 테이블 이름을 String 또는 byte[] 값으로 지정할 수 있습니다. HBase 1.0 이상에서는 org.apache.hadoop.hbase.TableName 인스턴스를 만들어 테이블 이름을 지정해야 합니다.

String tableName = "MyTable";
    // or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);

Table, BufferedMutator, RegionLocator 인터페이스

HBase 1.0에서는 HTable 클래스가 다음 인터페이스로 바뀌었습니다.

Connection 객체를 사용하여 다음 인터페이스의 인스턴스를 가져옵니다.

Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);

Table, BufferedMutator, RegionLocator 인스턴스는 스레드로부터 안전하지 않습니다. 그러나 이러한 인터페이스는 간단한 객체이므로 필요에 따라 단일 스레드 컨텍스트 내에서 객체를 생성할 수 있습니다.

Admin 인터페이스

HBase 1.0에서는 HBaseAdmin 클래스가 org.apache.hadoop.hbase.client.Admin 인터페이스로 바뀌었습니다. Cloud Bigtable은 유지보수 작업을 자동으로 처리하므로 Admin 인터페이스에서 다수의 메서드가 지원되지 않습니다. 자세한 내용은 HBase와 Cloud Bigtable API의 차이점을 참조하세요.

Connection 객체를 사용하여 Admin 인터페이스의 인스턴스를 가져옵니다.

Admin admin = connection.getAdmin();