예제가 포함된 HBase 셸 명령

⚡ 스마트 요약

HBase 셸 명령어를 사용하면 대화형 프롬프트에서 테이블과 데이터를 직접 관리할 수 있으며, 이러한 명령어는 일반 명령어, 생성 및 삭제와 같은 테이블 관리 명령어, put 및 get과 같은 데이터 조작 명령어, 그리고 클러스터 복제 명령어로 그룹화됩니다.

  • 🖥️ 일반 명령: status, version, table_help 및 whoami 보고서는 클러스터 상태와 사용자 정보를 제공합니다.
  • 🗂️ 테이블 관리: 테이블을 생성, 나열, 설명, 비활성화, 활성화, 삭제 및 수정하고, 구축 및 재구성할 수 있습니다.
  • ✏️ 데이터 조작: put, get, delete, deleteall, truncate, count, scan 등의 함수를 사용하여 셀 값을 읽고 쓸 수 있습니다.
  • 🔁 Cluster 복제: add_peer, remove_peer, start_replication 및 stop_replication은 데이터 복제를 관리합니다.
  • TTL 속성: TTL(Time To Live)은 설정된 시간(초)이 지나면 컬럼 패밀리 행을 자동으로 만료시킵니다.
  • 🤖 AI 지원: AI 어시스턴트는 일반적인 언어로 된 프롬프트에서 HBase 셸 명령어를 생성하고 설명합니다.

HBase 셸 명령어와 테이블, 데이터 및 클러스터 복제 관련 예제

셸 명령어를 사용하여 HBase와 상호 작용하는 방법 Java API

하둡 위에 HBase를 성공적으로 설치하면 다양한 명령을 실행하고 여러 작업을 수행할 수 있는 대화형 셸이 나타납니다. 이러한 명령을 사용하여 데이터 테이블에 대한 다양한 작업을 수행함으로써 데이터 저장 효율성을 높이고 클라이언트에게 유연한 상호 작용 환경을 제공할 수 있습니다.

HBase와 상호 작용하는 방법은 두 가지가 있습니다.

  • HBase 대화형 셸 모드 및
  • 을 통하여 Java API.

HBase에서 대화형 셸 모드는 테이블 작업, 테이블 관리 및 데이터 모델링을 위해 HBase와 상호 작용하는 데 사용됩니다. Java API 모델을 사용하면 HBase의 모든 유형의 테이블 및 데이터 작업을 수행할 수 있습니다. 두 가지 방법 모두를 사용하여 HBase와 상호 작용할 수 있습니다. 두 방법의 유일한 차이점은 다음과 같습니다. Java API 사용 Java HBase에 연결하기 위해 코드를 사용하는 반면, 셸 모드는 셸 명령어를 사용하여 HBase에 연결합니다.

본론으로 들어가기 전에 HBase에 대해 간단히 복습해 보겠습니다.

  • HBase 사용 하둡 HBase는 대용량 데이터를 저장하는 스토리지 시스템으로 파일 기반 방식을 사용합니다. HBase는 마스터 서버와 리전 서버로 구성됩니다.
  • HBase에 저장될 데이터는 리전 형태로 저장됩니다. 또한, 이러한 리전들은 여러 리전 서버에 분산되어 저장됩니다.
  • 이러한 셸 명령어를 사용하면 프로그래머는 완전한 셸 모드 상호 작용을 통해 테이블 ​​스키마와 데이터 작업을 정의할 수 있습니다.
  • 어떤 명령어를 사용하든, 그 내용은 HBase 데이터 모델에 반영될 것입니다.
  • 우리는 Bash 셸과 같은 운영 체제 스크립트 인터프리터에서 HBase 셸 명령어를 사용합니다.
  • Bash 셸은 대부분의 프로그램에서 기본 명령 인터프리터입니다. Linux 그리고 유닉스 운영 체제 배포판.
  • HBase 고급 버전은 테이블에 대해 JRuby 스타일의 객체 지향 참조를 사용하는 셸 명령을 제공합니다.
  • 테이블 참조 변수는 HBase 셸 모드에서 데이터 작업을 수행하는 데 사용할 수 있습니다.

예 :

  • 이 튜토리얼에서는 'education'이라는 테이블 이름을 사용하고 'guru99'라는 열 이름에 해당하는 테이블을 만들었습니다.
  • 일부 명령어에서 "guru99" 자체는 테이블 이름을 나타냅니다.

