HBase는 다음을 사용하여 테이블을 생성합니다. Java API 및 셸 예

⚡ 스마트 요약

HBase는 데이터를 테이블에 저장하며, 이러한 테이블은 두 가지 방법으로 생성하고 관리할 수 있습니다. 하나는 HBase를 통해, 다른 하나는 HBase를 통해 관리하는 것입니다. Java HTable을 사용하는 APIDescript또는 HBaseAdmin을 사용하거나 HBase 셸에서 create 명령을 직접 사용하여 생성할 수 있습니다.

  • Java API : HTable을 사용하여 코드에서 테이블을 생성합니다.Descript또는 HColumnDescript또는, HBaseAdmin.
  • 🐚 셸 생성: create 명령은 이름과 하나 이상의 컬럼 패밀리를 사용하여 테이블을 생성합니다.
  • 🧬 컬럼 패밀리: 모든 테이블에는 테이블 생성 시 정의되는 최소 하나 이상의 컬럼 패밀리가 필요합니다.
  • 🔧 테이블 수정: alter 명령은 컬럼 패밀리를 추가하거나, 버전을 설정하거나, 테이블 범위 속성을 변경합니다.
  • 🗑️ 테이블 수명 주기: 테이블을 수정하거나 삭제하기 전에 비활성화한 다음, 쓰기 작업을 재개하려면 다시 활성화하십시오.
  • 🤖 AI 지원: AI 비서는 명령어를 작성, 생성, 수정 및 삭제하고 컬럼 패밀리 설계를 검토합니다.

HBase 테이블 생성 Java API 및 셸 명령 예제

HBase에서 테이블을 생성하는 방법 Java API

HBase에서 테이블은 두 가지 방법으로 생성할 수 있습니다. 하나는 직접 생성하는 방식이고, 다른 하나는 직접 생성하는 방식입니다. Java API 및 HBase 셸을 통한 접근 방법을 다룹니다. 이 섹션에서는 다음 내용을 설명합니다. Java API는 애플리케이션이 더 큰 작업의 일부로 테이블을 생성하고 데이터를 프로그래밍 방식으로 로드할 수 있도록 해줍니다.

을 통하여 Java API를 사용하면 HBase에서 테이블을 생성하고 다음을 사용하여 테이블에 데이터를 로드할 수도 있습니다. Java 코딩. 여기서 우리가 설정한 두 가지는 다음과 같습니다.

  • 다음을 통해 HBase와 연결 설정 Java API.
  • 사용 Eclipse 을 통한 Java 코딩, 디버깅 및 테스트.

다음은 HBase에서 테이블을 생성하는 단계입니다. Java API.

1단계) 만들기 Java 프로젝트 Eclipse

이 단계에서는 Java ~에있는 프로젝트 Eclipse HBase 연결의 이름은 "HbaseConnection"입니다.

새 Java 아래 프로젝트 대화 상자는 "HbaseConnection" 프로젝트가 설정되는 과정을 보여줍니다.

Eclipse 새 소식 Java HbaseConnection 프로젝트를 생성하는 프로젝트 대화 상자 JavaSE-1.7 환경

위 스크린샷을 살펴보면 다음과 같습니다.

  • 이 칸에 프로젝트 이름을 입력하세요. 저희의 경우 프로젝트 이름은 "HbaseConnection"입니다.
  • 기본 저장 위치를 ​​지정하려면 이 확인란을 선택하십시오. 여기서 경로는 /home/hduser/work/HbaseConnection입니다.
  • 해당되는 항목에 체크하세요 Java 여기 환경입니다. 이 경우 JavaSE-1.7은 Java 판.
  • 파일을 저장할 위치를 선택하세요. 저희의 경우, 두 번째 옵션인 "소스 파일과 클래스 파일을 위한 별도 폴더 생성"을 선택했습니다.
  • 마침 버튼을 클릭하면 "HbaseConnection" 프로젝트가 생성됩니다. Eclipse 그리고 열립니다 Eclipse 홈 페이지.

2단계) 빌드 경로를 구성합니다. Eclipse

에 Eclipse 홈페이지에서 다음 단계를 따라 빌드 경로 구성을 여세요.

Right click on project -> Select Build Path -> Configure build path

