연결 객체 만들기

Java용 Cloud Bigtable HBase 클라이언트를 사용하여 Bigtable에 연결하려면 구성 속성을 설정한 다음 Connection 객체를 만들어야 합니다. Connection 객체를 만들 때는 많은 작업이 필요하므로 가능한 한 적은 수의 객체를 만듭니다.

  • 복제를 사용하거나 앱 프로필을 사용하여 인스턴스로 보내는 여러 유형의 트래픽을 식별하는 경우 앱 프로필 당 하나의 Connection 객체를 만들고 애플리케이션의 스레드 간에 객체를 공유합니다.
  • 복제 또는 앱 프로필을 사용하지 않는 경우 단일 Connection 객체를 만들고 이를 애플리케이션의 스레드 간에 공유합니다.

Connection 객체의 구성 설정을 지정하는 몇 가지 방법이 있습니다.

  • 코드에 설정을 포함합니다. 함수마다 별도의 앱 프로필을 사용하여 여러 함수를 실행하는 경우와 같이 애플리케이션에서 여러 앱 프로필을 사용하는 경우 이 옵션을 사용해야 합니다.

    애플리케이션의 코드에 구성 설정을 유지하려는 경우나 외부 구성 파일을 애플리케이션에 리소스로 포함하는 것이 실용적이지 않은 경우에도 이 옵션을 사용할 수 있습니다.

  • hbase-site.xml 파일을 사용하여 설정을 저장합니다. 애플리케이션에서 HBase와 Bigtable을 모두 사용하는 경우나 독립형 파일에 Bigtable 구성 설정을 유지하려는 경우 이 옵션을 사용합니다.

다음 섹션에서는 Connection 객체를 구성하고 만드는 각 방법을 설명합니다.

코드에 설정 포함하기

다음 예는 자체 애플리케이션에서 Connection 객체를 만드는 방법을 보여줍니다. 아래에서 [VALUES_IN_BRACKETS]를 인스턴스에 적합한 값으로 바꿉니다.

package com.example.helloworld;

import com.google.cloud.bigtable.hbase.BigtableConfiguration;
import com.google.cloud.bigtable.hbase.BigtableOptionsFactory;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;

public class BigtableHelper {
  private static final String PROJECT_ID = "[YOUR_PROJECT_ID]";
  private static final String INSTANCE_ID = "[YOUR_INSTANCE_ID]";
  // Include the following line if you are using app profiles.
  // If you do not include the following line, the connection uses the
  // default app profile.
  private static final STRING APP_PROFILE_ID = "[YOUR_APP_PROFILE_ID]";

  private static Connection connection = null;

  public static void connect() throws IOException {
    Configuration config = BigtableConfiguration.configure(PROJECT_ID, INSTANCE_ID);
    // Include the following line if you are using app profiles.
    // If you do not include the following line, the connection uses the
    // default app profile.
    config.set(BigtableOptionsFactory.APP_PROFILE_ID_KEY, APP_PROFILE_ID);

    connection = BigtableConfiguration.connect(config);
  }
}

hbase-site.xml 파일 사용하기

이 섹션에서는 hbase-site.xml 파일에 구성 설정을 포함하여 Connection 객체를 만드는 방법을 설명합니다.

샘플 코드

다음 예는 자체 애플리케이션에서 Connection 객체를 구성하고 만드는 방법을 보여줍니다.

package com.example.helloworld;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class BigtableHelper {
  private static Connection connection = null;

  public static void connect() throws IOException {
    Configuration config = HBaseConfiguration.create();
    connection = ConnectionFactory.createConnection(config);
  }
}

JAR 파일의 리소스에는 별도의 hbase-site.xml 파일이 포함되어 있습니다. Configuration 객체를 만들면 자바용 Cloud Bigtable HBase 클라이언트가 자동으로 hbase-site.xml 파일에서 설정을 읽습니다.

다음 섹션에서는 애플리케이션에서 이 방식을 구현하는 방법을 설명합니다.

hbase-site.xml 파일 만들기

프로젝트의 src/main/resources 디렉터리에서 hbase-site.xml이라는 파일을 만듭니다. 다음 예에 표시된 모든 속성이 파일에 포함되어야 합니다. 아래에서 [VALUES_IN_BRACKETS]를 인스턴스에 적합한 값으로 바꿉니다.

<configuration>
  <property>
    <name>hbase.client.connection.impl</name>
    <value>com.google.cloud.bigtable.hbase1_x.BigtableConnection</value>
  </property>
  <property>
    <name>google.bigtable.project.id</name>
    <value>[YOUR_PROJECT_ID]</value>
  </property>
  <property>
    <name>google.bigtable.instance.id</name>
    <value>[YOUR_INSTANCE_ID]</value>
  </property>
  <!--
    Include the following property if you are using app profiles.
    If you do not include the following property, the connection uses the
    default app profile.
  -->
  <property>
    <name>google.bigtable.app_profile.id</name>
    <value>[YOUR_APP_PROFILE_ID]</value>
  </property>
</configuration>

JAR 파일에 hbase-site.xml 추가하기

hbase-site.xml 파일을 만든 후에는 프로젝트의 JAR 파일에 src/main/resources 디렉터리를 포함하도록 빌드 스크립트를 업데이트해야 합니다.

Maven을 사용하는 경우 pom.xml 파일의 <build> 요소를 수정하여 리소스를 JAR 파일에 복사합니다.

<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

Connection 객체 만들기

이제 코드를 업데이트하여 Configuration 객체를 만들 수 있습니다. 이 객체를 만들면 자바용 Cloud Bigtable HBase 클라이언트가 자동으로 hbase-site.xml 파일에서 설정을 읽습니다. 그런 다음 이러한 설정을 사용하여 Connection 객체를 만들 수 있습니다.

Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);

다음 단계