일반 명령

HBase에서 일반적인 명령어는 다음과 같은 범주로 분류됩니다.

  • Status
  • 버전
  • Table_help(스캔, 삭제, 가져오기, 넣기, 비활성화 등)
  • 우와 미

HBase 셸 명령에 접근하려면 먼저 아래에 언급된 코드를 실행해야 합니다.

hbase Shell

HBase 셸에 접속하면 아래에 언급된 모든 셸 명령어를 실행할 수 있습니다. 이러한 명령어를 사용하면 HBase 셸 모드에서 모든 종류의 테이블 작업을 수행할 수 있습니다. 대화형 셸 프롬프트는 아래와 같이 나타납니다.

hbase shell 명령어를 사용하여 HBase 대화형 셸 프롬프트를 열었습니다.

예제를 통해 이러한 모든 명령과 사용법을 하나씩 살펴보겠습니다.

Status

Syntax:status

이 명령은 클러스터에 있는 서버 수, 활성 서버 수, 평균 부하 값 등 시스템 상태에 대한 자세한 정보를 제공합니다. 시스템 상태에 대한 자세한 정보를 원하는 정도에 따라 특정 매개변수를 전달할 수도 있습니다. 매개변수는 'summary', 'simple', 'detailed' 중 하나이며, 기본값은 'summary'입니다.

아래에서는 status 명령에 다양한 매개변수를 전달하는 방법을 보여줍니다. 아래 스크린샷을 보면 더 잘 이해할 수 있습니다.

hbase(main):001:0>status
hbase(main):002:0>status 'simple'
hbase(main):003:0>status 'summary'
hbase(main):004:0> status 'detailed'

상태 출력은 아래와 같습니다.

HBase 셸 status 명령의 출력 결과로 활성 서버, 비활성 서버 및 평균 부하가 표시됩니다.

이 상태 명령을 실행하면 현재 서버 수, 비활성 서버 수, 서버 평균 부하에 대한 정보가 표시됩니다. 아래 스크린샷은 활성 서버 1개, 비활성 서버 1개, 평균 부하 7.0000과 같은 정보를 보여줍니다.

버전

Syntax: version

버전 출력 결과는 아래와 같습니다.

HBase 셸 버전 명령어를 실행하면 설치된 HBase 버전이 표시됩니다.

  • 이 명령은 명령 모드에서 현재 사용 중인 HBase 버전을 표시합니다.
  • 버전 명령어를 실행하면 위와 같은 출력이 나타납니다.

테이블 도움말

Syntax:table_help

table_help 명령의 출력 결과는 다음과 같습니다.

HBase 셸 table_help 출력 목록 create 및 get_table 명령 사용법

이 명령은 다음을 안내합니다.

  • 테이블 참조 명령이란 무엇이며 어떻게 사용하는가?
  • 이 문서에서는 다양한 HBase 셸 명령어 사용법과 해당 구문을 제공합니다.
  • 위 스크린샷은 "create" 및 "get_table" 명령어의 구문과 사용법을 보여줍니다. HBase에 테이블이 생성되면 이러한 명령어를 통해 테이블을 조작할 수 있습니다.
  • 이 기능은 put, get과 같은 테이블 조작 명령 및 기타 모든 명령 정보를 제공합니다.

WHOAMI

Syntax: Whoami

whoami 명령어의 출력 결과는 아래와 같습니다.

HBase 셸 whoami 명령어가 현재 hduser 및 그룹을 반환합니다.

"whoami" 명령어는 HBase 클러스터에서 현재 HBase 사용자 정보를 반환하는 데 사용됩니다. 다음과 같은 정보가 제공됩니다.

  • HBase에 존재하는 그룹.
  • 사용자 정보입니다. 예를 들어, 이 경우 "hduser"는 스크린샷에 표시된 사용자 이름을 나타냅니다.

TTL(Time To Live) – 속성

HBase에서는 컬럼 패밀리에 TTL(Time To Live) 속성을 사용하여 초 단위의 시간 값을 설정할 수 있습니다. HBase는 설정된 만료 시간이 되면 자동으로 행을 삭제합니다. 이 속성은 현재 버전을 포함하여 모든 버전의 행에 적용됩니다.