아래 스크린샷은 빌드 경로 구성을 열기 위해 사용되는 마우스 오른쪽 클릭 메뉴를 보여줍니다.

Eclipse 프로젝트 마우스 오른쪽 클릭 메뉴에서 빌드 경로를 선택한 다음 빌드 경로 구성을 선택합니다.

위 스크린샷에서:

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.
  • 빌드 경로를 선택하세요.
  • 빌드 경로 구성을 선택하세요.

빌드 경로 구성을 클릭하면 아래 스크린샷과 같은 새 창이 열립니다. 라이브러리 탭에서 HBase 및 Hadoop JAR 파일을 프로젝트에 추가합니다.

Eclipse Java 빌드 경로 라이브러리 탭에서 외부 HBase 및 Hadoop JAR 파일을 추가합니다.

이 단계에서는 관련 HBase JAR 파일을 추가합니다. Java 스크린샷에 표시된 것과 같은 프로젝트입니다.

  • 추가해야 할 중요한 JAR 파일: hbase-0.94.8.jar 및 hadoop-core-1.1.2.jar.
  • 라이브러리 탭으로 이동하세요.
  • '외부 JAR 추가' 옵션을 누르세요.
  • 필요한 중요 JAR 파일을 선택하십시오.
  • 완료 버튼을 눌러 이 파일들을 "src"에 추가하세요. Java 라이브러리 관련 프로젝트입니다.

JAR 파일을 추가하면 아래와 같이 프로젝트의 "src" 위치에 나타납니다.

Eclipse 프로젝트 탐색기에서 프로젝트 소스 아래에 추가된 HBase 및 Hadoop JAR 파일을 보여줍니다.

프로젝트에 포함된 모든 JAR 파일은 이제 하둡 생태계에서 사용할 준비가 되었습니다.

3단계) ​​HBase 연결 설정

이 단계에서는 HBaseConnection.java를 사용하여 HBase 연결을 설정합니다. Java 코딩.

에 Eclipse 상단 메뉴에서 실행하세요 Java 아래와 같이 프로그램을 실행하세요: 실행 -> 다른 이름으로 실행 -> Java 응용 프로그램. 아래 메뉴는 실행 중인 프로그램을 보여줍니다.

Eclipse 다음으로 실행 Java HBaseConnection 프로그램을 실행하는 애플리케이션 메뉴

  • 실행을 선택하세요.
  • 실행 옵션을 선택하세요 Java 신청.
  • 이 코드는 HBase와의 연결을 설정합니다. Java API.
  • 이 코드를 실행하면 HBase에 "guru99" 테이블이 생성되고, "education"과 "projects"라는 두 개의 컬럼 패밀리가 추가됩니다. 현재는 HBase에 빈 스키마만 생성됩니다.

아래 코드 발췌 부분은 HTable을 강조 표시합니다.Descript또는 테이블 스키마를 생성하는 addFamily 호출:

Java HTable을 사용하는 코드Descript또는 addFamily를 사용하여 education 및 projects 컬럼 패밀리로 guru99 테이블을 정의할 수 있습니다.

위 스크린샷에서 볼 수 있듯이, 우리는 다음과 같은 기능을 수행하고 있습니다.

  • HTable 사용Descript또는 HBase에 "guru99" 테이블을 생성할 수도 있습니다.
  • addFamily 메서드를 사용하여 "guru99" 테이블에 "education"과 "projects"를 컬럼 패밀리로 추가합니다.

아래 코드는 HBase에 연결하여 두 개의 컬럼 패밀리를 가진 "guru99" 테이블을 생성합니다. 이 코드를 HBaseConnection.java 문서에 추가하세요.

// Place this code inside Hbase connection
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
Import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

다음은 HBaseConnection.java 파일을 실행하기 전에 반드시 추가해야 하는 코드입니다. Java 프로그램)

이 프로그램을 실행하면 HBase와 연결이 설정되고, 그 결과 열 이름이 포함된 테이블이 생성됩니다.

  • 테이블 이름은 “guru99”입니다.
  • 컬럼 패밀리는 "교육"과 "프로젝트"입니다.

4단계) HBase에서 생성된 테이블 확인

HBase 셸 모드에서 "list" 명령어를 사용하면 "guru99" 테이블이 두 개의 컬럼 패밀리로 HBase에 생성되었는지 확인할 수 있습니다. "list" 명령어는 HBase에 생성된 모든 테이블에 대한 정보를 제공합니다.