HBase에서 행에 대해 인코딩된 TTL 시간은 UTC로 지정됩니다. 이 속성은 테이블 관리 명령과 함께 사용됩니다. TTL 처리 방식과 컬럼 패밀리 TTL의 중요한 차이점은 다음과 같습니다.

  • 셀 TTL은 초가 아닌 밀리초 단위로 표현됩니다.
  • 셀 TTL은 컬럼 패밀리 수준의 TTL 설정보다 셀의 유효 수명을 연장할 수 없습니다.

테이블 관리 명령

이러한 명령어를 사용하면 프로그래머는 행과 열 패밀리를 포함하는 테이블 및 테이블 스키마를 생성할 수 있습니다. 다음은 테이블 관리 명령어입니다.

  • 만들기
  • 명부
  • 설명
  • 사용 안 함
  • 비활성화_모두
  • 사용
  • Enable_all
  • 드롭
  • Drop_all
  • 표시_필터
  • 나이
  • Alter_status

예제를 통해 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 컬럼 패밀리로 education 테이블을 생성합니다.

위 예제는 각 컬럼 패밀리에 대한 사양에 따라 지정된 이름으로 HBase에 테이블을 생성하는 방법을 설명합니다. 또한 테이블 범위 속성을 전달할 수도 있습니다. 'education' 테이블이 생성되었는지 확인하려면 아래의 "list" 명령을 사용합니다. 관련 내용도 참조하세요. HBase 테이블 생성 Java 그리고 껍질.

명부

Syntax:list

목록 출력 결과는 아래와 같습니다.

HBase 셸 list 명령어를 실행하면 HBase에 현재 존재하는 8개의 테이블이 표시됩니다.

  • "list" 명령은 HBase에 존재하거나 생성된 모든 테이블을 표시합니다.
  • 위 스크린샷에 표시된 출력은 현재 HBase에 있는 기존 테이블을 보여줍니다.
  • 이 스크린샷에서 볼 수 있듯이 HBase에는 총 8개의 테이블이 있습니다.
  • 선택적으로 정규 표현식 매개변수를 전달하여 테이블의 출력 값을 필터링할 수 있습니다.

설명

Syntax:describe <table name>
hbase(main):010:0>describe 'education'

describe 명령의 출력 결과는 다음과 같습니다.

HBase 셸의 describe 명령 출력 결과 (education 테이블 컬럼 패밀리 상세 정보)

이 명령은 명명된 테이블을 설명합니다.

  • 이는 해당 테이블에 있는 컬럼 패밀리에 대한 자세한 정보를 제공합니다.
  • 우리 경우에는 "교육"이라는 표에 대한 설명이 나옵니다.
  • 이 정보는 테이블 이름, 컬럼 패밀리, 연결된 필터, 버전 및 기타 세부 정보를 제공합니다.

비활성화

Syntax: disable <tablename>
hbase(main):011:0>disable 'education'

비활성화 시 출력 결과는 아래와 같습니다.

HBase 셸에서 교육 테이블을 오프라인으로 전환하는 비활성화 명령을 실행합니다.

  • 이 명령은 지정된 테이블을 비활성화하는 작업을 시작합니다.
  • 테이블을 삭제하거나 제거해야 하는 경우, 먼저 해당 테이블을 비활성화해야 합니다.

위 스크린샷에서처럼 테이블 교육 기능을 비활성화하고 있습니다.

비활성화_모두

 Syntax: disable_all<"matching regex"
  • 이 명령은 주어진 정규식과 일치하는 모든 테이블을 비활성화합니다.
  • 구현 방식은 drop 명령과 동일합니다(단, 일치시키기 위한 정규 표현식이 추가됩니다).
  • 테이블이 비활성화되면 사용자는 HBase에서 해당 테이블을 삭제할 수 있습니다.
  • 삭제하거나 드롭하기 전에ping 테이블이라면 먼저 비활성화해야 합니다.

사용

Syntax: enable <tablename>
hbase(main):012:0>enable 'education'

활성화 출력은 아래와 같습니다.

HBase 셸 enable 명령어를 사용하여 비활성화된 교육 테이블을 다시 활성화합니다.

  • 이 명령은 지정된 테이블을 활성화하기 시작합니다.
  • 비활성화된 테이블을 이전 상태로 되돌리려면 다음 명령어를 사용합니다.
  • 테이블이 처음에 비활성화되었고 삭제되거나 제거되지 않은 경우, 비활성화된 테이블을 다시 사용하려면 이 명령을 사용하여 테이블을 활성화해야 합니다.
  • 위 스크린샷에서 우리는 "교육" 테이블을 활성화하고 있습니다.

show_filters

Syntax: show_filters

show_filters 명령의 출력 결과는 다음과 같습니다.

HBase 셸 show_filters 출력 목록은 사용 가능한 HBase 필터를 보여줍니다.

이 명령은 ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter 등 HBase에 있는 모든 필터를 표시합니다.

드롭

Syntax:drop <table name>
hbase(main):017:0>drop 'education'

드롭 출력은 아래와 같습니다.

HBase 셸 드롭 명령어를 사용하여 비활성화된 교육 테이블을 삭제합니다.

드롭 명령을 실행할 때 다음 사항들을 준수해야 합니다.

  • HBase에 있는 테이블을 삭제하려면 먼저 해당 테이블을 비활성화해야 합니다.
  • HBase에 있는 테이블을 삭제하려면 먼저 해당 테이블을 비활성화해야 합니다.
  • 따라서 테이블을 삭제하려면 먼저 disable 명령어를 사용하여 테이블을 비활성화해야 합니다.
  • 위 스크린샷에서 보시는 바와 같이, 우리는 드롭하고 있습니다.ping 표 "교육".
  • 이 명령을 실행하기 전에 "교육" 테이블을 비활성화해야 합니다.

drop_all

Syntax: drop_all<"regex">
  • 이 명령은 지정된 정규 표현식과 일치하는 모든 테이블을 삭제합니다.
  • 이 명령을 실행하기 전에 disable_all을 사용하여 테이블을 먼저 비활성화해야 합니다.
  • 정규 표현식과 일치하는 테이블은 HBase에서 삭제될 예정입니다.

사용 가능

Syntax: is_enabled 'education'

이 명령은 지정된 테이블이 활성화되어 있는지 여부를 확인합니다. 일반적으로 "활성화"와 "활성화 여부 확인" 명령의 동작 간에 혼동이 있는데, 여기서 이를 명확히 설명합니다.

  • 테이블이 비활성화된 경우, 해당 테이블을 사용하려면 enable 명령을 사용하여 활성화해야 합니다.
  • is_enabled 명령은 테이블이 활성화되었는지 여부를 확인합니다.

변경

Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5

이 명령은 열 패밀리 스키마를 변경합니다. 정확히 무엇을 하는지 이해하기 위해 여기에 예를 들어 설명했습니다.

예시: 이 예시에서는 테이블과 해당 열에 대해 ALTER 명령 작업을 수행할 것입니다. 다음과 같은 작업을 수행할 것입니다.

  • 단일 및 다중 열 패밀리 이름 변경.
  • 테이블에서 컬럼 패밀리 이름을 삭제합니다.
  • 테이블에서 범위 속성을 사용하는 다른 몇 가지 작업입니다.

'education' 테이블에서 현재 값에서 'guru99_1' 컬럼 패밀리로 변경하거나 추가하여 최대 5개의 셀 버전을 유지하려고 합니다. 여기서 'education'은 이전에 'guru99'라는 컬럼 이름으로 생성된 테이블 이름입니다. 아래와 같이 alter 명령어를 사용하여 컬럼 패밀리 스키마를 guru99에서 guru99_1로 변경하려고 합니다.

HBase 셸에서 alter 명령어를 사용하여 education 테이블의 컬럼 패밀리를 guru99_1로 변경합니다.

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

여러 컬럼 패밀리에 대해 ALTER 명령을 실행할 수도 있습니다. 예를 들어, 아래와 같이 기존 테이블 "education"에 두 개의 새 컬럼을 정의해 보겠습니다.

HBase 셸 변경 명령을 사용하여 guru99_2 및 guru99_3 두 개의 새 컬럼 패밀리를 추가합니다.

 hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
  • 이 명령어를 사용하면 한 번에 여러 열 스키마를 변경할 수 있습니다.
  • 위 스크린샷에 보이는 guru99_2와 guru99_3은 education 테이블에 새로 정의한 두 개의 열 이름입니다.
  • 이 명령어를 사용하는 방법은 이전 스크린샷에서 확인할 수 있습니다.

이 단계에서는 테이블에서 컬럼 패밀리를 삭제하는 방법을 살펴보겠습니다. 'education' 테이블에서 'f1' 컬럼 패밀리를 삭제하려면 아래 명령 중 하나를 사용하십시오. 결과는 다음 스크린샷에 나와 있습니다.