HBase 셸에서 list 명령을 실행하면 아래와 같이 새 테이블이 생성되었음을 확인할 수 있습니다.

HBase 셸 list 명령 출력 결과에서 guru99 테이블이 생성된 것을 확인할 수 있습니다.

  • Code HBase 셸에서 "list" 명령을 실행하여 확인합니다.
  • "list" 명령어를 실행하면 HBase에 생성된 테이블이 표시됩니다. 이 경우 "guru99" 테이블이 생성된 것을 확인할 수 있습니다.

HBase는 셸을 사용하여 테이블 생성

게다가 Java API를 사용하면 HBase 셸에서 직접 테이블을 생성할 수 있는데, 이는 빠른 테스트를 위해 테이블을 설정하는 가장 빠른 방법입니다. 셸을 사용하여 HBase에 테이블을 생성하는 구문은 다음과 같습니다.

Syntax: create <tablename>, <columnfamilyname>

예:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

위 예시는 각 컬럼 패밀리에 대한 사양에 따라 지정된 이름으로 HBase에 테이블을 생성하는 방법을 설명합니다. 또한, 테이블 범위의 속성도 전달할 수 있습니다.

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

여기서 {NAME=>'Edu', VERSIONS=>…} 블록은 "Edu"라는 이름의 열 패밀리와 해당 열 패밀리가 유지하는 셀 버전 수를 설정합니다. 큰 숫자는 예시일 뿐이며, 실제로는 VERSIONS 값은 3 또는 5와 같은 작은 값입니다.

HBase 테이블의 목록, 설명 및 유효성 검사

HBase에서 테이블을 생성하는 것은 테이블을 다루는 첫 번째 단계일 뿐입니다. "guru99" 테이블이 생성되면 몇 가지 일반 명령어를 사용하여 데이터를 읽거나 쓰거나 수정하기 전에 테이블의 상태를 확인할 수 있습니다. 이러한 명령어는 모두 다음 명령어를 통해 실행할 수 있습니다. HBase 셸.

list 명령은 HBase의 모든 사용자 테이블을 반환합니다.

hbase> list

describe 명령은 테이블의 구조, 컬럼 패밀리 및 현재 활성화 여부를 보여줍니다.

hbase> describe 'guru99'

exists 명령어는 테이블이 존재하는지 확인하고, is_enabled 명령어는 테이블에 쓰기 권한이 있는지 여부를 보고합니다.

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

이러한 읽기 전용 검사는 언제든지 안전하게 실행할 수 있습니다. 테이블이 올바르게 생성되었는지 확인하고 데이터를 로드하기 전에 컬럼 패밀리를 검토하는 가장 빠른 방법입니다.

HBase 테이블 수정하기

HBase 테이블 스키마는 생성 후 고정되지 않습니다. `ALTER` 명령은 테이블을 다시 생성하지 않고 테이블의 컬럼 패밀리와 테이블 범위 속성을 변경합니다. HBase 버전에 따라 테이블을 먼저 비활성화한 다음 `ALTER` 명령을 실행하고 다시 활성화해야 할 수도 있습니다.

“guru99” 테이블에 새 컬럼 패밀리를 추가하려면 다음 단계를 따르세요.

hbase> alter 'guru99', {NAME => 'contact'}

컬럼 패밀리가 유지할 버전 수를 설정하려면 다음 단계를 따르세요.

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

테이블에서 컬럼 패밀리를 삭제하려면 다음 단계를 따르세요.

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

테이블 범위 속성도 변경할 수 있습니다. 예를 들어 테이블을 읽기 전용으로 표시하거나 최대 영역 파일 크기를 128MB로 설정할 수 있습니다.

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

alter 명령은 스키마를 재작성하므로, 프로덕션 테이블에서 변경 사항을 신중하게 계획하고, 나중에 describe 명령으로 결과를 확인하십시오.

HBase 테이블 비활성화, 활성화 및 삭제

HBase에서 테이블을 삭제하거나 특정 변경 사항을 적용하려면 먼저 테이블을 비활성화해야 합니다. 비활성화하면 테이블이 오프라인 상태가 되어 어떤 클라이언트도 읽거나 쓸 수 없게 되므로 구조적 변경을 안전하게 수행할 수 있습니다.