HBase 셸에서 alter 명령어를 사용하여 education 테이블에서 컬럼 패밀리를 삭제하는 방법

hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'

이 명령에서는 첫 번째 단계에서 생성한 guru99_1이라는 이름의 컬럼 스페이스를 삭제하려고 합니다. 아래 스크린샷에서 볼 수 있듯이, 테이블 범위 속성을 변경하는 방법과 테이블 범위 속성을 제거하는 방법, 이렇게 두 단계를 보여줍니다.

HBase 셸 alter 명령어를 사용하여 테이블 범위 속성 MAX_FILESIZE를 설정하는 방법

Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'

1단계) MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH 등과 같은 테이블 범위 속성을 변경할 수 있습니다. 이러한 속성은 명령의 끝에 추가할 수 있습니다. 예를 들어, 영역의 최대 크기를 128MB 또는 다른 메모리 값으로 변경하려면 다음 명령을 사용합니다.

용법:

  • 위에서처럼 MAX_FILESIZE를 테이블을 범위 속성으로 사용하여 사용할 수 있습니다.
  • MAX_FILESIZE에 표시된 숫자는 바이트 단위의 메모리 용량입니다.

참고: MAX_FILESIZE 테이블 범위는 HBase에 있는 일부 속성에 따라 결정됩니다. MAX_FILESIZE 또한 테이블 범위 속성에 포함됩니다.

2단계) table_att_unset 메서드를 사용하여 테이블 범위 속성을 제거할 수도 있습니다. 아래 명령어를 참조하세요.

alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
  • 위 스크린샷은 범위 속성과 함께 변경된 테이블 이름을 보여줍니다.
  • `table_att_unset` 메서드는 테이블에 있는 속성을 제거하는 데 사용됩니다.
  • 두 번째 경우에는 MAX_FILESIZE 속성을 해제합니다.
  • 해당 명령을 실행하면 "education" 테이블에서 MAX_FILESIZE 속성이 단순히 해제됩니다.

alter_status

 Syntax: alter_status 'education'

alter_status 명령의 출력 결과는 다음과 같습니다.

HBase 셸의 alter_status 명령어를 실행했을 때 한 개의 영역이 업데이트된 것을 보여줍니다.

  • 이 명령어를 통해 alter 명령어의 상태를 확인할 수 있습니다.
  • 이는 업데이트된 스키마를 적용받은 테이블의 영역 수를 나타냅니다. 테이블 이름을 전달해야 합니다.
  • 위 스크린샷에서 "1/1 지역 업데이트됨"이라고 표시되어 있습니다. 이는 한 지역의 업데이트가 완료되었음을 의미합니다. 업데이트가 성공적으로 완료되면 "완료"라는 메시지가 표시됩니다.

데이터 조작 명령

이러한 명령어는 테이블에 데이터를 입력하거나, 테이블에서 데이터를 검색하거나, 스키마를 삭제하는 등의 데이터 조작을 위해 테이블에서 작동합니다. 이러한 명령어에는 다음과 같은 것들이 있습니다.

  • 카운트
  • 넣어
  • 돈을 받아가세요
  • .
  • 모두 삭제
  • 자르기
  • 주사

예제를 통해 이러한 명령어 사용법을 살펴보겠습니다. (참고 자료도 참조하세요.) HBase 데이터 읽기 및 쓰기.

카운트

Syntax: count <'tablename'>, CACHE =>1000
  • 이 명령어는 테이블의 행 수를 가져옵니다. 반환되는 값은 행의 총 개수입니다.
  • 현재 개수는 기본적으로 1000행마다 표시됩니다.
  • 카운트 간격은 선택적으로 지정할 수 있습니다.
  • 기본 캐시 크기는 10행입니다.
  • count 명령어는 올바른 캐시로 구성하면 빠르게 작동합니다.

예:

hbase> count 'guru99', CACHE=>1000

카운트 결과는 아래와 같습니다.

HBase 셸의 count 명령어가 guru99 테이블의 행 수를 반환합니다.

이 예시에서는 "guru99" 테이블에서 한 번에 1000개의 행을 가져옵니다. 테이블에 더 많은 행이 있는 경우 캐시 값을 더 낮게 설정할 수 있습니다. 하지만 기본적으로는 한 번에 한 행씩 가져옵니다.

hbase>count 'guru99', INTERVAL => 100000
hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000

테이블 "guru99"에 g와 같은 테이블 참조가 있다고 가정해 보겠습니다. 아래와 같이 테이블 참조에 대해서도 count 명령을 실행할 수 있습니다.

hbase>g.count INTERVAL=>100000
hbase>g.count INTERVAL=>10, CACHE=>1000

넣어

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

이 명령어는 다음과 같은 용도로 사용됩니다.

  • 정의되거나 지정된 테이블이나 행 또는 열에 셀 '값'을 입력합니다.
  • 선택적으로 타임스탬프를 연동할 수 있습니다.

예시: 여기서는 "guru99" 테이블의 r1행 c1열에 값을 입력합니다.

hbase> put 'guru99', 'r1', 'c1', 'value', 10

아래 스크린샷에서 볼 수 있듯이, “guru99” 테이블에 10, 15, 30이라는 세 가지 값을 입력했습니다.

HBase 셸 put 명령어를 사용하여 guru99 테이블에 10, 15, 30 값을 삽입합니다.

테이블 "guru99"에 g와 같은 테이블 참조가 있다고 가정해 보겠습니다. 다음과 같이 테이블 참조에 대해 명령을 실행할 수도 있습니다.

hbase> g.put 'guru99', 'r1', 'c1', 'value', 10

"guru99"에 값을 입력하면 위 스크린샷과 같은 결과가 나타납니다. 입력값이 테이블에 올바르게 삽입되었는지 확인하려면 "scan" 명령어를 사용합니다. 아래 스크린샷에서 값이 올바르게 삽입된 것을 확인할 수 있습니다.

HBase 셸 스캔 출력 결과는 guru99 테이블에 삽입된 값을 확인시켜 줍니다.

Code 발췌: 연습용

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}
put 'guru99', 'r1', 'Edu:c1', 'value', 10
put 'guru99', 'r1', 'Edu:c1', 'value', 15
put 'guru99', 'r1', 'Edu:c1', 'value', 30

위 코드 조각에서 우리는 다음과 같은 작업을 수행합니다.

  • 여기서는 'guru99'라는 이름의 테이블을 만들고, 열 이름은 "Edu"로 지정합니다.
  • "put" 명령어를 사용하면 "guru99" 테이블의 "Edu" 열에 "r1" 행에 값을 넣을 수 있습니다.

돈을 받아가세요

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

여기, TIMERANGE, TIMESTAMP, VERSIONS, FILTERS 등의 매개변수를 포함할 수 있습니다. 이 명령을 사용하면 테이블에서 특정 행 또는 셀의 내용을 가져올 수 있습니다. 또한 TIMESTAMP, TIMERANGE, VERSIONS, FILTERS 등의 추가 매개변수를 사용하여 특정 행 또는 셀의 내용을 가져올 수도 있습니다.

아래의 get output 명령은 r1 행과 c1 열의 값을 반환합니다.

HBase 셸의 get 명령은 guru99 테이블에서 r1 행과 c1 열을 반환합니다.

예:-

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

위 스크린샷에 표시된 것처럼, 이 명령어를 사용하면 "guru99" 테이블의 r1행과 c1열의 값이 표시됩니다.

hbase> get 'guru99', 'r1'

이 명령어를 사용하면 "guru99" 테이블의 r1 행 값이 표시됩니다.

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

이 명령어를 사용하면 "guru99" 테이블의 r1 행 값 중 시간 범위 ts1부터 ts2까지의 값이 표시됩니다.

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

이 명령을 사용하면 "guru99" 테이블의 r1 행과 c1, c2, c3 열 패밀리의 값이 표시됩니다.

.

Syntax:delete <'tablename'>,<'row name'>,<'column name'>
  • 이 명령은 지정된 테이블의 행 또는 열에 있는 셀 값을 삭제합니다.
  • 삭제는 삭제된 셀의 좌표와 정확히 일치해야 합니다.
  • 스캔 시 셀을 삭제하면 이전 버전의 값이 숨겨집니다.

예시: 아래의 삭제 명령은 guru99 테이블에서 셀 r1과 c1을 제거합니다.

HBase 셸 삭제 명령을 사용하여 guru99 테이블에서 셀 r1 c1을 제거합니다.

hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
  • 위 실행 명령은 "guru99" 테이블의 c1 컬럼 패밀리에서 r1 행을 삭제합니다.
  • 테이블 "guru99"에 g와 같은 테이블 참조가 있다고 가정해 보겠습니다.
  • 테이블 참조에 대해서도 다음과 같이 명령을 실행할 수 있습니다. hbase> g.delete 'guru99', 'r1', 'c1'”.