테이블을 비활성화하고 is_disabled 함수를 사용하여 상태를 확인합니다.

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

테이블에서 읽기 및 쓰기 작업을 다시 시작하려면 테이블을 다시 활성화하십시오.

hbase> enable 'guru99'

테이블을 삭제하려면 먼저 비활성화해야 합니다. 삭제ping 이 명령은 테이블과 그 안에 있는 모든 데이터를 영구적으로 삭제하므로 주의해서 사용하십시오.

hbase> disable 'guru99'
hbase> drop 'guru99'

여러 테이블을 한 번에 삭제하려면 `drop_all` 명령어를 사용하면 정규 표현식과 일치하는 이름을 가진 모든 테이블이 삭제됩니다. `create`, `alter`, `disable`, `enable`, `drop` 명령어는 테이블의 전체 수명 주기를 다룹니다. 데이터 처리 HBase 테이블에서.

자주 묻는 질문

최적의 방법은 컬럼 패밀리 수를 1~3개 정도로 유지하는 것입니다. HBase는 한 영역의 모든 패밀리를 함께 플러시하고 압축하므로, 패밀리 수가 많을수록 데이터가 여러 파일에 분산되어 읽기 및 쓰기 속도가 느려집니다. 가능하면 관련 컬럼들을 하나의 패밀리로 그룹화하세요.

아니요. 생성 시에는 컬럼 패밀리만 정의합니다. 컬럼 한정자는 동적이며 데이터를 작성할 때 어떤 행에든 추가할 수 있습니다. 이러한 스키마 유연성 덕분에 테이블을 먼저 변경하지 않고도 각 행에 서로 다른 컬럼을 저장할 수 있습니다.

`truncate 'guru99'` 명령어를 사용하면 테이블이 비활성화되고, 삭제된 후 동일한 컬럼 패밀리로 다시 생성됩니다. 스키마는 그대로 유지되면서 모든 행이 삭제됩니다. 이는 행을 하나씩 삭제하는 것보다 빠르고 깔끔한 방법입니다.

이 예제에서는 HBaseAdmin과 HTable을 사용합니다.Descript또는 둘 다 HBase 1.0 이후로 더 이상 사용되지 않습니다. 최신 코드는 ConnectionFactory를 통해 Connection에서 Admin 객체를 가져와 Table을 사용하여 스키마를 구축합니다.Descript또는 빌더 및 컬럼패밀리DescriptorBuilder. 테이블 생성 로직은 동일하게 유지됩니다.

VERSIONS는 컬럼 패밀리가 각 셀에 대해 타임스탬프가 지정된 버전을 몇 개 유지할지 설정합니다. 기본값은 1입니다. get 또는 scan을 사용하여 이전 버전을 요청하면 유지된 개수를 초과할 때까지 이전 버전이 반환되며, 초과 후에는 압축 과정에서 가장 오래된 셀이 제거됩니다.

HBase는 Hadoop 및 HDFS 기반의 빠른 임의 읽기 및 쓰기가 필요한 매우 크고 희소한 데이터 세트에 적합합니다. 일반적인 사용 사례로는 시계열 데이터, 메시징, 실시간 분석 등이 있으며, 이러한 환경에서는 테이블이 여러 노드에 걸쳐 수십억 개의 행으로 확장될 수 있습니다.

AI 코딩 도우미와 대규모 언어 모델은 일반 언어 프롬프트에서 생성, 수정 및 삭제 명령을 작성하고, 컬럼 패밀리 설계를 설명하며, 삭제와 같은 위험한 작업을 표시합니다.ping 테이블 형식입니다. 머신 러닝은 액세스 패턴을 분석하여 더 나은 행-키 및 패밀리 레이아웃을 추천할 수도 있지만, 엔지니어가 각 제안을 검증해야 합니다.

예. GitHub 부조종사 HBase 셸 명령어를 생성할 수 있습니다. Java 생성, 수정 및 삭제를 위한 클라이언트 코드ping 간단한 설명에서 발췌한 표입니다. Rev실행하기 전에 출력 결과를 확인하여 올바른 테이블 이름, 컬럼 패밀리 및 현재 관리자 API를 확인하십시오.

이 게시물을 요약하면 다음과 같습니다.