모두 삭제

Syntax: deleteall <'tablename'>, <'rowname'>
  • 이 명령은 지정된 행의 모든 ​​셀을 삭제합니다.
  • 구문에서 선택적으로 열 이름과 타임스탬프를 정의할 수 있습니다.

예시: 아래의 deleteall 명령은 r1행의 모든 ​​셀을 삭제합니다.

HBase 셸의 deleteall 명령으로 guru99 테이블의 r1행에 있는 모든 셀을 제거합니다.

hbase>deleteall 'guru99', 'r1', 'c1'

이렇게 하면 테이블에 있는 모든 행과 열이 삭제됩니다. 필요에 따라 열 이름을 지정할 수도 있습니다.

자르기

Syntax:  truncate <tablename>

아래의 truncate 명령은 테이블을 비우면서 유지합니다.ping 그 스키마는 다음과 같습니다:

HBase 셸 truncate 명령 비활성화, 삭제ping그리고 guru99 테이블을 다시 생성합니다.

HBase 테이블을 잘라내면 스키마는 남지만 레코드는 사라집니다. 이 명령은 아래에 나열된 세 가지 기능을 수행합니다.

  • 테이블이 이미 존재하는 경우 해당 테이블을 비활성화합니다.
  • 테이블이 이미 존재하는 경우 삭제합니다.
  • 앞서 언급한 테이블을 다시 생성합니다.

주사

Syntax: scan <'tablename'>, {Optional parameters}

이 명령은 테이블 전체를 스캔하여 테이블 내용을 표시합니다.

  • 이 스캔 명령에 몇 가지 선택적 사양을 전달하여 시스템에 있는 테이블에 대한 자세한 정보를 얻을 수 있습니다.
  • 스캐너 사양에는 다음 속성 중 하나 이상이 포함될 수 있습니다.
  • 이것들은 TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW 및 STOPROW입니다.
scan 'guru99'

스캔 결과는 아래와 같습니다.

HBase 셸 스캔 명령어를 사용하여 guru99 테이블의 r1, r2, r3 행을 표시합니다.

위 스크린샷에서:

  • 이 화면에는 "guru99" 테이블의 열 이름과 값이 표시됩니다.
  • 이는 단일 열 값 c1에 대해 r1, r2, r3의 세 행 값으로 구성됩니다.
  • 행과 관련된 값을 표시합니다.

예시: 스캔 명령어의 다양한 사용법:

Command 용법
'.META.', {COLUMNS => 'info:regioninfo'} 스캔 이 기능은 HBase 테이블에 있는 열과 관련된 모든 메타데이터 정보를 표시합니다.
스캔 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} 이 기능은 guru99 테이블의 내용과 해당 열 패밀리인 c1 및 c2를 표시하며, 값은 10으로 제한됩니다.
스캔 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} 이 코드는 guru99의 내용을 c1이라는 열 이름과 함께 표시하며, 언급된 시간 범위 속성 값 사이에 있는 값들을 보여줍니다.
스캔 'guru99', {RAW => true, VERSIONS =>10} 이 명령에서 RAW=> true는 guru99 테이블에 있는 모든 셀 값을 표시하는 것과 같은 고급 기능을 제공합니다.

Code 예시: 먼저 표를 만들고 표에 값을 입력합니다. 입력 화면은 아래 스크린샷을 참조하세요.

HBase 셸 입력에서 guru99 테이블을 생성하고 원시 스캔 전에 버전이 지정된 값을 삽입하는 방법을 보여줍니다.

create 'guru99', {NAME=>'e', VERSIONS=>2147483647}
put 'guru99', 'r1', 'e:c1', 'value', 10
put 'guru99', 'r1', 'e:c1', 'value', 12
put 'guru99', 'r1', 'e:c1', 'value', 14
delete 'guru99', 'r1', 'e:c1', 11

스캔 명령을 실행하면 다음과 같습니다.

Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}

아래와 같은 출력이 표시됩니다.

HBase 셸 원시 스캔 출력에는 삭제된 값을 포함한 여러 셀 버전이 표시됩니다.

위 스크린샷에 표시된 출력 결과는 다음과 같은 정보를 제공합니다.

  • RAW=>true, VERSIONS=>1000 속성을 사용하여 guru99 테이블을 스캔합니다.
  • 컬럼 패밀리와 값을 포함하는 행을 표시합니다.
  • 세 번째 행에는 해당 열에 있던 삭제된 값이 표시됩니다.
  • 해당 프로그램이 표시하는 결과는 무작위이며, 우리가 표에 입력한 값의 순서와 동일할 수 없습니다.

Cluster 복제 명령

  • 이 명령어들은 HBase의 클러스터 설정 모드에서 작동합니다.
  • 클러스터에 피어를 추가 및 제거하고 복제를 시작 및 중지하려면 일반적으로 다음 명령이 사용됩니다.
Command 기능
add_peer 클러스터에 피어를 추가하여 복제합니다.
hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod
제거_피어 정의된 복제 스트림을 중지하고 피어에 대한 모든 메타데이터 정보를 삭제합니다.
hbase> 제거_피어 '1'
시작_복제 모든 복제 기능을 다시 시작합니다.
hbase> start_replication
stop_replication 모든 복제 기능을 중지합니다.
hbase>stop_replication

자주 묻는 질문

HBase 대화형 셸을 종료하고 운영 체제 프롬프트로 돌아가려면 `exit` 또는 `quit`를 입력하고 Enter 키를 누르십시오. 셸은 `hbase shell` 명령으로 엽니다. `exit` 또는 `quit` 명령은 HBase 서비스를 중지하지 않고 셸 세션만 종료합니다.

네. 예를 들어 `echo “list” | hbase shell`처럼 명령어를 파이프(|)를 이용해 비대화형으로 입력하거나, `hbase shell script.txt`처럼 저장된 파일을 실행할 수 있습니다. 셸이 JRuby 기반이기 때문에 `.rb` 스크립트 파일 안에 Ruby 로직과 반복문을 포함시킬 수도 있습니다.

이 셸은 빠른 수동 명령 및 관리를 위한 대화형 JRuby 프롬프트입니다. Java API는 Connection, Admin, Table 인터페이스를 사용하여 테이블을 생성하고 데이터를 프로그래밍 방식으로 읽거나 쓰는 애플리케이션에 사용됩니다. 두 방식 모두 동일한 HBase 클러스터와 데이터에 접근할 수 있습니다.

"테이블이 이미 존재합니다" 오류는 테이블을 생성할 때 기존 테이블 이름과 중복되는 경우 발생하며, "테이블이 비활성화되지 않았습니다" 오류는 테이블을 삭제하거나 변경할 때 먼저 비활성화하지 않으면 발생합니다. 테이블을 삭제하거나 변경하기 전에 `disable 'table'` 명령을 실행하고, 테이블을 생성하기 전에 `exists 'table'` 명령을 사용하여 테이블 이름이 이미 존재하는지 확인하십시오.

HBase 컬럼 패밀리는 셀당 제한된 수의 타임스탬프가 지정된 버전을 유지합니다. 과거에는 3개였지만 최근 릴리스에서는 1개입니다. 생성 또는 수정 시 VERSIONS를 사용하여 버전 수를 설정하고, get 또는 scan 명령에서 {VERSIONS => n}을 사용하여 이전 버전을 요청할 수 있습니다.

테이블 참조 변수는 `g = get_table 'guru99'`와 같은 셸 객체입니다. 이 객체를 사용하여 테이블 이름을 반복해서 입력하는 대신 `g.put`, `g.get`, `g.count`와 같은 메서드를 호출할 수 있습니다. 이는 HBase 셸에서 JRuby 스타일의 편리한 단축 표현입니다.

AI 코딩 도우미와 대규모 언어 모델은 일반 언어 요청으로부터 HBase 셸 명령어를 생성하고, 스캔 필터나 TTL과 같은 생소한 옵션을 설명하며, 오류 디버깅을 지원합니다. 또한 머신 러닝은 클러스터 메트릭을 분석하여 복제 및 리전 튜닝을 안내하지만, 각 명령어는 엔지니어가 검증해야 합니다.

예. GitHub 부조종사 간단한 설명에서 HBase 셸 명령과 JRuby 스크립트를 제안하며, 생성, 저장, 스캔 및 변경 예제를 포함합니다. Rev실제 클러스터에서 실행하기 전에 출력 결과를 검토하여 테이블 이름, 컬럼 패밀리, VERSIONS와 같은 구문이 올바른지 확인하십시오.

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